PWAs use a thing called IndexedDB
I was reading the docs this morning and thought how cool it would be if there was some package built on top of Ecto that could automatically convert a project’s existing Ecto schemas to “object stores” (that’s what they’re called).
Even in a new project, maintaining the object store schemas to accord with the Ecto schemas is a burden (Absinthe devs will know this pain). It would be cool if it could be automated.
You can see an example of how an object store is built here:
https://github.com/mdn/dom-examples/blob/main/to-do-notifications/scripts/todo.js
I throw this vague idea into the void and see if anything resonates…
4 Likes
Might be better to look towards OPFS instead. I don’t have a source off the top of my head but I have heard many times that IndexedDB is, for various reasons, very unpleasant to deal with. My understanding is that going forward OPFS will be better (and is now widely available).
3 Likes
I have something along these lines planned for the local-first stage of Hologram. I agree with @garrison that OPFS is probably the way to go here.
One thing to keep in mind though – it needs to be a little more involved than just storing data on the client. You’d probably want:
-
Auto-sync between client and server
-
Managing schema and data migrations on the client-side
-
Deciding what subsets of data to sync to the client-side (not everything should/can be synced)
2 Likes
@garrison Yes, OPFS looks much better. Thank you!
@bartblast Very exciting to hear about local-first plans. I might play with the OPFS stuff myself just to see what is possible.
2 Likes
SQLite in the browser, compiled to WASM, maybe?