Vague idea - IndexedDB + Ecto

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:

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?