Last month, we made the decision to migrate our stack from Express and Next.js to Ruby on Rails.
While Next.js continues to grow and evolve rapidly, we started to feel that our development velocity started to slow down. Every new feature just caused a lot of friction and development anxiety. As our app grew, so did the codebase. Labyrinth of files that after a week without coding you could get lost in.
But the biggest factor for our decision was architectural: we had effectively ended up maintaining two separate apps—a backend server and a frontend client. Even minor modifications required updates, deployments, and coordination for each system separately, slowing our iteration speed considerably.
Having 10 plus years of development in Ruby on Rails ecosystem I knew we could be much more productive. RoR is now a mature framework and has a rich ecosystem with battle-tested gems and service providers around it. It comes with a lot of features out of the box and it's a monolith (usually), meaning everything lives in one codebase. I knew that what usually took us 3 weeks and 10 files to write in Next.js/Express could be done in less than one week by one developer. For example, Express convention is to have a separate route file for every model. In Rails, you only have one file for routes. Many times I found myself just copy/pasting from one file to another code that could be either auto-generated or abstracted away from developer.
It took us a few weeks to migrate, because luckily our app is still not too complicated. Now that the migration is complete, we're curious what you think about our redesigned experience. Do you miss anything from our previous version? Is there anything we can still improve?
We'd love your feedback!
Member discussion: