Maybe Shikaku
React Native puzzle game, live on Google Play
- Role
- Built end to end: app, backend and release
- Stack
- React Native, Reanimated, Gesture Handler, Node.js, Express, Prisma, Render, FCM, Notifee
- Links
- Google Play

Context
Maybe Shikaku is my own puzzle game, published on Google Play as Gold Parrot. Shikaku is easy to state: divide the whole grid into rectangles so that each one contains exactly one number, and that number equals its area. I built it AI-assisted: Claude for architecture decisions and debugging, GitHub Copilot for mechanical refactoring. The product decisions, UI fidelity checks and performance profiling were mine.
Problem
A puzzle that is quick to learn has to stay calm to play: drawing a rectangle has to feel immediate, every level has to work without a connection, and progress has to survive closing the app.
What I built
- Drag-to-draw gameplay: you drag across the grid to draw each rectangle, built with Reanimated and Gesture Handler.
- 600 pre-generated puzzles across Easy, Medium and Hard, shipped as offline puzzle packs.
- A Node.js, Express and Prisma backend, hosted on Render.
- Push notifications through Firebase Cloud Messaging and Notifee.
- A puzzle screen with a timer, undo, hints, reset and level navigation, with progress and best times saved per level.
Engineering highlights
Offline-first puzzle packs
All 600 puzzles are generated ahead of time and shipped as packs, so every level plays without a connection.
A grid that stays smooth under your finger
The grid is split into memoized subcomponents with stable useCallback handlers, so a drag only re-renders what it touches. I profiled it with the React Native Perf Monitor.
A menu made of the puzzle
The Patches home screen lays out Play, Levels, Categories and Exit as rectangles on a grid, so the first screen already teaches the shape of the game.
Outcome
- Live on Google Play, with 5+ downloads so far.
- Known limits I would fix next: it is Android-only, and the generator does not yet guarantee each puzzle has a unique solution.