04 · Full-stack developer
Pairs
A card-matching game. Flip two cards at a time to find the pairs. Beat your best time solo, or play up to three friends online, with leaderboards for both.
- Role
- Full-stack developer
- Built with
Next.Js
React
TypeScript
Socket.io
Node.Js
Express.Js
MongoDB

01The problem
It started as a Frontend Mentor challenge: a memory game for one to four players on one screen. Passing a laptop around isn't how anyone plays with friends any more, so I wanted the same game, but everyone on their own phone.
02How it works
You make an account and pick a theme (numbers or icons), a grid (4×4 or 6×6), and how many people are playing. Solo, you race the clock. With friends, you get a short room code to send, and everyone sees the same cards flip at the same moment.
The server runs every game, not the players' browsers. It knows where the pairs are, whose turn it is and how long they have left, so nobody can peek at the board or play out of turn.
03Decisions
The calls that shaped how it works, and why I made them.
- 01
A dropped connection pauses everyone
If someone's connection drops, the game stops for the whole room. They get thirty seconds to come back to the same board, same turn. If they don't, they forfeit and the rest keep playing. If only one player is left, they win.
- 02
Turns have a clock
Each turn has thirty seconds, fifteen on hard. Find a pair and you go again. Without the clock, one person thinking forever holds up three others.
- 03
Two kinds of leaderboard
Solo is ranked by time, then moves, separately for each grid and theme, since a 6×6 isn't a fair fight against a 4×4. Multiplayer is ranked by points: three for first, two for second, one for third. A forfeit scores nothing.
04Where it landed
People I've never met are on both leaderboards. You can play solo, start a room with friends, or watch someone else's game.
Next project
Logicore
A daily math puzzle. Guess the hidden equation, keep a streak, and play friends without spoiling today's answer.
