All work

Chmeta

  • Android app
  • On Google Play
Role
Creator
Stack
React Native, Expo, TypeScript, Supabase
Year
2026
Reach
281 tests in the repo

A rotating judge flips a meme card, the other players slap down their funniest situation card face-down, and the judge picks the winner, who takes the meme as a trophy. It's in Tunisian derja, for 3 to 6 players.

Chmeta gameplay: a meme card above a hand of situation cards to playChmeta judging: the judge sees the meme card and the situation cards the other players playedChmeta round result: the winning situation card shown with the meme card it wonChmeta game over: the winner announced over confetti, next to the mascotChmeta online room: the room code and the players who joined, with a button to deal the cardsChmeta title screen with buttons to play on one phone or online

What I built

  • The game engine is a pure state machine with no React or React Native imports, and with a seeded RNG the same seed and actions replay the same game.
  • Pass-and-play on one phone, fully offline, or online rooms that players join with a four-letter code over Supabase Realtime, with the host in charge.
  • A redaction step keeps hands, deck contents and the RNG seed out of broadcast snapshots, and tests check for leaks.
  • Every message is validated with zod when it arrives, and the host checks each guest request again for identity, phase and ownership.
  • If the host drops, the oldest seated guest takes over and rebuilds the game from public state and private resync reports.
  • A headless simulator runs a host and three guests over an in-memory hub, audits every broadcast, then runs a disconnect matrix.
Next project Encore

Work or PFE?Let's talk.

rayensbai2@gmail.com

The short version

01

What are you looking for?

A job or a final-year internship (PFE) in mobile development.

02

When can you start?

A PFE can start in January 2027. For a job, let's talk.

03

Where?

On site in Sousse or Nabeul, or remote.

04

Which languages do you speak?

Arabic (native), English (professional) and French (basic).