Lamma (لمّة)
- React
- TypeScript
- Colyseus
- Node.js
- Three.js
- SQLite
- Capacitor
Real-time party games for 2–10 players: one 4-letter code, link or QR puts everyone's phones and laptops in the same game. 18 room games plus solo modes, levels, ranks, voice chat and four languages.
- Mission
- Make the café-table game night work on any phone: no install, no account needed, everyone in with one code.
- Built with
- React, TypeScript, Colyseus, Node.js, Three.js, SQLite, Capacitor
- My role
- Everything: product, design, front end, game server, 3D, DevOps · 2026
The problem
Friends at a café table want to play together, but most party games need everyone to install the same app, make accounts, or share one screen.
What I built
Lamma is a set of real-time party games for 2 to 10 players. Everyone joins from their own phone or laptop with one 4-letter code, a link or a QR code.
- Rooms by 4-letter code, link or QR
- 18 multiplayer games: a 3D card table, Ludo, a 3D globe, a tank arena, co-op platformers and more
- Bots with three skill levels
- Solo modes with record boards
- Accounts, levels, badges, leaderboards and a "Dynamic Duo"
- Voice and text chat
- Tunisian, Standard Arabic (right to left), French and English
- A web app that installs as a PWA, and an Android app that updates itself
- An admin panel with live stats
On every screen
Engineering notes
Every rule and every secret lives on the server. Real-time games are checked by replaying each player's inputs on the server, so scores can't be faked. It runs smoothly on a low-end Android phone.
The stack
React, Vite and TypeScript on the front end. Node.js with Colyseus for server-authoritative rooms, Three.js for the 3D tables, SQLite for data and WebRTC for voice. The Android app uses Capacitor, with over-the-air updates. It runs on my own VPS (Docker and nginx) and on Firebase Hosting.