Primico developer docs
A local-first todo app for Android and the desktop, in Kotlin and Compose Multiplatform. This is how it works inside, and how to change it.
Pick your path
Section titled “Pick your path”| If you want to… | Start with |
|---|---|
| get it running and see where things live | Quickstart → A tour of the code |
| make your first change with a test and a pull request | Your first contribution |
| get one job done — a schema change, a new string, a release | the how-to guides |
| understand why it is local-first, how sync merges, why recurrence is a chain of rows | Concepts |
| look something up — a table’s columns, the backup format, a keyboard shortcut | Reference |
| know what was decided and what it cost | Decisions (ADRs) |
Primico in four rules
Section titled “Primico in four rules”Everything else in these pages follows from four decisions. Each one links to the page that explains it.
- The SQLite database on the device is the truth. The app is complete signed out and offline; an account only lets your own devices merge. → Local-first
- Nothing is deleted, only tombstoned; the newest write wins. That is the whole sync
protocol, and it is why every row carries
updatedAtanddeletedAt. → How sync works - Importance first, the due date breaks ties. The one product rule every list is sorted by. → Tasks, projects and tags
- One codebase, two shells. The domain and every screen are shared; Android and the desktop differ only in thin shells and a handful of ports. → Architecture at a glance
flowchart LR
subgraph shared["Shared by every platform"]
core[":core<br/>domain · storage · sync"]
ui[":ui<br/>screens · ViewModel · strings"]
end
android[":app-android<br/>Android shell"]
desktop[":app-desktop<br/>Ubuntu · macOS · Windows"]
neon[("Neon Postgres<br/>optional")]
ui --> core
android --> ui
desktop --> ui
core <-. "sync, when signed in" .-> neon
What is where
Section titled “What is where”- Tutorials — learn by doing, one path that always works.
- How-to guides — recipes for a job you already understand.
- Concepts — the reasoning, the trade-offs, the diagrams.
- Reference — schema, formats, grammar, shortcuts, configuration.
- Decisions — the architecture decision records, oldest first.
- Plans — what comes next and why in that order; the live list is the
issue tracker,
sorted by
priority:P0–P3.
These pages are Markdown in docs/,
built into this site by docs-site/.
To fix or add one, see Write and preview the docs.