Short games for couples, on one phone, with no sign-up.
Role
Solo: product, content and engineering
Year
2026
Status
Live
Category
Web
An Arabic, mobile-first site with 39 short games and activities for spouses: conversation cards, guessing games, timed challenges, and a few canvas games played on the same screen. Pick a mood and how many minutes you have, and start in under a minute.
Overview
Looking for something to do together often takes longer than the activity itself, and most couple apps start with a sign-up form. Wens starts with two questions: what mood are you in, and how many minutes do you have.
Every game runs on one shared phone. Turns are passed by hand, and when one partner answers in secret the screen hides it before handing over. Answers stay in page memory; the browser keeps only settings, favourites and which cards you have already seen.
It began as a PRD with six games and grew to 39, each with its own rules engine and tests, over a bank of more than 1,500 hand-written Arabic cards.
Turn order, scoring and when an answer may be revealed are where these games break. Writing that logic inside React components would mean testing it by tapping through every game on a phone.
Solution
Each game is a pure, DOM-free reducer behind one contract: build the deck, start, reduce an event, derive the result. Invalid events return the same state untouched, and results are recomputed from completed rounds, never from counters. Node runs the tests directly with no test runner installed.
A secret on a shared screen
Problem
In a guessing game one partner answers and the other predicts, on the same phone. If the answer is still on screen when the phone changes hands, the round is over before it starts.
Solution
The engines model a handoff phase between the two inputs. Nothing typed so far is rendered during it, and the engine accepts input only from the player whose turn it is. The UI cannot leak what the state never exposes in that phase.
Editing content without breaking favourites
Problem
Cards get rewritten and retired. A favourite saved last month that points at a deleted card would crash the page or quietly show the wrong one.
Solution
Cards are JSON with stable ids and a draft → review → published → archived status, validated against a schema before every build. Archived cards stay in the file, so an old favourite shows a polite "no longer available" note.
Results
39 games and activities, from conversation cards to three canvas games.
More than 1,500 Arabic cards, schema-checked on every build.
No accounts and no analytics; answers never leave the phone.