Urgent.News

What's breaking now, across thousands of outlets.

Tech

How to Structure a Production-Grade Node.js + Express Backend (2026)

How to Structure a Production-Grade Node.js + Express Backend (2026) Most Node.js tutorials stop at app.get('/', ...) . Then you land a real project, the codebase hits 40 files, and everything lives in one 800-line index.js . Been there. After building and reviewing dozens of backends, here's the structure and the handful of decisions that actually keep a Node + Express project maintainable —…

Here are the key points from the source, restructured for clarity:

1. Layer your app into routes, controllers, and services to keep the codebase maintainable. Routes only map URLs to handlers; controllers handle requests, call services, and send responses; services contain the business logic such as database operations and API calls.

2. Adopt a scalable folder structure:

- `src/` contains the main source code

- `config/` holds environment variables, database connections, and third-party clients

- `models/` stores database schemas

- `routes/` defines URL-wiring only

- `controllers/` integrates requests/responses with services

- `services/` houses the actual business logic

- `middleware/` includes authentication, validation, and error handling

- `utils/` comprises pure helper functions

- `app.js` builds the Express app without listening

- `server.js` starts the server

3. Centralize configuration to avoid reading `process.env` everywhere. Predefine environment variables in a dedicated `env.js` file. Fail fast if required variables are missing.

4. Implement a single error handling middleware to manage all exceptions uniformly. This way, controllers simply call `next(err)` without worrying about status codes or logging details.

5. Validate incoming data at the edge using schemas. Don't trust client-provided information. Libraries like Zod can enforce structure and types before requests reach your service layer.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Let's build a compressor from scratch

  • Compressor converts JSON to binary format for efficient data storage
  • DEFLATE algorithm uses Huffman coding and LZ77 for data compression
  • 580-line Rust implementation compresses book from 622 KB to 366 KB

More from Wednesday 2 September →