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:
-
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.
-
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.
-
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.
-
At any time the system should be able to show the current progress of any order.
-
The system could be extended to keep track of stock levels of ingredients in order to indicate when more stock should be ordered.
-
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?
-
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?