Express.js REST API
January 30, 2026 ยท View on GitHub
Build a production-ready RESTful API with Express.js.
Overview
A well-structured Express.js API with authentication, validation, error handling, and documentation. Follows REST best practices with proper HTTP methods, status codes, and resource naming. Includes JWT authentication, rate limiting, and database integration.
Features
- RESTful API design
- JWT authentication
- Request validation with Zod
- Error handling middleware
- Rate limiting
- API documentation with Swagger
- Database with Prisma
- Logging with Winston
- Unit and integration tests
- Docker support
Tasks
Task 1: Project Setup
- Initialize Node.js project with TypeScript
- Configure ESLint and Prettier
- Set up folder structure (routes, controllers, services, middleware)
- Configure environment variables
- Set up path aliases
Task 2: Express Configuration
- Create Express app
- Configure CORS
- Set up body parsing
- Add helmet for security headers
- Configure compression
Task 3: Database Setup
- Install and configure Prisma
- Create User model
- Create example resource models (Post, Comment)
- Set up migrations
- Add seed script
Task 4: Authentication
- Create auth routes (register, login, refresh)
- Implement JWT token generation
- Build auth middleware
- Add password hashing with bcrypt
- Create protected route examples
Task 5: CRUD Routes
- Create user routes
- Build post routes (CRUD)
- Add comment routes
- Implement pagination
- Add filtering and sorting
Task 6: Validation & Error Handling
- Create validation middleware
- Build Zod schemas for requests
- Create error handling middleware
- Define custom error classes
- Add request logging
Task 7: API Documentation
- Install Swagger/OpenAPI
- Document all endpoints
- Add request/response examples
- Create Swagger UI route
Task 8: Rate Limiting & Security
- Implement rate limiting
- Add input sanitization
- Configure secure headers
- Add request ID tracking
Task 9: Testing
- Set up Jest
- Write unit tests for services
- Write integration tests for routes
- Add test database configuration
Task 10: Docker & Deployment
- Create Dockerfile
- Add docker-compose.yml
- Create health check endpoint
- Add graceful shutdown handling
Tech Stack
- Node.js
- Express.js
- TypeScript
- Prisma
- PostgreSQL
- JWT
- Zod
- Swagger
- Jest
- Docker
Files to Create
src/index.tssrc/app.tssrc/routes/index.tssrc/routes/auth.routes.tssrc/routes/user.routes.tssrc/routes/post.routes.tssrc/controllers/auth.controller.tssrc/controllers/user.controller.tssrc/controllers/post.controller.tssrc/services/auth.service.tssrc/services/user.service.tssrc/services/post.service.tssrc/middleware/auth.middleware.tssrc/middleware/validate.middleware.tssrc/middleware/error.middleware.tssrc/schemas/auth.schema.tssrc/schemas/user.schema.tssrc/lib/prisma.tssrc/lib/jwt.tssrc/utils/logger.tsprisma/schema.prismaDockerfiledocker-compose.yml.env.example