quda
Non-MVC web framework?
I am wondering if are there other reliable web frameworks in Elixir that are not based on MVC design pattern ?
Maybe something based on MVVM or multi-tier ?
PS: I know Phoenix is great, but not for everybody, sometimes seems rigid, cumbersome… so please don’t insist to convince me about it, I just want to experiment other flavors of web dev/Elixir.
Thanks! 
Marked As Solved
quda
Just an update (closure) to this topic.
I set my own stack and modus operandi for web dev w/ Elixir:
- I use plug_cowboy on the backend to manage the web server operations, routes, REST etc.
- Also on the back-end, the connection to the ArangoDB (a non-SQL db engine) instance is realized through Arangoex - wrapper/adapter.
- Front-end is developed using Vue.js (I transplanted the SPAs from old Node framework we used)
- Created my own/custom functions that somehow act as controllers - this took a lot of effort, time.
Notice that everything is at minimums, extra-light.
It took a lot of time and frustration to set all of these, but we are very satisfied now, it runs blazing fast, it’s light, easy to manage, didn’t need that bloatware of Phoenix. I know, this is not a solution for everybody, has limitations, it just fits our purpose.
If one need an out-of-the-box, full framework, he should probably use Phoenix. Nevermind the learning curve… 
Cheers,
Q.
Also Liked
lpil
Hello!
If you’re happy to go for something a bit more modular and convention based there are lots of options.
- GitHub - elixir-plug/plug: A specification and conveniences for composable modules between web applications : The underlying abstraction the Phoenix uses can be used directly.
- GitHub - CrowdHailer/raxx: Interface for HTTP webservers, frameworks and clients : An alternative framework based around modularity and pure request/response functions
- GitHub - elli-lib/elli: Simple, robust and performant Erlang web server : A simple Erlang web server with a pure request/response interface.
- GitHub - ninenines/cowboy: Small, fast, modern HTTP server for Erlang/OTP. : The big popular Erlang web server that is commonly used directly in other BEAM languages.
- GitHub - novaframework/nova: Web framework for Erlang. : A newer convention based web framework in Erlang.
One these might fit your preferences. Personally I quite like Elli
jack
Since cowboy and plug_cowboy was suggested (and used as solution), I would like to suggest Bandit and Thousand Island.
The naming might be bad haha but I’m very interested in those two projects, the ideas behind them are great and there is also a great presentation I saw some time ago. I see a lot of potential on it.
Thousand Island is an alternative to Ranch, and Bandit is an alternative to Cowboy.
You can check the project here: ElixirConf 2021 - Mat Trudel - bandit on the loose! Networking in Elixir demystified - YouTube
trarbr
Just to list some more alternatives:
- Aino: An Elixir HTTP framework built on top of elli
- MochiWeb: An Erlang library for building lightweight HTTP servers.
- Webmachine: A “REST toolkit” - it is an application layer that adds HTTP semantic awareness on top of MochiWeb, see the Webmachine Overview for more
I have not used any of them, but I do know that Webmachine is quite different from MVC.
There is also another one in Elixir, but I can’t think of it right now. It’s very DSL-driven, meant to remove a lot of boilerplate, and supports both REST and GraphQL APIs… I can’t remember the name right now though
stevensonmt
I’m glad you were able to work out a solution. It would be great to see an example of your setup. I don’t think it’s fair to refer to Phoenix as bloatware, even if you did not find it to be the right tool for you. It would be nice to maybe see a comparison of performance benchmarks and compiled binary sizes between your setup and Phoenix.
cmo
Have you tried LiveView? It’s not too rigid. No pesky controllers!







