Back to all projects

FocusReef

A productivity app where 25-minute focus blocks become tokens, and tokens buy fish for an aquarium that only grows if you actually work.

Role
Personal project · Android app
Year
2026
Stack
Kotlin, Android, NAS-hosted database, Time-series data
Status
Shipped App complete; running on sample data for now

Problem

Gamified focus apps usually keep everything on the phone: the timer, the record of what you did and the reward for it. The game and the evidence live in the same place, so the score only means whatever the app was told.

I wanted the record kept outside the game. FocusReef reads focus blocks that are already stored somewhere else and only decides what they are worth.

Solution

An Android app in the Forest lineage, built on a read-only record:

  • A completed focus block is worth a number of tokens, and tokens buy fish and aquariums. The aquarium ends up being a picture of how much work has accumulated.
  • The blocks are read from a time-series database hosted on my NAS. The app only reads it, so it can’t inflate its own score.
  • The split is deliberate: the database owns what happened and the app owns what it’s worth, so whatever records the blocks can change without touching the game.

Where it stands

The app is finished: the token economy, the shop and the aquarium all work. What it doesn’t have yet is real input, so for now it runs against sample data.

The art is not final either. Every fish, background and icon in the screenshots above is a placeholder, enough to get the mechanics working and nothing more. The visual design is the last thing I plan to settle.

What’s next

A standalone mode with a built-in timer, for anyone with nothing else recording their blocks. The app counts the block itself and feeds the same token economy, which gives FocusReef real input of its own. It also improves the design, because it forces the block source to be an interface rather than an assumption.