slouchpie
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:
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…
Most Liked
garrison
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).
bartblast
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)
slouchpie
@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.
Popular in Discussions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance









