DEV Community

Abhijeet Jadhav
Abhijeet Jadhav

Posted on

Production-Ready Express 5 + TypeScript Project Setup

Initial Setup

Create project directory

mkdir my-express-api
cd my-express-api
Enter fullscreen mode Exit fullscreen mode

# Initialize npm project
npm init -y

# Install Express 5 and core dependencies
npm install express@^5.0.0
npm install cors helmet morgan compression dotenv
npm install bcrypt jsonwebtoken express-rate-limit
npm install express-validator

# Install TypeScript and development dependencies
npm install -D typescript @types/node @types/express
npm install -D @types/cors @types/helmet @types/morgan
npm install -D @types/compression @types/bcrypt @types/jsonwebtoken
npm install -D @types/express-rate-limit

# Install linting and formatting tools
npm install -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin
npm install -D prettier eslint-config-prettier eslint-plugin-prettier
npm install -D @eslint/js typescript-eslint

# Install testing tools
npm install -D jest @types/jest ts-jest supertest @types/supertest

# Install development tools
npm install -D tsx nodemon concurrently cross-env

# Install additional production utilities
npm install winston express-async-errors http-status-codes
npm install -D @types/http-status-codes

Enter fullscreen mode Exit fullscreen mode

Project Structure

my-express-api/
├── src/
│   ├── controllers/         # Route handlers
│   ├── middleware/          # Custom middleware
│   ├── models/             # Data models/schemas
│   ├── routes/             # Route definitions
│   ├── services/           # Business logic
│   ├── types/              # TypeScript type definitions
│   ├── utils/              # Utility functions
│   ├── config/             # Configuration files
│   └── app.ts              # Express app setup
├── tests/                  # Test files
├── dist/                   # Compiled JavaScript (auto-generated)
├── docs/                   # API documentation
├── .env                    # Environment variables
├── .env.example           # Environment variables template
├── package.json
├── tsconfig.json
├── eslint.config.js
├── prettier.config.js
├── jest.config.js
├── docker-compose.yml
├── Dockerfile
└── README.md
Enter fullscreen mode Exit fullscreen mode

Top comments (0)