Web apps are so over-complicated because of piecemeal client side data stores and the need to sync with the latest fashion in api protocol.

Imagine how simple apps would be if your data model and query interface was exactly the same on the server and client. With automatic caching and fetching logic.

There is such an incredibly complex chain of code to do the simplest of things.

What we lack is a good client-side relational+graph database that has an identical server-side implementation.

SQLite on WASM[0] is absolutely what you are looking for. There is also “Absurd SQL”[1] which extends it to use indexedDB as a VFS for storage allowing proper atomic transactions and not loading the whole thing into memory.

Combine it with the various JavaScript ORMs and you have a nice developer UX.

I’m waiting for someone with more time than myself to build a syncing feature on top of SQLites Sessions[2] so that changes locally are synced back to the server.

(Feel like I’m a cheer leader posting this comment every week)

0: https://sql.js.org/

1: https://github.com/jlongster/absurd-sql

2: https://www.sqlite.org/sessionintro.html