Quarters app icon

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.