A comprehensive enterprise-grade NestJS application template with best practices for building scalable and maintainable backend applications.
- Modular Architecture: Well-organized code structure following NestJS best practices
- Authentication & Authorization: JWT-based authentication with role-based access control
- Database Integration: TypeORM with MySQL support
- API Documentation: Swagger/OpenAPI integration
- Internationalization (i18n): Multi-language support
- Environment Configuration: Support for multiple environments (development, test, staging, production)
- Validation: Request validation using class-validator
- Error Handling: Centralized error handling with standardized responses
- Logging: Structured logging with Winston
- Testing: Unit and E2E testing setup
- Docker Support: Containerization with Docker and Docker Compose
- CI/CD: GitHub Actions workflow for continuous integration and deployment
/src
/app # Application core
/modules # Business modules
/user # User module
/auth # Authentication module
/common # Shared components
/constants # Constants
/decorators # Custom decorators
/dto # Data Transfer Objects
/entities # Database entities
/enums # Enumerations
/exceptions # Custom exceptions
/filters # Exception filters
/guards # Guards
/interfaces # Interfaces
/middlewares # Middlewares
/pipes # Validation pipes
/utils # Utility functions
/config # Configuration
/database # Database configuration
/swagger # API documentation configuration
/envs # Environment-specific configurations
/i18n # Internationalization
/migrations # Database migrations
- Node.js (v18 or later)
- pnpm
- MySQL
- Docker & Docker Compose (optional)
# Install dependencies
pnpm install
# Run in development mode
pnpm run start:dev
# Run unit tests
pnpm run test
# Run e2e tests
pnpm run test:e2e
# Test coverage
pnpm run test:cov
# Build the application
pnpm run build
# Run in production mode
pnpm run start:prod
# Build and start containers
pnpm run docker:build
pnpm run docker:up
# Stop containers
pnpm run docker:down
# View logs
pnpm run docker:logs
# Generate a migration
pnpm run migration:generate migration-name
# Run migrations
pnpm run migration:run
# Revert last migration
pnpm run migration:revert
The application supports multiple environments:
- Development:
.env.development
- Test:
.env.test
- Staging:
.env.staging
- Production:
.env.production
Once the application is running, you can access the Swagger documentation at:
http://localhost:3000/api/docs
MIT