Nah, if you want heavy backend, go with Go/Ktor/C#, not node. If you want light backend, use sth like Hono or H3. If you want to primarily produce html, use Remix or Next.
Adonis/Redwood/Nest is something you will regret in few years because it will lock you down to "their" ways of doing things instead of something with replaceable components.
Admitted, Adonis looks most sensible out of these 3. Redwood is poisoned with needless GraphQL and Nest is written like 2008 java.
In Adonis you can at least pick the db layer.
But even Adonis locks you to their validator instead of Zod or his cousins, they use their own Request/Response classes instead of the platform ones, has yucky inheritance and annotations magic etc.
Locking things in is not an issue if things are well built and well maintained. Having used Laravel, I'm amazed at their DX. First party libs all built by the same team, tools also built by the same team. Everything is congruent and just flows.
Compare that to the wild west that is Javascript land. Multiple libraries that all do the same thing in different ways. Stuff being deprecated or completely changed.
Sure, if you want "choice", there's plenty of stuff out there for that. You can cobble together your own framework or pick a light framework pick and then add your "batteries" to it. I hope AdonisJS only has 1 way of doing things and that those ways are good, then it will truly go a long way.
The fact that people (the builders) don't bet on a single horse IS the reason why we are in the state JS world is in. The only person that readily comes to mind is Evan You, who's been working on and driving Vue JS for a very long time. Of course, Vue JS is not a framework.
Adonis is starting to get there, but I don't know much about the core team and how long they've been working on it. If they are able to focus on delivering core features and not getting distracted by every wave that hits the JS world, eventually the level of convenience they provide will reach a tipping point and developers will flock to it.
I think there are multiple reasons why JS world is different.
- JS libs often target browser as well and that's a fast moving target
- JS is primary language of serverless which is also moving fast
- it attracts younger devs chasing hot trends
- the fragmentation is already there, people got used to it and some even embrace it
I lead development on a 12 year old SPA. It's a Ship of Theseus where there is almost zero original code but we never had to rewrite from scratch, instead we were swapping piece by piece as we went. The time investment was reasonably small and we never endangered the business with the full rewrite.
I shudder at possibility that someone before me picked "batteries included" AngularJs (the V1). A sibling project is still fighting it today!
"Locking things in" is an issue. It might not be a too big issue but it is one definitely.
Consider choosing Oracle as your database. It is a great database maintained by a big company so it will be around in future too. But you will be locked-in to very expensive licensing because when big businesses are "locked in" Oracle can and will raise their prices.
Until the next dev comes to the project and doesn’t agree with your opinions, right? I’ve seen this movie far too many times.
The main benefits of these frameworks is that they remove all the bike shedding decisions. And I trust more something used by a lot of people and battle proven even if I don’t 100% agree with everything.
What you think is the best library for validations is just an opinion as theirs, and for example I don’t think Zod is good at all. See? Now on a team of 5 people we have 6 different preferences and we have to schedule 10 meetings to decide what library is best. And next month we will regret using it anyways.
There is a reason Rails, Laravel, Django etc are so popular in their ecosystem.
I honestly don’t believe the “I can do better all of this by myself”. It’s usually an undocumented, unproven, buggy and insecure mess that only the main author knows how it works.
That's why I don't recommend Fastify or Express. Remix and Hono use standard Req/Res
Annotations are not part of Js, they are part of Ts and are a concession to OOP people coming from other languages. It's a personal opinion but I don't like them and I enjoy this opinion is not uncommon because only few libs are riddled with them.
Annotations/Decorators are in stage3 of JavaScript. But I agree they are not super common in JS world except TS heavy libs or frameworks. Btw we aren't big fan of them and use them sparsely in models and commands only
Adonis/Redwood/Nest is something you will regret in few years because it will lock you down to "their" ways of doing things instead of something with replaceable components.
Admitted, Adonis looks most sensible out of these 3. Redwood is poisoned with needless GraphQL and Nest is written like 2008 java. In Adonis you can at least pick the db layer.
But even Adonis locks you to their validator instead of Zod or his cousins, they use their own Request/Response classes instead of the platform ones, has yucky inheritance and annotations magic etc.