NestJS Project Structure
A scalable and maintainable folder structure for NestJS applications
File Structure
- src
- main.ts
- app.module.ts
- app.controller.ts
- app.service.ts
- modules
- users
- users.module.ts
- users.controller.ts
- users.service.ts
- dto
- entities
- repositories
- auth
- auth.module.ts
- auth.controller.ts
- auth.service.ts
- strategies
- guards
- common
- decorators
- filters
- guards
- interceptors
- pipes
- middleware
- config
- database.config.ts
- app.config.ts
- database
- migrations
- seeds
- test
- app.e2e-spec.ts
- jest-e2e.json
- package.json
- nest-cli.json
- tsconfig.json
- tsconfig.build.json
- .env
- .env.example
- README.md
Directory Structure Explanation
src/modules/
Organized feature modules following domain-driven design principles.
modules/users/repositories/
Repository pattern implementation for data access layer abstraction.
modules/auth/strategies/
Passport strategies for different authentication methods (JWT, Local, etc.).
src/common/pipes/
Validation pipes for transforming and validating input data.
src/common/middleware/
Custom middleware for request processing and cross-cutting concerns.
src/config/
Configuration modules for managing environment-specific settings.
config/database.config.ts
Database configuration including connection settings and TypeORM setup.
src/database/
Database-related files including migrations and seed data.
database/migrations/
Database migration files for version control of database schema.
test/
End-to-end tests and testing configuration for the application.