Flutter, tuned per platform
A single Dart codebase with platform-aware navigation, haptics and typography, so neither store's users feel like they got the port.
A word a day, and the story it came from. We built our own reading app end to end — product, design system, Flutter codebase, and both store releases — and it is now the reference build we show every client.
The brief
Flashcard apps are relentless and forgettable. We wanted a daily habit that felt like reading rather than revising: one short narrated story, the words earned inside it, and a streak worth protecting.
What we built
Lime for the moments that should feel like a reward. Teal for reading. Everything else gets out of the way.
A word a day, and the story it came from.
WEDNESDAY, 3RD DEC
Good to see you, Alex.
TODAY'S STORY · 4 MIN
The Oubliette in the Garden
Read & listenFLASHCARD 2 OF 3
oubliette
/ˌuːblɪˈɛt/ · noun
A hidden dungeon reached only through a trapdoor — or any place a thing is left to be forgotten.
Under the hood
A single Dart codebase with platform-aware navigation, haptics and typography, so neither store's users feel like they got the port.
A teal-anchored M3 scheme with one loud accent, defined once as tokens and reused by every screen, sheet and chip.
Stories and audio cached for the commute, with follow-along highlighting kept in step with playback.
Local notifications, streak state and a daily task list built to survive time zones, missed days and reinstalls.
Building our own product means every client project starts from a real, released codebase and a design system that has already survived app review.
Tell us what you're building. We'll tell you what it takes.