
"The best way to predict the future is to create it." – Peter Drucker
Well, I did it. After months of deliberation, the PoC is being rebuilt in the awesome Elixir Desktop project created by Dominic Letz (https://github.com/elixir-desktop). And honestly? It feels right.
The April post from last year hinted at this. The "yuck feeling" with JavaScript wasn't going away, and the more I dug into Elixir and OTP, the more I realized I wasn't just picking a language - I was picking a foundation. Supervision trees, fault tolerance, hot code reloading, pattern matching... these aren't nice-to-haves for a plugin-based desktop application. They're the right tools for the job.
The plugin system is where this really shines. In Electron, I was fighting the framework to get clean boundaries. In Elixir, I have proper behaviours defining the plugin contract, a standalone SDK, and OTP supervisors watching over plugin processes. A plugin crashes? The system recovers. No drama. "Let it crash" isn't just a motto, it's genuinely how this thing works now.
Phoenix LiveView handles the UI, and I'll admit - I didn't expect a server-rendered reactive framework to feel this natural in a desktop app. But it does. The Hexagonal Architecture I was striving for in JavaScript just falls into place here. Ports, adapters, bounded contexts - Elixir practically nudges you in that direction.
Is it perfect? No. The ecosystem is smaller, the desktop library is still maturing, and I'm forking dependencies to get features I need. But I'd rather build on a solid foundation and fill in gaps than build on sand with all the convenience in the world.
The Electron PoC served its purpose. It validated the idea. Now it's time to build it properly.













