In comparison to the web where there's so many libraries e.g. Zero, LiveStore, LiveBlocks, I've yet to find a good GRDB (sqlite abstraction) integration / client.
Offline-first is definitely very strong, but now how do I get data into a remote database with conflict resolution support?
For humans i would say a shorter summary is Linear.app syncs a client IndexedDB with the server using naive last-write-wins, no conflict detection, no OT, no CRDT. There's a global sync ID that the server is in control of. Most of the article describes minutae of the json schema.
I’m sure that pointing out the word ‘delve’ or the use of em-dash says more about the literacy of the reader than it does about the humanity of whoever wrote it.
I see the blind superstition stage of AI has set in
(The idea isn’t new, of course: the default macOS layout’s 3rd layer is absolutely bonkers. I think Ilya Birman was the first: https://ilyabirman.net/typography-layout/)
https://www.localfirst.fm/landscape
LiveStore shows recreating linear as one of their examples though I haven’t tried it. It was on the front page recently https://news.ycombinator.com/item?id=44105412
We build same experience at www.teamcamp.app
Any advice on what route to take with creating a sync engine for a product like mine? Self-hosted, single binary web app (Rust) + Postgres db. Frontend is based on VueJS. I've looked at the readme of Yjs and was considering that. I'm a solo dev for now.
I'm tempted to feed Cursor this description of the reverse engineered solution of Linear, but I doubt it'll be successful.
Whether you use it feels orthogonal to the problem you're describing.
---
For a minimal scope solution, have you considered making a table in your database where you log each update? Then you can keep an id of your most recent update locally and on websocket reconnection ask for the updates after your current change.
Similar to how in-app notifications work.
---
For local-first, you can use things like:
https://tinybase.org/ https://electric-sql.com/ https://livestore.dev/
But they are pretty foundational. You use them as your storage layer in the front end. So worth considering the scope of the change.
The thought of an "updates" table has crossed my mind yes, but after some time you want a "materialized view" instead of replaying the history from the start, and that's where it gets complicated ;)
I'll take a look at those alternatives. I'd rather have something stable than having to re-invent the wheel. Thanks again!
Look into these as well:
https://www.typeonce.dev/article/how-to-implement-a-sync-eng...
https://www.sandromaglione.com/newsletter/lessons-from-imple...
Same author, not necessarily sure why it's on two different domains with different content but they open sourced their sync engine. If you're interested in this topic, I'd follow. Their newsletter as they have great stuff.
tonetheman•1d ago
ralfhn•1d ago