Loading video...
Video Failed to Load
Sync engine has been achieved internally 👏
50,344 views • 1 year ago •via X (Twitter)
10 Comments

I'm using SQLite in the browser + SQLite on the backend. Whenever you run a "mutation" (ex. createTask), it runs that query in the browser and tells the server to do the same. Cool to use the same tech in both places!

Grats! For anyone looking for a sync engine that's not only available internally, I open-sourced the sync engine I use in a couple of apps

Ah nice, I like this has a snapshot mechanism. My solution relies on an event log to catch up clients on the latest updates. I know Replicache also uses a data snapshot to remove the need to store a full history log

imo lots of apps would be better if they built a custom version of a sync engine, it's not that hard and last write wins is probably sufficient for 99% apps besides CRUD like in your example, there's usually business logic

I agree! I have no interest in building a sync engine API. Just wanted to build an easy-to-understand toy version of a sync engine. Once I clean it up, it's hopefully a springboard for people to explore

How will it be secure? Cause the sync engine can ideally push any sql changes to the server making it change anyone's data? sql injections, how did you solve it? Is it middleware to check permission before syncing?

A few things: 1. You can only run the queries the app has defined. We pass the function name to run (as defined in a queries object), *not* a raw sql query. 2. You'd definitely need auth on your push and pull endpoints to check for access. Even better, separate DBs per user.

nice! are you going to open-source this?

Already have! There's still more cleanup to do, edge cases, docs, etc. I also want to make a nice looking app to go on top

hell yeah!
