There is also economization of learning/maintaining a skillset - and risk of a project progression - which favors using a single does-it-all framework - especially when it comes to a “lean” one like phoenix…
eg I would love to have the time to fire up something like Raxx/Ace(or no framework) for a hypothetical smaller/narrower project - but then I need extra time to learn the ins-and-outs, and what about when that project progresses to be more complex, and what about updating/maintaining said solution…
so lack of time/limited brain space is (unfortunately) also a factor… I do use umbrella so by all means phoenix is simply the web interface to the “real” apps…
My point is there is no reason to reinvent the wheel. Rolling your own “proprietary” web framework when phoenix (and other options ie Raxx) are available is not a smart business decision. No one wants to come in and work on a project that someone built because they thought they knew more than a collective group of smart developers in their respective communities. Seriously questioning a decision to not use a mature established framework for web projects does not mean not using it is the wrong decision. Of course there are edge cases. But the jump from “simple project” to a web project that needs templating, API, DB is a very short one. I talk myself out of phoenix, it sounds like you talk yourself into it. To each his own.
I guess I took your message too literally only talking about Phoenix (the subject of this topic). What I meant is that only looking at Phoenix specifically every time is not a good idea IMO. I have several projects in Raxx, some using Plug, and one bigger one in production using Phoenix. I agree that reinventing the wheel is not good.
But for example my blog engine used to be made with Phoenix, but it’s so simple that most of Phoenix was unused and the mental complexity it adds was not worth it. I rewrote it in Raxx and it feels much simpler to me. But I would not rewrite it using Ace or Cowboy directly because then it would again be too complex (due to reimplementing common stuff).