🌟 We are Open Source! Check out our repository on GitHub

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.