Quarters Rebuild in progress · 5 platforms
Your life, in boxes you can count.
Give it a birthdate and how long you expect to live. It shows what you have spent and what is left — as a number and as a grid where every box is one quarter of a year. Filled is lived. Empty is what remains.
A life is about three hundred and sixty quarters. Written as a number it means nothing; drawn as a grid you can take in at a glance, it is hard to unsee. Quarters is a memento mori you can hold — the original shipped as a native iOS app, and this is the rebuild: one shared Kotlin core doing the arithmetic, with a native face on every platform I actually use.
- Pick your unit
- Years
- One box per quarter
- Weeks
- Lived and left
- Months
- A grid you cannot unsee
- Set your expected lifespan
- Native SwiftUI on iOS
- Compose everywhere else
- iOS · Android · Web · Desktop
- Birthdate is the only input
- Deterministic date maths
- One shared Kotlin core
- Every calculator unit-tested
- No account, no sync, no server
- Nothing to configure
- Ported from the original iOS app
- Written failing-test-first
- Memento mori
How it’s built
Kotlin Multiplatform with a deliberate sharing boundary: the calculators and state live once in a platform-free core, and each platform draws its own face — native SwiftUI on iOS, Compose Multiplatform on Android, Desktop and Web. Every calculator ships with tests written failing-first, and a spec ported from the original app’s BDD narratives is the front of the loop rather than documentation at the back.
- iOS · Android · Web · Desktop
- Kotlin Multiplatform
- Compose Multiplatform
- SwiftUI
- Spec-driven
- Agentic engineering
Three hundred and sixty boxes, give or take.
Quarters is a rebuild in progress, and it is not in any store. If memento mori as a piece of software interests you, say hello.