Skip to content

Node.js – Project Structure

src/
├── features/
│   ├── user/
│   │   ├── user.routes.js
│   │   ├── user.controller.js
│   │   ├── user.service.js
│   │   └── user.validator.js
│   └── orders/
│       ├── orders.routes.js
│       ├── orders.controller.js
│       └── orders.service.js
├── config/
├── middleware/
├── utils/
├── app.js
└── server.js

Rules

  • Layer by feature, not by file type
  • routes/controllers/services/ — never skip layers
  • Config only from environment variables — never hard-code values
  • Constants as named exports — never magic strings in handlers
  • app.js sets up Express, server.js starts the HTTP server