wow
wow
ElectricSQL and PowerSync are both tackling the very hard problem of partial replication. The idea is to build a general solution which allows a traditional centralized db to bidirectionally sync only what's needed on the client side - while still supporting optimistic mutations (and all the consistency/conflict stuff that goes along with that).
The downside is implementation complexity. Both require the ability to keep track of precisely the set of data on each client in order to push out changes to only that subset of the overall database. In addition, specifying which subsets of the database state to pull down requires a new DSL and is a new thing to learn (and optimize). That said, I'm stoked they are taking on this extremely hard problem so when SQLSync is ready for partial replication someone will have already figured out the best practices.
SQLSync, on the other hand, only supports full db sync. So every client will see a consistent view of the entire database. You might immediately wonder if this is a good idea - and for some apps, it's not. But consider a personal finance app. The main goal is cross device sync, cloud backup, offline capable, etc. In this case having the entire db stored on every device is probably what you want. Another example is a document oriented data model, such as Airtable. Each Airtable could be a distinct database, thus leaving it up to the client to manage which tables they care about.
(added in edit:) By focusing on full db sync, the sync engine is much simpler than solutions that support partial replication. One benefit of this is that the backend is very lightweight. Currently the demo (https://sqlsync-todo.pages.dev) runs entirely within Cloudflare Durable Objects using very little storage and CPU time.
SQLSync has a ton of work to do to make these use cases possible (still very much a prototype), but my initial tests have been extremely promising. Hope this helps!
(edit: clarified language regarding centralized dbs and full db sync. Also added paragraph regarding full db sync)
A bit confused by this. If I'm a developer of a PFM, I don't want anything but a single user's financial data synced to their device. This sounds like partial replication to me.
It looks like you have an Venmo integration ("Sent to Venmo" in screenshots) which I haven't quite cracked yet - curious if you're willing to talk about how it works. Tender has venmo via plaid, but it only supports importing tx, not initiating payments/requests.
I thought about either: integrating unofficially (https://github.com/mmohades/VenmoApiDocumentation) or just doing links to venmo payment (i.e. venmo.com/user?pay=500) and having some way to import venmo contacts
Neither seems great from a UX or security perspective.
I wrote about how it works here: https://gabeoleary.com/posts/venmo-deeplinking-including-fro...
When I wrote this it only worked on mobile. The deep link would take one into the app with the amount/details etc prefilled out. Just tested and it looks like the same format works on desktop now too.
I had until just now not realized that Plaid has a Venmo integration.
I could imagine using the deep link to begin the transaction and then using the plaid connection to look for it's completion...
I created a tool that helps people stay on top of shared transactions (https://reconcile.app/) a few years ago and have recently been working on another iteration of it that has some similarities to what you've built, but with a focus on couples who share much of but not all of their financial lives.
You can record steps & have the extension replay them on your machine or in the cloud (presumably using puppeteer/playwright).
One of the key features in Claude Code is "Agentic Search" aka using (rip)grep/ls to search a codebase without any of the overhead of RAG.
Sounds like even RAG approaches use a similar approach (Query Generation).