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