Skip to content
← All work
GamesIn developmentiOS / Android

Gridlock Pop

Drop blocks, clear lines, chase the combo. No timer, no lives.

A block puzzle on an 8×8 grid: three pieces at a time, fill a row or column and it clears, and the run ends when nothing fits. The rules are pure functions with no React anywhere in them, which is what makes a game this small worth testing properly.

Drop a piece, watch a line vanish, line up the next one. There is no timer, no lives and nothing asking you to come back tomorrow — the run simply ends when none of your three pieces fit anywhere.

The rules are not in the components

Grid, scoring, piece bag, placement legality and game-over detection are pure functions that import nothing from React. That separation is what lets 207 tests cover the interesting cases — the combo multiplier, a board that is full but not finished, the exact move where nothing fits — without rendering anything or simulating a touch.

What the tests could not catch

All 207 passed while the first drag on a real device crashed. The animated style was calling an ordinary JavaScript helper from a worklet, which Jest cannot see and a phone refuses to do. A second defect had the same shape: the board's position was read once on layout, so moving the window left every drop landing a cell out. Both needed a device, not a test run — which is the argument for the rest of the suite, not against it.

Capabilities

A pure rules engine

Placement, line clearing, scoring and game-over are functions over plain data, tested without a renderer.

Combo scoring

Clearing on consecutive moves builds a multiplier, so the reward is for setting up rather than for luck.

Offline and accountless

No sign-in, no network in the play path, and nothing that expires while you are not looking.

Lifetime unlock

A single non-consumable purchase removes every ad, permanently.

Screens

What it looks like in use.

Select any screen to view it full size. Use the arrow keys to move between screens and Escape to close.

  • Three pieces, one board, and a preview of where the drag will land.
  • A full row or column clears; consecutive clears build the combo.
  • The run ends when none of the three pieces fit anywhere.

Next step

Tell us what is broken or what should exist.

Send the shape of the problem and any constraints you already know — budget, deadline, the stack you are stuck with. You will get a written reply from the engineer who would do the work, not a sales sequence.