
A few years ago, building web apps felt simpler.
You had an idea. You generated a model. You generated a controller. You added a few routes. You connected a database. You shipped something.
It was not always perfect, but there was a feeling that the framework was trying to help you move.
Lately, building full-stack JavaScript apps has started to feel different. The ecosystem is incredibly powerful, but the starting point is often a pile of decisions:
- Which backend framework should I use?
- Which ORM?
- Where do migrations live?
- How should the API connect to the frontend?
- Do I want a monolith, separate services, or something in between?
- How much boilerplate do I need before I can build the actual product?
I kept running into the same problem.
I like the Node.js ecosystem. I like modern JavaScript. I like Next.js. But I missed the productivity of frameworks like Rails.
So I built Master.
Master is a full-stack framework for Node.js that gives you a real application structure from the start. One command scaffolds a Next.js frontend, a MasterController API, and a MasterRecord ORM, wired together and ready to run.
npm install -g master
master new my-app
cd my-app
master db migrate
master devThat boots the API on port 3001 and the Next.js frontend on port 3000.
The goal is simple: give JavaScript developers the productivity of Rails without asking them to leave the Node.js world.
Why I built it
I have built a lot of web apps. Some were small side projects. Some were internal tools. Some needed authentication, dashboards, CRUD screens, APIs, background logic, and database changes.
Every time I started a new app, I felt like I was rebuilding the same foundation.
I did not want a tiny router and a blank folder. I also did not want a giant black box. I wanted something opinionated enough to help me move fast, but modular enough that I could understand and replace pieces when needed.
That became the philosophy behind Master. Three pieces, one framework:
Master CLI
The command center for creating apps, generating resources, running dev, building, starting, and managing database workflows.
MasterController
The backend framework. Routing, controllers, middleware, WebSockets, CORS, CSRF protection, rate limiting, secure headers, HSTS, and other backend pieces that most real apps eventually need.
MasterRecord
The ORM. Code-first models, migrations, relationships, transformers, and support for SQLite, MySQL, and PostgreSQL.
The part I care about most
The part I care about most is not that Master exists. It is that the first few minutes of a project should feel better.
Starting a web app should not require hours of glue code before you can touch the actual product. With Master, I wanted this flow:

- 1Create the app.
- 2Generate a resource.
- 3Run the migration.
- 4Start building.
Why not just use Next.js?
Next.js is great. Master does not try to replace Next.js. It puts Next.js where I think it belongs: as the frontend layer. Then it gives you a real backend and ORM underneath it.
The result is a decoupled full-stack app:

- Next.js renders the UI.
- MasterController handles the API.
- MasterRecord handles the database.
Apps outgrow “everything is just a frontend app”
The frontend and backend are separate services, but they are created together and designed to work together. That matters because a lot of apps eventually outgrow the idea that everything is just a frontend app.
- You need real backend structure.
- You need database workflows.
- You need controllers.
- You need security.
- You need places to put business logic that do not feel like hacks.
Who this is for
Master is for developers who like JavaScript but miss productive full-stack frameworks.
- People who want to build real apps, not spend the first day choosing packages.
- Small teams that want a clear structure.
- Solo founders who need to move fast.
- Backend developers who want Node.js to feel less scattered.
If you love building every piece from scratch, Master may feel too opinionated. If your whole app fits perfectly inside a serverless-only frontend flow, you may not need it. But if you have ever opened a blank Node.js project and thought, “I wish this gave me more out of the box,” then Master is for you.
What works today
Master is now in v2. It supports modern ESM and Node 20+.
- It can scaffold a full-stack monorepo.
- It can generate models, controllers, pages, and routes.
- It includes a backend framework with routing, middleware, WebSockets, CORS, and security features.
- It includes an ORM with code-first models, migrations, relationships, and support for SQLite, MySQL, and PostgreSQL.
- It is MIT licensed.
What I'd love feedback on
I am posting this because I want technical feedback from people who have built real apps with Rails, Laravel, Django, Phoenix, Next.js, Express, NestJS, Adonis, or ASP.NET.
I am especially interested in feedback on:
- Is the “Rails productivity for Node.js” direction useful?
- Does the separation between Next.js frontend, API backend, and ORM feel right?
- What would make you trust a new framework enough to try it?
- What should the first example app be?
- What parts of full-stack JavaScript still feel too painful?
I know frameworks are hard. I also know the JavaScript world probably does not need another framework unless it gives developers a meaningfully better way to build. That is what I am trying to do with Master. Not a tiny library. Not a toy starter kit. A real full-stack framework for building real applications with Node.js. I would love your feedback.
Key takeaways
- Master is a full-stack framework for Node.js: one command scaffolds a Next.js frontend, a MasterController API, and a MasterRecord ORM, wired together.
- It brings the Rails productivity feeling to modern JavaScript without leaving the Node.js ecosystem.
- Opinionated enough to move fast, modular enough to understand and replace pieces — the three parts can be used independently.
- v2 ships ESM, Node 20+, code-first migrations, and SQLite/MySQL/PostgreSQL support, MIT licensed. Learn more at masterjs.org.