A multiplayer dominoes game, from the rules engine to the app, the server and the website.A multiplayer dominoes game, from the rules engine to the app, the server and the website.
Co-owner and sole developer · 2026, in development
DominoRoyale is an Egyptian-café style dominoes game for iOS and Android, in English and Arabic. I co-own it with my partner, Adham Ali, and I write all of its code: the rules, the app, the server and the website. You can play bots offline, play friends online at private tables, or join on the same Wi-Fi.
The problem
The rules of the game were still changing while we built it, and the same game has to run offline against bots, online with friends, and over local Wi-Fi. If the rules lived inside the app or the server, every rule change would mean touching all of them.
The decisions
01
Write the rules as a pure engine
Each rule is a setting in one deterministic engine. When my partner changed how American mode scores, the app and the server didn't need to know.
The cost: It takes more design up front than writing the rules straight into the screens.
02
Keep the table free of any transport
The same table logic runs on the phone, over WebSockets and on the same Wi-Fi.
The cost: Everything has to go through one clean interface, even when a shortcut would be quicker.
03
Check screen fit with tests
The game is landscape only on every device, and I don't own a tablet. A test confirms that fixed screens fit without scrolling.
The cost: A test can't tell me if a screen feels good, so I still check on real phones.
Where it landed
More than 1,200 automated tests across the game, the API and the website. It is still in development and not on the stores yet.
What I did
Co-own the game with my partner, Adham Ali, and write all of its code.
Built a landscape-only iOS and Android app with Expo, in English and Arabic.
Wrote the game rules as a pure, deterministic engine with bots, separate from the app and the server.
Built the Fastify API, the WebSocket connection to tables, and a PostgreSQL database with Prisma.
Set the project up as a typed monorepo, with Zod schemas shared between the app and the server.
Built the game's bilingual website, and more than 1,200 automated tests across the project.