Lumo — One calm puzzle a day
A daily numberlink puzzle — connect matching dots, fill the grid, keep your streak. Offline, no account, no pressure.
The Challenge
Mobile puzzle games split into two camps.
On one side: Flow Free and Numberlink-style apps — thousands of levels, infinite content, but they collapse into grind and lose the daily habit hook. On the other: Wordle and NYT Connections — one puzzle a day, clear ritual, easy share — but they are word-based, with no spatial logic.
Lumo fills the gap between them: one numberlink puzzle a day, no words, no network, no account, no pressure.
Design Approach
Three principles locked from day one:
- Whisper, not scream. No screen shake, no white flash, no chromatic aberration. Every feedback animation caps at 400ms (board clear is the one exception — 800–1200ms). Haptic only on success — failure is a soft red tint, nothing more.
- Offline-first, no account. No backend. No Firebase. No analytics SDK. All progress, streaks, and run history live on the device via Hive. Works on a plane.
- Cross-platform daily seed. Every player on Earth gets the same Daily Seed each day. Built on a hand-rolled xorshift32 + FNV-1a (not
dart:math.Random) to stay deterministic across Dart versions.
How to Play
- Draw a path — tap and drag from one dot to its matching pair, through empty cells.
- Fill every cell — no cell may be left blank.
- No crossings — paths of different colors cannot cross.
- Clear the board — when every pair is connected and the grid is full, you win.
- Keep the streak — solve the Daily Seed before midnight (your local time) to extend your streak.
Two Modes
Daily Seed Challenge
One puzzle per day, same seed for every player worldwide. Solve before midnight your time to keep your streak. Share your result as an image via the system share sheet — no leaderboards, no pressure.
Endless Run
After every cleared board, a new one loads instantly. A combo multiplier (×1 → ×8) rewards focused, error-free solving. The run summary shows your best combo and total boards cleared.
How It Compares
| Criterion | Lumo | Flow Free | Wordle | NYT Connections |
|---|---|---|---|---|
| Mechanic | Numberlink | Numberlink | Word guess | Word grouping |
| Daily ritual | Yes | No | Yes | Yes |
| Endless mode | Yes | Yes | No | No |
| Offline-first | Yes | Partial | No | No |
| No account | Yes | Yes | No | No |
| Streak | Yes | No | Yes | Yes |
| Share image | Yes | No | Yes | Yes |
Tech Highlights
- Engine — Flutter + raw
CustomPainter(no Flame). - State —
ValueNotifier+setState, no Riverpod / BLoC. - Persistence — Hive, single persistence branch.
- Audio —
flutter_soloud(low-latency, avoids the 80–150ms hit fromaudioplayers). - Puzzle pipeline — Python + Z3 solver. Packs are generated and verified offline before shipping.
- Accessibility — Okabe-Ito color-blind-safe palette + optional symbols, reduced motion, haptic toggle.
Project Details
| Item | Value |
|---|---|
| Role | Solo dev — design, code, audio, content, marketing |
| Timeline | 5–6 weeks full-time to TestFlight |
| Stack | Flutter, Dart, Python (puzzle gen), Z3 solver |
| Monetization | Free with interstitial/rewarded ads · one-time $3.99 Remove Ads IAP |
| Status | v1.0.0 — TestFlight 2026-Q2 |
Get the App
Experience native performance.
