Wow. I am so glad for this post because I am literally planning to do this today. I've been building an MMO using Elixir as the backend, and currently the main website is a static site a friend made for me using Vue.js. Mostly it just functions as a way to display blog posts that show new updates to the game. And it contains a button to "launch" the browser client for the game which is just a redirect to a page hosted on a cloudflare bucket that contains the game files.
But I figure now is the time to update the site. I don't know enough about Vue.js and I'm more of a backend programmer anyways. I've been putting it off for so long. I always figured the site would be temporary until I put in the time to learn some Pheonix. Its a bit strange being in the Elixir world working on a project that doesn't touch Phoenix in any way. To me its like an entirely new domain for a language that I consider myself "skilled" in. Whereas for others Elixir = Pheonix. So this write-up really helps remove the overwhelming feeling I've had about starting, because I don't need liveview or ecto or all the other stuff but most of the learning resources focus on that.
I'm kind of excited to start now. Eventually it will be a not-so static website that will maybe interface with some exposed endpoints running on the main game server so I can show stats like "live players" or a "live map" of the game on the main site. But for now it will remain completely isolated from the game server.
I am considering doing something similar, but embedding “livebook” bits so that I can run code & liveviews right in the middle of my posts in the future.
Curious to know if anyone went that route (or something similar) already!
After a quick search it seems like support for embedding livebook is limited, the livebook devs didn't have any interest in working on that, the best you've got is that it can work in iframes while running off a different port perhaps. iframe support was added ~2023. Some JS might be needed to forward some events like cmd+c/v/x.
I have done this but with Clojure, I needed to use a dynamic language with responsible state management (via Re-frame), but also had a good REPL. Seamless REPL integration with the language itself made it easier as most of the tools I needed were pre-existing.
Congrats! Nice work. I’m a fellow “Phoenix |> Elixir” fan and built something similar here [0]. I’m still ironing the kinks out of mine, but I’ve moved all of my personal sites over to it and it’s been running for almost a year now.
When I was a lot younger I built a very big and complex platform with Phoenix. Although it was a technical marvel, it's one of my big regrets as far as the tech stack I went with, because it's now useless for my actual work now a decade later.
Do you mean because you can’t use Elixir/Phoenix for work? Because I don’t quite understand, doing a big project and learning/using a particular tech stack should have many transferable skills.
But I figure now is the time to update the site. I don't know enough about Vue.js and I'm more of a backend programmer anyways. I've been putting it off for so long. I always figured the site would be temporary until I put in the time to learn some Pheonix. Its a bit strange being in the Elixir world working on a project that doesn't touch Phoenix in any way. To me its like an entirely new domain for a language that I consider myself "skilled" in. Whereas for others Elixir = Pheonix. So this write-up really helps remove the overwhelming feeling I've had about starting, because I don't need liveview or ecto or all the other stuff but most of the learning resources focus on that.
I'm kind of excited to start now. Eventually it will be a not-so static website that will maybe interface with some exposed endpoints running on the main game server so I can show stats like "live players" or a "live map" of the game on the main site. But for now it will remain completely isolated from the game server.
Specifically how Channels trivially solve several common problems:
https://hexdocs.pm/phoenix/channels.html
The minimal wire traffic on a Phoenix deployment usually surprises people at first. Best of luck =3
Curious to know if anyone went that route (or something similar) already!
[0]: https://laksa.io
In retrospect, I wish I had built it with C#/.NET