As of the time writing this blog post, this project is not meant to be “production-ready”. This is a hobby project to learn new technologies, frameworks, and general exercise.
I always loved Ruby and Ruby on Rails. Ruby is just such an elegant language and also easy to read and, most of the time, too easy to understand. My first experience of MVC was with RoR, and even my first more significant project was written in RoR. It was a Yelp-like app before Yelp was popular.
Meteorjs is kind of dead since the company named MDG behind meteorjs is now mostly working on the Apollo project. With that, we don’t have anything right now, at least in my opinion that comes near to the features and ease of use like these frameworks were back in their days.
I know that we have projects like sails.js, but that project did not have any updates since mid-June 2019. Then you have expressjs, which is as minimal as a framework can get, and you need to add everything on your own. This means everything — the database layer, the authentication provider, routing, logging, etc.
People usually say that they like that freedom and that they can pick what they want. Yes, sometimes you need this, and it is the right choice. I think that some projects, especially in their early phase, don’t need that kind of flexibility and want to get things done.
This is also why frameworks like laravel or dot.net are so popular. The basic and sometimes boring stuff is set up, and you can scaffold it with on command. You don’t have to think about so many technical details, and it is harder to screw up. Sometimes opinionated frameworks are the better choice.
Setting up a new nodejs project is hard. Only configuring webpack and babeljs can be a big pain point. Not speaking about all the other stuff like coming up with a structure for a new project.
Frameworks like Ruby on Rails are often very opinionated about things like that. They are easy to use, and the project you never touched is easy to understand because you know the skeleton of the project.
this as much as possible.
- Node js
- Yarn workspaces
- Docker compose
This is just the first draft of the tools/libs/frameworks that I want to use. This list will change over time. You can see right now there is no testing framework, for example. This is still a hobby project, and I don’t want to plan everything from the beginning and add things when needed.
The first step will be setting up a new project. Since node-on-rails should be modular and easy to maintain, I will make it a
mono repo on GitHub. This means that all the code and packages and all the extra things will be in one git repo.
Okay, after that is done, I will start to implement the CLI, the core, and a basic project.
The CLI should generate a new project and all the other things like models or tests etc.
The Core should have the minimal basic things needed to bootstrap the rest. What
minimal means? I have no clue. This is what I will explore with that project.
Somewhere in that process, I will post the link to the repo.
I will have it open for contribution, right away and every input is welcome!
By sharing, linking, and posting and discussing suggestions!
I already posted a question yesterday on twitter about how the folder structure should look. you can find that tweet >>here<<