---
name: nodejs-express-server
description: >
    Build production-ready Express.js servers with middleware, authentication,
    routing, and database integration. Use when creating REST APIs, managing
    requests/responses, implementing middleware chains, and handling server logic.
---

# Node.js Express Server

## Table of Contents

- [Overview](#overview)
- [When to Use](#when-to-use)
- [Quick Start](#quick-start)
- [Reference Guides](#reference-guides)
- [Best Practices](#best-practices)

## Overview

Create robust Express.js applications with proper routing, middleware chains, authentication mechanisms, and database integration following industry best practices.

## When to Use

- Building REST APIs with Node.js
- Implementing server-side request handling
- Creating middleware chains for cross-cutting concerns
- Managing authentication and authorization
- Connecting to databases from Node.js
- Implementing error handling and logging

## Quick Start

Minimal working example:

```javascript
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

// Middleware
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// Routes
app.get('/health', (req, res) => {
	res.json({ status: 'OK', timestamp: new Date().toISOString() });
});

// Error handling
app.use((err, req, res, next) => {
	console.error(err.stack);
	res.status(err.status || 500).json({
		error: err.message,
		requestId: req.id
	});
});

app.listen(PORT, () => {
	console.log(`Server running on port ${PORT}`);
});
```

## Reference Guides

Detailed implementations in the `references/` work:

| Guide                                                                                                            | Contents                                         |
| ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [Basic Express Setup](references/basic-express-setup.md)                                                         | Basic Express Setup                              |
| [Middleware Chain Implementation](references/middleware-chain-implementation.md)                                 | Middleware Chain Implementation                  |
| [Database Integration (PostgreSQL with Sequelize)](references/database-integration-postgresql-with-sequelize.md) | Database Integration (PostgreSQL with Sequelize) |
| [Authentication with JWT](references/authentication-with-jwt.md)                                                 | Authentication with JWT                          |
| [RESTful Routes with CRUD Operations](references/restful-routes-with-crud-operations.md)                         | RESTful Routes with CRUD Operations              |
| [Error Handling Middleware](references/error-handling-middleware.md)                                             | Error Handling Middleware                        |
| [Environment Configuration](references/environment-configuration.md)                                             | Environment Configuration                        |

## Best Practices

### ✅ DO

- Use middleware for cross-cutting concerns
- Implement proper error handling
- Validate input data before processing
- Use async/await for async operations
- Implement authentication on protected routes
- Use environment variables for configuration
- Add logging and monitoring
- Use HTTPS in production
- Implement rate limiting
- Keep route handlers focused and small

### ❌ DON'T

- Handle errors silently
- Store sensitive data in code
- Use synchronous operations in routes
- Forget to validate user input
- Implement authentication in route handlers
- Use callback hell (use promises/async-await)
- Expose stack traces in production
- Trust client-side validation only
