Need opinions on whether my project would be a good fit for Elixir

Let me start by saying I am a full stack web developer by day (Angular mainly) but a total noob when it comes to Elixir. I’ve been reading a bit about Elixir and Phoenix lately and I am intrigued. I have been looking for a decent project as a way to learn. A potential project has come along (for my wife’s rapidly expanding cake business actually) and I wanted to get people’s opinions as to Elixir’s suitability for the project. Essentially the project would consist of an order processing/employee task scheduling system. Something like this:

  1. Orders for cakes come in from various sources (online web orders, telephone orders etc) so I’m thinking some kind of queuing system would be nice whereby orders could sit waiting to be processed.

  2. Each order (lets say a cream cake) consists of both a recipe of ingredients and a series of steps to create it. So this information would need to be stored.

  3. As each order is processed, the system will break an order(s) down and may assign different parts to different employees in the kitchen. For example if 3 separate orders come in for cream cakes then it makes sense to combine the three buttercream tasks into one and assign it to one person who can create the mix. You get the idea.

  4. At any time the system should be able to show the current progress of any order.

  5. The system could be extended to keep track of stock levels of ingredients in order to indicate when more stock should be ordered.

  6. To start with we may just deploy this on premise but eventually would be nice to host it in the cloud - however as much as is possible the system should be cloud agnostic. I hear that Elxir projects are not always the easiest things to deploy - should I be concerned about that?

  7. Resilience - this of course is a primary reason I am looking at Elixir

Now - there are of course an infinite number of ways and technologies to produce this system and I am sure elixir is very capable of doing this, but what I am really interested in knowing is what specific features of Elixir do people think lend themselves well to this kind of project over and above choosing a more traditional approach?

1 Like

Hi!

  • Non-defensive programming.
  • Hot code-swapping.
  • Ecosystem: Elixir, Phoenix (Plugs, channels, …), Absinthe, Ecto, ExDoc,Mix … .
  • OTP & BEAM.
  • Erlang libraries.
  • Elixir’s ability to handle concurrency and distributed programming.
  • Syntactic sugar.
1 Like

Truthfully, a lot of languages and frameworks will do. But unless some of them have some sort of pre-baked (pun intended!) solution for your exact business problem then I’d say definitely go for Elixir.

Deployment is indeed a little more trouble than it should be – and a bit of a whack-a-mole until you get it right the first time but I found the trouble to be worth it since my hobby (and free) Elixir servers have been rock-solid even on very weak VPS or managed hosting services. And lightning-fast regardless (although let’s be honest, I never loaded them at more than 100 users a second).


Non-Elixir specific: yours sounds like a really fun project! But also quite hard. It can grow a lot.

To that end, use a language and frameworks that are easy to maintain long-term (and the language terse and readable). Every single Elixir project I have been part of has aged really well – something I cannot say for a lot of Ruby and Javascript projects I’ve been into years ago.

So all other things being equal, go for whatever will solve your business problem in particular – namely a complete website offering what you need, from the get go. Failing that, go for the best and most straightforward long-term maintainability tech. To me Elixir hits the sweet spot there but your choice might differ.

2 Likes