top of page
DroidCon_icon_rotatet.png
droidcon+icon.png

Michal Jenicek

Senior Mobile Engineer
greg-fawson-foto.1024x1024 Kopie.jpg

Your offline-first app is not a sync queue.

Most offline-first apps just queue writes, hope the server agrees, and call it offline by design.

We took the harder path: an event-sourced Kotlin Multiplatform (KMP) architecture where the client records immutable events, not mutable state; a separate engine derives state from them. The client witnesses; it never judges. Each event carries a version snapshot of what it touched, so on sync the server compares those columns against what changed underneath: disjoint edits auto-resolve, only real overlaps reach a human, who "defines reality" forward.

We'll follow one event from tap to server-confirmed — offline-addressable IDs and an optimistic projection that paints the UI instantly, then reconciles with no cleanup code of ours. The kicker: that same Kotlin module runs our backend, compiled to JavaScript, so the rules can't drift.

You'll leave building apps that behave the same on a plane as at a desk: no lost writes, no silent divergence, conflicts as a decision, not a merge bug.

bottom of page