Initial Setup
Create project directory
mkdir my-express-api
cd my-express-api
# 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
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
Top comments (0)