Is Elixir (and Phoenix) good for general CRUD applications, or is it overkill?

Hello everyone. I need some advice.

I know there are some people here who have experience with different technologies. Let me start by saying that I am a hobbyist programmer. I would like to invest some time in learning one of these languages and frameworks: Python + Django, Ruby + ROR, Elixir + Phoenix.

I am not doing this to get a job, I don’t care about the number of job offers. I just have some ideas that I would like to build.

I’ve spent the last few weeks learning the basics of these languages and frameworks, and I know I could work in any of them without problems. Of course, I’m leaning most towards Elixir, but I don’t know if it’s the right language and framework for my needs, as I’ve noticed that it’s usually used for specific applications.

My question is whether Elixir + Phoenix is suitable for fairly simple, general CRUD applications (as an alternative to Django/RoR) or something like the old Twitter, FB, Yelp, Airbnb, Goodreads, IG, etc.

1 Like

Nope, not overkill in the slightest, at least not compared to the other ones you mentioned. Elixir/Erlang comes with a LOT of out the box, but there is no penalty for not using any of it.

Welcome to the forums!

4 Likes

If you are a hobbyist doing this just to satisfy you curiosity Elixir and Phoenix is even better than the other options. And the reason is that the ecosystem is just bigger in terms of language and framework functionality. So, in my opinion it is more to explore as your app grows in functionality.

2 Likes

That seems wrong, what made you think such a thing?

There wasn’t anything I wasn’t able to build with Elixir so far – except maybe native desktop GUI (though there are efforts even for that). People do all sorts of web apps with or without frontend (Phoenix, Ash, Absinthe), CLI programs, embedded apps (via Nerves), deep learning (Nx), interactive demonstrations or visualized flows (Livebook), and others.

Elixir, and with it Ecto, Phoenix, Ash, Absinthe et. al. are not an overkill. You’re not “punished for not using the entire package” (I heard that said several times from other programmers). If anything, I’ve spoken with a fair amount of programmers who degraded Elixir’s ecosystem for “having to manually assemble your app”, i.e. you can just pick and choose and build exactly what you need.

Ruby on Rails nowadays is either for people who want to build a prototype extremely quickly, or those who are stuck in huge legacy projects. From where I’m standing there are zero reasons to pick RoR for a new project these days unless you want to have a big hiring pool of cheap outsourced devs (which is a good enough reason for many businesses, mind you).

Python is just a bad language any way you slice it. It’s carried by nostalgia (“When I knew nothing, I wrote my first Python program and, gasp, it worked!”), as if we’re talking about their first love – always found that sentiment extremely weird when we’re addressing technology btw. No idea why are people so touchy feely about their first thing in computers but I find it extremely unconvincing as an argument for using Python, or any other technology really.

Python is also carried by huge network effects – professors teach it in universities and the very non-romantic truth is that most of those professors never knew anything else.

All of that being said, I crossed paths with Django before and liked it – it’s a very well done piece of technology. But it falls in the same segment as RoR IMO; prototyping or legacy projects. Every Django dev I’ve ever known has said that from one scale and above it becomes a big pain to maintain.


Elixir’s ecosystem shines with its modularity. You can mix and match and assemble your own LEGO. And of course that’s not seamless, you have to take care of it.

That’s what repels many programmers. But it is also what attracted me and most of the community here on this forum.

Obviously we’re a bit biased in favor of Elixir, so draw your own conclusions. Still, we also shouldn’t pretend that all technologies are equally good. They aren’t.

7 Likes

Probably from reading Hacker News comments. People love to put down competing solutions they don’t understand by proclaiming with authority that, “your preferred technology is only good for certain scenarios.”

Re: ROR, having toyed a bunch with Hotwire I will say the one area it wins is if you require the need for a full Progressive Web App. This advantage is mitigated a little in that Hotwire isn’t as simple as LiveView, but with LiveView you’d have to make both an event handler and a controller action for everything which is a giant pain. Of course true PWAs are rarely a requirement and I wouldn’t take this into consideration, just thought maybe it would be a point of interest.

3 Likes

In my opinion the only reason to pick any of the other frameworks you mentioned is that you (or your team if for work) have a lot of knowledge and experience in them already and want to get rolling quickly without learning something new.

5 Likes

Yeah, this introduces a less biased point of view so thanks for expressing it.

Indeed Phoenix does many things right but errs on the side of being manual and 100% transparent a bit too much for my taste sometimes. That’s why I intuitively feel that when I get a bit more free time and energy I’ll self-onboard on Ash. It feels it isn’t tilted as much to the side of “(1) everything must be seen and (2) be done manually”. I very much agree with #1 but I find myself disagreeing with #2 very often these days – and this goes way beyond Phoenix or even Elixir.

It’s only a matter of time before we have not only the src/ directory in our projects but also gen/ which, you guessed it, would be code generated from a certain spec (or even from an LLM prompt).

As much as we the control freaks love to have everything in front of us and being able to change it whenever we feel like it, it’s also true that big chunks of backend web development is about churning out tonnes of pointless boilerplate (“pointless” as in “why must humans do this at all?”).

6 Likes

Why not do all of the above? Something a little more like a take home assignment that is more involved than TodoMVC would be a good way to evaluate all 3 approaches. If it stretches a little further to cover background processes or incorporating 3rd party packages, that could also be useful. There is quantity and quality packages in other ecosystems and there tends to be more quality with Elixir. There are pros, cons, and trade offs around things like scaling which do become harder problems but not impossible. You start to run into scenarios where they’re harder to find a path forward because a lot of companies and personal projects stay small.

At some point you’ll need to step out of the boxes and work through most escape hatches. While I’m in love with the Elixir ecosystem and sum of technologies, I feel like there is value in understanding if not all 3 approaches then pairing Phoenix with one of the others. I’m not suggesting all of them at once or even a particular order but if you have the time, why not take it?

2 Likes

Thank you all for your help. It looks like Elixir + Phoenix will be the right tool for me, which makes me happy because I liked it the most.