Inspiration
I’m a volunteer firefighter. At my station, every incident starts with a sheet of paper - the Einsatztagebuch, the operations logbook. It is a legal document. The radio operator writes down every message: who called, who answered, what was said, and exactly when. Months later, that record answers hard questions.
It is written by hand, at night, in a command vehicle, while the next call is already coming in. There are roughly a million volunteer firefighters in Germany.
Over a year ago, I sketched a better version on three paper napkins after a shift. Those napkins, photographed exactly as drawn, are the origin of every screen. Then they sat. What I was missing wasn’t an idea, it was a deadline that didn’t care about my excuses.
Shipaton’s rule is simple and brutal: publicly released between 1 August and 30 September, or the project doesn’t qualify. That turned the napkins into an app.
What it does
Einsatzlog digitizes the operations logbook without losing the one thing that makes paper trustworthy: the record is what it is, and nobody quietly edits it afterwards.
An entry takes under ten seconds. The timestamp is captured the instant the form opens - not when you finish typing. It cannot be edited. One tap selects the colour-coded message type. One tap each fills the sender and receiver, ranked by recency and frequency. Then the message text. Submit.
Close an incident and the whole log becomes read-only. Reopen it, and the reopening itself is written into the log. Deleting anything gives you a ten-second undo instead of a confirmation dialog.
One tap produces a print-ready PDF report at any time, including mid-incident.
Nothing leaves the device. No account, no server, no tracking, no ads. It works in airplane mode. Dark theme for night operations, German and English.
And it is free. The in-app purchases, powered by RevenueCat, are pure donations, a small supporter tip. It buys a gold badge and my gratitude. Nothing else.
How we built it
Kotlin Multiplatform + Compose Multiplatform - one codebase for Android and iOS. Persistence, purchases, PDF model, suggestion ranking, and view models live in commonMain; only the PDF renderer is platform-specific.
Spec-driven, AI-assisted development in public from the first commit. Every feature started as a numbered spec before any code. ROADMAP.md carried the hard dates. Design went napkin → user flow → screen. Every slice ended with a blog post.
Android is live on Google Play. The iOS build is complete and currently in Apple App Review.
Challenges
Getting two mobile platforms release-ready solo with a day job. Google’s 14-day closed-test rule dictated the schedule - the calendar, not the engineering, was the critical path.
Monetising a tool for volunteers who have no budget forced an inverted model: donations only.
Accomplishments
A feature-complete cross-platform v1 built from scratch in eight weeks: sub-ten-second entry flow, tamper-evident incident lifecycle, real PDF, 25 unit tests, two build flavours, German + English, and night-ops dark mode.
The specs caught bugs the tests missed, including an undo window that was one second too short and a timestamp inconsistency where an incident could appear to begin after its first entry.
What we learned
A spec written before the code becomes a test script afterwards.
Store rules are engineering constraints.
Building in public changes what you build: when the roadmap and deadlines are visible, “I’ll clean that up later” becomes much harder to hide behind.
What’s next
The rest of the original napkin: a live vehicle/crew rail and entry templates.
Private on-device AI for call-sign suggestions, so each station can adapt the workflow without incident data leaving the device.
Beyond Germany - every volunteer emergency service that still logs radio traffic on paper has this problem.
And staying free.
That is the reason the roadmap exists.
Log in or sign up for Devpost to join the conversation.