Building a sync engine from scratch.
Five parts on the engine that keeps a Flutter client and a Laravel backend honest under real-world network conditions.
After a year of running this in production for a multi-tenant accounting app, the answers I found were rarely the textbook answers. Each part of this series picks one structural problem (queueing, conflict resolution, reconnect storms, transport choice, migrations) and walks through what we tried, what broke, and what survived contact with rural cellular networks.
- ○Building a sync engine, part two: orderingVector clocks for the offline reality. Why they pay off, and the simpler model that does not.13 min
- ○Building a sync engine, part one: the queueSeries opener. The shape of an outgoing queue, why ordering matters, and the test harness that catches everything.14 min
- PB
When polling beats websockets
A year of trade-offs in Mohaseb. Why the obvious answer was wrong on our network conditions.
8 min - CR
Conflict resolution in offline-first apps
Last-write-wins is almost always wrong. Here is what works in practice when two clients disagree.
10 min - RS
The reconnect storm problem
When 800 phones come back online at once, what happens to your server. The patterns that survive.
7 min