Would love to know if anyone has made an Electron app from your Phoenix app.
I know a lot of people like to hate on Electron. Yes, it’s bloated and the performance is not amazing, but AFAIK there’s nothing out there that can match the ease of building a cross-platform desktop app that just works.
I made some test w/ Electron + React and was quite satisfied by the result.
package for Phoenix js
Wow can you link me to this?
Is it possible to get this to work with LiveView?
The package is at https://www.npmjs.com/package/phoenix
LiveView is trying to avoid js, so it would not be the best match… unless your electron application is just a web client.
But You can do better, because You could also have a state manager in the frontend (like Redux, or newly use reducer hook).
Having a state manager on the frontend allows You to transform any data received in whatever You want. For example, I use those data in the frontend w/ THREE.js
LiveView is a way to have the state manager on the backend. But it will mostly communicate in HTML.
Having a state manager both in the backend AND in the frontend looks like a good solution to me, because You can send data on the wire only (JSON)
This is great.
Well, it makes total sense to have frontend state manager for single-player features. But LiveView is ideal to manage state on backend for multi-player features (e.g. Google Docs).
Now that I think about it, what I need is just a way to publish a desktop app. I want to store state on the client but not manage the state on the client. Could I just publish a shell Electron app, which all it does is act as a PWA (Progressive Web App) so when someone is offline it shows the UI and previous state, then it calls the server/LiveView when it’s actually runnning?
I have just updated an old project which is in my public repo, You might have a look…
I don’t think it should be exclusive, I prefer to have a state manager on the backend AND on the frontend.
Will check it out, thanks!
Also, I just came across this, which I think solves my problem: https://developers.google.com/web/progressive-web-apps/desktop