Skip to content

πŸš€πŸŽ‰πŸ“š A feature-rich NestJS starter with built-in enterprise-grade architecture and popular libraries. Supports TypeScript, PostgreSQL/MySQL, TypeORM, JWT Authentication, Docker, and other essential features.

License

Notifications You must be signed in to change notification settings

netkosolution/nestjs-boilerplate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NestJS Boilerplate - Quick Start for Your API Project

A feature-rich and production-ready NestJS starter with built-in enterprise-grade architecture and popular libraries. Supports TypeScript, PostgreSQL/MySQL, TypeORM, JWT Authentication, Docker, and other essential features.

Features

  • πŸš€ Built with NestJS 10.x & Node.js 18+
  • πŸ“ TypeScript for type safety and better development experience
  • πŸ—οΈ Clean Architecture and Domain-Driven Design principles
  • πŸ” JWT Authentication & Role-based Authorization
  • πŸ” Sign in and sign up via email.
  • πŸ” Social sign in (Apple, Facebook, Google, Twitter).
  • πŸ” RBAC with custom Roles and Permissions
  • πŸ—ƒοΈ TypeORM with PostgreSQL integration
  • πŸ“Š Swagger API documentation
  • πŸ” Request validation using class-validator
  • 🎯 Unit & Integration testing setup with Jest
  • πŸ“ E2E testing with Supertest
  • πŸ”„ CI/CD pipeline with GitHub Actions
  • 🐳 Docker & Docker Compose configuration
  • πŸ“Š Winston Logger integration
  • πŸ” Error handling & logging middleware
  • πŸ“§ Mailer service integration
  • πŸ”„ Database migrations and seeders
  • πŸ“ ESLint & Prettier configuration
  • πŸ’Ύ Redis for caching
  • πŸ”„ Bull for queue management
  • πŸ“Š Health checks endpoints

Prerequisites

  • Node.js 18+
  • PostgreSQL
  • Redis
  • Docker (optional)

Getting Started

Installation

# Clone the repository git clone https://github.com/yourusername/nestjs-boilerplate.git # Install dependencies npm install

Configuration

  1. Copy .env.example to .env
cp .env.example .env
  1. Update environment variables in .env file

Running the app

# Development npm run start:dev # Production mode npm run start:prod # Using Docker docker-compose up

Running tests

# Unit tests npm run test # E2E tests npm run test:e2e # Test coverage npm run test:cov

Project Structure

src/ β”œβ”€β”€ config/ # Configuration files β”œβ”€β”€ core/ # Core modules, guards, decorators β”œβ”€β”€ modules/ # Feature modules β”‚ β”œβ”€β”€ auth/ β”‚ β”œβ”€β”€ users/ β”‚ └── ... β”œβ”€β”€ shared/ # Shared resources └── main.ts # Application entry point 

Auth Module

src/ └── modules/ └── auth/ β”œβ”€β”€ domain/ # Domain layer β”‚ β”œβ”€β”€ entities/ # Domain entities β”‚ β”œβ”€β”€ value-objects/ # Value objects β”‚ β”œβ”€β”€ repositories/ # Repository interfaces β”‚ └── services/ # Domain services β”‚ β”œβ”€β”€ infrastructure/ # Infrastructure layer β”‚ β”œβ”€β”€ persistence/ # Database related β”‚ β”‚ β”œβ”€β”€ entities/ # TypeORM entities β”‚ β”‚ β”œβ”€β”€ repositories/ # TypeORM repositories β”‚ β”‚ └── migrations/ # Database migrations β”‚ β”œβ”€β”€ services/ # External services implementation β”‚ └── security/ # Security related implementations β”‚ β”œβ”€β”€ interfaces/ # Interface layer β”‚ β”œβ”€β”€ http/ # HTTP controllers β”‚ β”‚ β”œβ”€β”€ controllers/ β”‚ β”‚ β”œβ”€β”€ middlewares/ β”‚ β”‚ β”œβ”€β”€ guards/ β”‚ β”‚ └── dtos/ β”‚ └── graphql/ # GraphQL resolvers (if needed) β”‚ β”œβ”€β”€ services/ # Application Services β”‚ β”œβ”€β”€ auth.service.ts β”‚ └── social-auth.service.ts β”‚ └── auth.module.ts # Module definition 

API Documentation

Once the application is running, you can access the Swagger documentation at:

http://localhost:3000/api/docs 

Database Migrations

# Generate migration npm run migration:generate -- src/modules/auth/infrastructure/persistence/migrations/CreateUsersTable # Run migrations npm run migration:run # Revert migrations npm run migration:revert

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

If you find this project useful, please give it a ⭐️ on GitHub!

Authors

  • NETKO Solution

Acknowledgments

  • NestJS Team for the amazing framework
  • The open-source community for inspiration and support

About

πŸš€πŸŽ‰πŸ“š A feature-rich NestJS starter with built-in enterprise-grade architecture and popular libraries. Supports TypeScript, PostgreSQL/MySQL, TypeORM, JWT Authentication, Docker, and other essential features.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published