Building a Blog with Elixir and Phoenix

(jola.dev)

89 points | by shintoist 20 hours ago

4 comments

  • mikhmha 15 hours ago
    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.

    • Joel_Mckay 14 hours ago
      The Phoenix framework is great, and I wish it was more popular.

      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

  • thibaut_barrere 18 hours ago
    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!

    • fouc 9 hours ago
      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.
    • arikrahman 18 hours ago
      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.
    • jamauro 17 hours ago
      this might be of interest to you https://popcorn.swmansion.com
  • matthewsinclair 5 hours ago
    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.

    [0]: https://laksa.io

  • dottjt 13 hours ago
    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.

    In retrospect, I wish I had built it with C#/.NET

    • vovavili 1 hour ago
      Weren't Elixir devs consistently ranked to be some of the most well-paid ones year by year? Sounds like you're underselling yourself.
    • timc3 4 hours ago
      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.
    • functional_dev 3 hours ago
      Anyhow, Elixir has it's rebirth now due to Nx
    • boundlessdreamz 10 hours ago
      Why is it useless?