All work

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.JsReactTypeScriptSocket.ioNode.JsExpress.JsMongoDB
pairs.olatoyan.com
Pairs screenshot

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.

  1. 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.

  2. 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.

  3. 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.

Got something to build?

Let's build it

Let's build
something.

© 2026 Olatoyan GeorgeResumeWhatsAppLinkedInGitHubX