Crawler Summary

nestjs-starter answer-first brief

Production-ready NestJS boilerplate with JWT auth, PostgreSQL/Prisma, AWS S3/SES, Bull/Redis queues, Docker/K8s support, and MCP integration for AI capabilities NestJS Starter Boilerplate ๐Ÿš€ <div align="center"> $1 $1 </div> <p align="center"> A production-ready NestJS boilerplate with comprehensive features and best practices for building scalable, enterprise-grade APIs. </p> <p align="center"> <strong>โšก๏ธ Quick Start</strong> โ€ข <strong>๐Ÿณ Docker Ready</strong> โ€ข <strong>๐Ÿค– AI/MCP Integrated</strong> โ€ข <strong>โœ… Production Ready</strong> </p> --- ๐ŸŽฏ What's Included <table> < Capability contract not published. No trust telemetry is available yet. 37 GitHub stars reported by the source. Last updated 2/25/2026.

Freshness

Last checked 2/25/2026

Best For

nestjs-starter is best for general automation workflows where MCP compatibility matters.

Not Ideal For

Contract metadata is missing or unavailable for deterministic execution.

Evidence Sources Checked

editorial-content, GITHUB MCP, runtime-metrics, public facts pack

Claim this agent
Agent DossierGitHubSafety: 100/100

nestjs-starter

Production-ready NestJS boilerplate with JWT auth, PostgreSQL/Prisma, AWS S3/SES, Bull/Redis queues, Docker/K8s support, and MCP integration for AI capabilities NestJS Starter Boilerplate ๐Ÿš€ <div align="center"> $1 $1 </div> <p align="center"> A production-ready NestJS boilerplate with comprehensive features and best practices for building scalable, enterprise-grade APIs. </p> <p align="center"> <strong>โšก๏ธ Quick Start</strong> โ€ข <strong>๐Ÿณ Docker Ready</strong> โ€ข <strong>๐Ÿค– AI/MCP Integrated</strong> โ€ข <strong>โœ… Production Ready</strong> </p> --- ๐ŸŽฏ What's Included <table> <

MCPself-declared

Public facts

5

Change events

1

Artifacts

0

Freshness

Feb 25, 2026

Verifiededitorial-contentNo verified compatibility signals37 GitHub stars

Capability contract not published. No trust telemetry is available yet. 37 GitHub stars reported by the source. Last updated 2/25/2026.

37 GitHub starsTrust evidence available

Trust score

Unknown

Compatibility

MCP

Freshness

Feb 25, 2026

Vendor

Hmake98

Artifacts

0

Benchmarks

0

Last release

1.0.0

Executive Summary

Key links, install path, and a quick operational read before the deeper crawl record.

Verifiededitorial-content

Summary

Capability contract not published. No trust telemetry is available yet. 37 GitHub stars reported by the source. Last updated 2/25/2026.

Setup snapshot

git clone https://github.com/hmake98/nestjs-starter.git
  1. 1

    Setup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.

  2. 2

    Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Evidence Ledger

Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.

Verifiededitorial-content
Vendor (1)

Vendor

Hmake98

profilemedium
Observed Feb 25, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

MCP

contractmedium
Observed Feb 25, 2026Source linkProvenance
Adoption (1)

Adoption signal

37 GitHub stars

profilemedium
Observed Feb 25, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance
Integration (1)

Crawlable docs

6 indexed pages on the official domain

search_documentmedium
Observed Apr 15, 2026Source linkProvenance

Release & Crawl Timeline

Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.

Self-declaredagent-index

Artifacts Archive

Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.

Self-declaredGITHUB MCP

Extracted files

0

Examples

6

Snippets

0

Languages

typescript

Executable Examples

bash

# Clone the repository
git clone https://github.com/hmake98/nestjs-starter.git
cd nestjs-starter

# Install dependencies
yarn install

bash

# Copy environment template
cp .env.example .env

# Edit the environment file with your configuration
nano .env  # or use your preferred editor

bash

# Generate Prisma client
yarn generate

# Run database migrations
yarn migrate

# (Optional) Seed email templates
yarn seed:email

bash

# Development mode with hot reload
yarn dev

# Or using Docker Compose (recommended for full stack)
docker-compose up --build

bash

# Copy environment template
cp .env.example .env

# Generate JWT secrets
echo "AUTH_ACCESS_TOKEN_SECRET=$(openssl rand -base64 32)" >> .env
echo "AUTH_REFRESH_TOKEN_SECRET=$(openssl rand -base64 32)" >> .env

# Edit remaining values
nano .env

bash

# Start all services (app, database, redis)
docker-compose up --build

# Start only database and Redis (run app locally)
docker-compose up postgres redis

# Run in background
docker-compose up -d

# View logs
docker-compose logs -f

# Stop services
docker-compose down

Docs & README

Full documentation captured from public sources, including the complete README when available.

Self-declaredGITHUB MCP

Docs source

GITHUB MCP

Editorial quality

ready

Production-ready NestJS boilerplate with JWT auth, PostgreSQL/Prisma, AWS S3/SES, Bull/Redis queues, Docker/K8s support, and MCP integration for AI capabilities NestJS Starter Boilerplate ๐Ÿš€ <div align="center"> $1 $1 </div> <p align="center"> A production-ready NestJS boilerplate with comprehensive features and best practices for building scalable, enterprise-grade APIs. </p> <p align="center"> <strong>โšก๏ธ Quick Start</strong> โ€ข <strong>๐Ÿณ Docker Ready</strong> โ€ข <strong>๐Ÿค– AI/MCP Integrated</strong> โ€ข <strong>โœ… Production Ready</strong> </p> --- ๐ŸŽฏ What's Included <table> <

Full README

NestJS Starter Boilerplate ๐Ÿš€

<div align="center">

CodeQL Node.js Version Statements Branches Functions Lines License: MIT

</div> <p align="center"> A production-ready NestJS boilerplate with comprehensive features and best practices for building scalable, enterprise-grade APIs. </p> <p align="center"> <strong>โšก๏ธ Quick Start</strong> โ€ข <strong>๐Ÿณ Docker Ready</strong> โ€ข <strong>๐Ÿค– AI/MCP Integrated</strong> โ€ข <strong>โœ… Production Ready</strong> </p>

๐ŸŽฏ What's Included

<table> <tr> <td width="50%">

Core Features

  • โœ… JWT Authentication (Access/Refresh)
  • โœ… Role-Based Access Control (RBAC)
  • โœ… PostgreSQL + Prisma ORM
  • โœ… Redis Cache & Bull Queues
  • โœ… AWS S3 File Uploads
  • โœ… AWS SES Email Service
  • โœ… Swagger API Documentation
  • โœ… Health Checks & Monitoring
</td> <td width="50%">

Developer Experience

  • โœ… Docker & Docker Compose
  • โœ… GitHub Actions CI/CD
  • โœ… Jest Testing (90%+ Coverage)
  • โœ… ESLint + Prettier + Husky
  • โœ… Structured Logging (Pino)
  • โœ… Model Context Protocol (MCP)
  • โœ… i18n Multi-language Support
</td> </tr> </table>

๐Ÿ“‘ Table of Contents


โœ… Implementation Status

This boilerplate is fully production-ready with comprehensive features and best practices:

| Feature | Status | Details | |---------|--------|---------| | JWT Authentication & RBAC | โœ… Complete | Access/Refresh tokens, role-based access control | | PostgreSQL + Prisma ORM | โœ… Complete | Full schema with 3 models (User, Post, PostImage) | | Redis Cache & Bull Queues | โœ… Complete | Email queue processor, task scheduling | | AWS S3 & SES | โœ… Complete | File uploads, email templating | | Docker & Docker Compose | โœ… Complete | Multi-service setup with health checks | | GitHub Actions CI/CD | โœ… Complete | Automated testing, linting, badge generation | | Jest Testing | โœ… Complete | 18 test suites, 90%+ coverage | | MCP Integration | โœ… Complete | 8 tools, 10 resources, 5 prompts | | Swagger Documentation | โœ… Complete | Auto-generated API docs | | i18n Support | โœ… Complete | Multi-language message service |


โœจ Features

  • ๐Ÿ” Authentication & Authorization - JWT-based auth with access/refresh tokens
  • ๐Ÿ“š API Documentation - Auto-generated Swagger/OpenAPI documentation
  • ๐Ÿ—„๏ธ Database Integration - PostgreSQL with Prisma ORM
  • ๐Ÿ“ง Email Service - AWS SES integration with templating
  • ๐Ÿ“ File Upload - AWS S3 integration with pre-signed URLs
  • ๐Ÿ”„ Background Jobs - Bull queue with Redis for async processing
  • ๐Ÿค– MCP Integration - Model Context Protocol support for AI tools, resources, and prompts
  • ๐Ÿ“Š Logging - Structured logging with Pino
  • ๐Ÿงช Testing - Comprehensive unit tests with Jest (90%+ coverage)
  • ๐Ÿณ Containerization - Docker and Docker Compose ready
  • ๐Ÿš€ CI/CD - GitHub Actions workflows
  • ๐Ÿ” Code Quality - ESLint, Prettier, Husky pre-commit hooks
  • ๐Ÿ“ˆ Monitoring - Sentry integration for error tracking
  • ๐Ÿšฆ Rate Limiting - Built-in request throttling
  • ๐ŸŒ CORS - Configurable cross-origin resource sharing
  • ๐Ÿ”’ Security - Helmet, input validation, and sanitization
  • ๐Ÿ“ Internationalization - Multi-language support
  • ๐ŸŽฏ Health Checks - Application and database health endpoints

๐Ÿ› ๏ธ Tech Stack

  • Framework: NestJS 11.x
  • Language: TypeScript 5.9
  • Database: PostgreSQL with Prisma ORM 6.x
  • Cache/Queue: Redis with Bull 4.x
  • Authentication: JWT with Passport
  • File Storage: AWS S3
  • Email: AWS SES
  • Documentation: Swagger/OpenAPI
  • Testing: Jest 30.x with SWC
  • Logging: Pino (structured JSON logging)
  • Validation: class-validator & class-transformer
  • MCP Integration: @hmake98/nestjs-mcp for AI capabilities
  • Containerization: Docker & Docker Compose

๐Ÿš€ Quick Start

Prerequisites

  • Node.js >= 20.0.0
  • Yarn >= 1.22.0
  • Docker & Docker Compose (for containerized setup)
  • PostgreSQL (if running locally)
  • Redis (if running locally)

1. Clone and Install

# Clone the repository
git clone https://github.com/hmake98/nestjs-starter.git
cd nestjs-starter

# Install dependencies
yarn install

2. Environment Setup

# Copy environment template
cp .env.example .env

# Edit the environment file with your configuration
nano .env  # or use your preferred editor

3. Database Setup

# Generate Prisma client
yarn generate

# Run database migrations
yarn migrate

# (Optional) Seed email templates
yarn seed:email

4. Start Development Server

# Development mode with hot reload
yarn dev

# Or using Docker Compose (recommended for full stack)
docker-compose up --build

The API will be available at:

  • API: http://localhost:3001
  • Documentation: http://localhost:3001/docs
  • MCP Playground: http://localhost:3001/mcp/playground (for testing AI tools)

๐Ÿ“‹ Environment Configuration

Create a .env file based on .env.example template. All environment variables are documented with comments in the template file.

Application Settings

| Variable | Description | Default | Required | | ------------------- | ---------------------------------------- | ------------- | -------- | | APP_ENV | Environment mode | local | Yes | | APP_NAME | Application name | nestjs-starter | No | | APP_DEBUG | Enable debug mode | true | No | | APP_LOG_LEVEL | Logging level | debug | No | | APP_CORS_ORIGINS | Comma-separated allowed CORS origins | * | No |

HTTP Server Configuration

| Variable | Description | Default | Required | | -------------------------- | ----------------------------- | --------- | -------- | | HTTP_HOST | Server bind address | 0.0.0.0 | No | | HTTP_PORT | Server port | 3001 | No | | HTTP_VERSIONING_ENABLE | Enable API versioning | true | No | | HTTP_VERSION | Default API version | 1 | No |

Authentication & JWT

| Variable | Description | Example | Required | | --------------------------- | ---------------------------- | --------------------------------------- | -------- | | AUTH_ACCESS_TOKEN_SECRET | JWT access token secret | Generate with openssl rand -base64 32 | Yes | | AUTH_REFRESH_TOKEN_SECRET | JWT refresh token secret | Generate with openssl rand -base64 32 | Yes | | AUTH_ACCESS_TOKEN_EXP | Access token expiration | 1d (1 day) | No | | AUTH_REFRESH_TOKEN_EXP | Refresh token expiration | 7d (7 days) | No |

Database Configuration

| Variable | Description | Example | Required | | -------------- | ---------------------------- | ---------------------------------------------------- | -------- | | DATABASE_URL | PostgreSQL connection string | postgresql://user:pass@host:5432/db?schema=public | Yes |

AWS Configuration

| Variable | Description | Example | Required | | ----------------------------- | -------------------------------- | ------------- | ------------------ | | AWS_ACCESS_KEY | AWS IAM access key | - | For AWS features | | AWS_SECRET_KEY | AWS IAM secret key | - | For AWS features | | AWS_S3_REGION | S3 bucket region | us-east-1 | For S3 uploads | | AWS_S3_BUCKET | S3 bucket name | my-bucket | For S3 uploads | | AWS_S3_PRESIGN_LINK_EXPIRES | Pre-signed URL expiration (sec) | 1200 | No | | AWS_SES_REGION | SES service region | us-east-1 | For email service | | AWS_SES_SOURCE_EMAIL | Verified sender email | no-reply@example.com | For email service |

Redis Configuration

| Variable | Description | Default | Required | | ------------------ | --------------------- | ----------- | -------- | | REDIS_HOST | Redis host | redis | Yes | | REDIS_PORT | Redis port | 6379 | No | | REDIS_PASSWORD | Redis password | - | No | | REDIS_ENABLE_TLS | Enable TLS for Redis | false | No |

Model Context Protocol (MCP)

| Variable | Description | Default | Required | | --------------------- | --------------------- | -------------------- | -------- | | MCP_SERVER_NAME | MCP server name | nestjs-starter-mcp | No | | MCP_SERVER_VERSION | MCP server version | 1.0.0 | No | | MCP_LOG_LEVEL | MCP logging level | info | No |

Error Tracking

| Variable | Description | Example | Required | | ------------- | -------------------------- | ------- | -------- | | SENTRY_DSN | Sentry error tracking DSN | - | No |

Quick Setup

# Copy environment template
cp .env.example .env

# Generate JWT secrets
echo "AUTH_ACCESS_TOKEN_SECRET=$(openssl rand -base64 32)" >> .env
echo "AUTH_REFRESH_TOKEN_SECRET=$(openssl rand -base64 32)" >> .env

# Edit remaining values
nano .env

๐Ÿณ Docker Setup

Development with Docker Compose

# Start all services (app, database, redis)
docker-compose up --build

# Start only database and Redis (run app locally)
docker-compose up postgres redis

# Run in background
docker-compose up -d

# View logs
docker-compose logs -f

# Stop services
docker-compose down

Production Docker Build

# Build production image (uses ci/Dockerfile for production)
docker build -f ci/Dockerfile -t nestjs-starter:latest .

# Run production container
docker run -p 3001:3001 --env-file .env nestjs-starter:latest

๐Ÿ“š API Documentation

Swagger UI

Visit /docs endpoint when the server is running for interactive API documentation.

Authentication

The API uses JWT Bearer token authentication:

# Login to get tokens
curl -X POST http://localhost:3001/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "password"}'

# Use access token in requests
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  http://localhost:3001/v1/user/profile

Available API Endpoints

Authentication (Public)

  • POST /v1/auth/login - User login (email, password)
  • POST /v1/auth/signup - User registration
  • GET /v1/auth/refresh-token - Refresh access token

User Management (Protected)

  • GET /v1/user/profile - Get current user profile
  • PUT /v1/user - Update current user profile
  • DELETE /v1/admin/user/:id - Delete user (Admin only)

Post Management (Protected)

  • POST /v1/post - Create post
  • GET /v1/post - List posts with pagination
  • PUT /v1/post/:id - Update post (Author only)
  • DELETE /v1/post/:id - Delete post (Author only)

Health Check (Public)

  • GET /health - Application health status

๐Ÿค– Model Context Protocol (MCP) Integration

This boilerplate includes built-in support for the Model Context Protocol (MCP), enabling AI-powered features through tools, resources, and prompts.

What is MCP?

MCP is a standardized protocol for integrating AI capabilities into applications. It allows you to:

  • Tools: Execute functions through AI (e.g., calculations, data transformations)
  • Resources: Provide data to AI (e.g., documentation, configuration)
  • Prompts: Template AI interactions (e.g., code reviews, documentation generation)

MCP Playground

Access the interactive MCP playground at http://localhost:3001/mcp/playground to:

  • Test all available tools, resources, and prompts
  • View auto-generated schemas
  • Execute operations with real-time feedback

Built-in Examples

The boilerplate includes example MCP implementations in src/common/mcp/services/:

Tools (8 implemented)

  • Math Operations: add, subtract, multiply, divide
  • Text Utilities: toUpperCase, toLowerCase
  • System Tools: generateUUID, getCurrentTimestamp

Resources (10 implemented)

  • API Documentation: docs://api/overview, docs://api/auth, docs://api/user, docs://api/post
  • Server Status: status://server
  • Configuration: config://nodeVersion, config://platform, config://environment, config://port

Prompts (5 implemented)

  • code-review - Review code for best practices
  • generate-api-docs - Generate API documentation
  • generate-nestjs-service - Generate NestJS service with CRUD
  • optimize-query - Get query optimization suggestions
  • generate-unit-tests - Generate Jest test cases

Prompts (AI Templates)

// Code assistance prompts
- code-review        // Review code for best practices
- bug-analysis       // Analyze and suggest bug fixes
- documentation      // Generate documentation
- test-generation    // Generate unit tests

Creating Custom MCP Services

1. Create a Tool Service

// src/modules/your-module/services/mcp.tools.service.ts
import { Injectable } from '@nestjs/common';
import { MCPTool, MCPToolWithParams } from '@hmake98/nestjs-mcp';

@Injectable()
export class YourMCPToolsService {
    // Simple tool (auto-infers parameters from TypeScript types)
    @MCPTool({
        name: 'customTool',
        description: 'Your custom tool description',
    })
    async customTool(params: { input: string }): Promise<string> {
        // Your business logic here
        return `Processed: ${params.input}`;
    }

    // Tool with explicit parameter definitions
    @MCPToolWithParams({
        name: 'complexTool',
        description: 'A more complex tool with explicit params',
        parameters: [
            {
                name: 'userId',
                type: 'string',
                description: 'The user ID to process',
                required: true,
            },
            {
                name: 'options',
                type: 'object',
                description: 'Additional options',
                required: false,
            },
        ],
    })
    async complexTool(params: { userId: string; options?: any }): Promise<any> {
        // Your complex business logic
        return { success: true, userId: params.userId };
    }
}

2. Create a Resource Service

// src/modules/your-module/services/mcp.resources.service.ts
import { Injectable } from '@nestjs/common';
import { MCPResource } from '@hmake98/nestjs-mcp';

@Injectable()
export class YourMCPResourcesService {
    @MCPResource({
        uri: 'data://your-resource',
        name: 'Your Resource',
        description: 'Provides access to your data',
        mimeType: 'application/json',
    })
    async getResource() {
        return {
            uri: 'data://your-resource',
            mimeType: 'application/json',
            text: JSON.stringify({
                data: 'your data',
                timestamp: new Date().toISOString()
            }),
        };
    }
}

3. Create a Prompt Service

// src/modules/your-module/services/mcp.prompts.service.ts
import { Injectable } from '@nestjs/common';
import { MCPPrompt } from '@hmake98/nestjs-mcp';

@Injectable()
export class YourMCPPromptsService {
    @MCPPrompt({
        name: 'customPrompt',
        description: 'Custom AI prompt template',
        arguments: [
            {
                name: 'context',
                description: 'Context for the prompt',
                required: true,
            },
        ],
    })
    async customPrompt(args: { context: string }) {
        return {
            messages: [
                {
                    role: 'user',
                    content: {
                        type: 'text',
                        text: `Given the context: ${args.context}, please provide analysis.`,
                    },
                },
            ],
        };
    }
}

4. Register in Module

// src/modules/your-module/your-module.module.ts
import { Module } from '@nestjs/common';
import { YourMCPToolsService } from './services/mcp.tools.service';
import { YourMCPResourcesService } from './services/mcp.resources.service';
import { YourMCPPromptsService } from './services/mcp.prompts.service';

@Module({
    providers: [
        YourMCPToolsService,
        YourMCPResourcesService,
        YourMCPPromptsService,
    ],
    exports: [
        YourMCPToolsService,
        YourMCPResourcesService,
        YourMCPPromptsService,
    ],
})
export class YourModule {}

MCP services are auto-discovered - no additional registration needed! Just create the services with decorators and they'll automatically appear in the MCP playground.

Configuration

MCP settings can be configured via environment variables:

MCP_SERVER_NAME="your-mcp-server"
MCP_SERVER_VERSION="1.0.0"
MCP_LOG_LEVEL="info"  # debug, info, warn, error

Learn More

๐Ÿงช Testing

The project uses Jest with SWC for fast test execution. Tests are located in the test/ directory, mirroring the src/ structure.

# Run all tests
yarn test

# Run tests in watch mode (requires manual setup)
jest --config test/jest.json --watch

# Debug tests
yarn test:debug

Test Coverage (18 test suites with 90%+ coverage threshold):

  • test/common/ - 11 test suites for shared services (auth, AWS, cache, database, file, helpers, MCP, message)
  • test/modules/ - 2 test suites for feature modules (user, post)
  • test/workers/ - 1 test suite for email processor
  • test/mcp/ - 3 test suites for MCP services (tools, resources, prompts)
  • test/mocks/ - Mock data generators using @faker-js/faker

Example Test:

import { Test, TestingModule } from '@nestjs/testing';
import { UserService } from 'src/modules/user/services/user.service';

describe('UserService', () => {
    let service: UserService;

    beforeEach(async () => {
        const module: TestingModule = await Test.createTestingModule({
            providers: [UserService, /* mock dependencies */],
        }).compile();

        service = module.get<UserService>(UserService);
    });

    it('should be defined', () => {
        expect(service).toBeDefined();
    });
});

๐Ÿ“ Project Structure

src/
โ”œโ”€โ”€ app/                          # Application module and health checks
โ”œโ”€โ”€ common/                       # Shared modules (14 services)
โ”‚   โ”œโ”€โ”€ auth/                    # JWT authentication with strategies
โ”‚   โ”œโ”€โ”€ aws/                     # AWS S3 & SES services
โ”‚   โ”œโ”€โ”€ cache/                   # Redis cache management
โ”‚   โ”œโ”€โ”€ config/                  # Configuration management
โ”‚   โ”œโ”€โ”€ database/                # Prisma ORM integration
โ”‚   โ”œโ”€โ”€ doc/                     # Documentation decorators
โ”‚   โ”œโ”€โ”€ file/                    # File upload handling
โ”‚   โ”œโ”€โ”€ helper/                  # Email, encryption, pagination utilities
โ”‚   โ”œโ”€โ”€ logger/                  # Pino structured logging
โ”‚   โ”œโ”€โ”€ mcp/                     # Model Context Protocol (AI integration)
โ”‚   โ”‚   โ”œโ”€โ”€ services/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ mcp.tools.service.ts        # Math, text, system tools
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ mcp.resources.service.ts    # API docs, config resources
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ mcp.prompts.service.ts      # AI prompt templates
โ”‚   โ”‚   โ””โ”€โ”€ mcp.module.ts
โ”‚   โ”œโ”€โ”€ message/                 # i18n message service
โ”‚   โ”œโ”€โ”€ request/                 # Guards, decorators, middleware
โ”‚   โ””โ”€โ”€ response/                # Response formatting, error filters
โ”œโ”€โ”€ languages/                   # i18n translation files
โ”œโ”€โ”€ migrations/                  # Database migrations & seeders
โ”œโ”€โ”€ modules/                     # Feature modules (2 implemented)
โ”‚   โ”œโ”€โ”€ post/                    # Post CRUD operations
โ”‚   โ”‚   โ”œโ”€โ”€ controllers/         # API endpoints
โ”‚   โ”‚   โ”œโ”€โ”€ services/            # Business logic
โ”‚   โ”‚   โ””โ”€โ”€ dto/                 # Data transfer objects
โ”‚   โ””โ”€โ”€ user/                    # User management & authentication
โ”‚       โ”œโ”€โ”€ controllers/         # API endpoints (public & admin)
โ”‚       โ”œโ”€โ”€ services/            # Business logic
โ”‚       โ””โ”€โ”€ dto/                 # Data transfer objects
โ””โ”€โ”€ workers/                     # Background job processors
    โ”œโ”€โ”€ processors/              # Bull queue processors (email)
    โ””โ”€โ”€ schedulers/              # Cron jobs (midnight scheduler)

๐Ÿ”ง Development Workflow

Code Quality

# Lint code
yarn lint

# Format code
yarn format

# Type checking
yarn build

Database Operations

# Generate Prisma client after schema changes
yarn generate

# Create new migration
yarn migrate

# Deploy migrations to production
yarn migrate:prod

# Open Prisma Studio
yarn studio

Background Jobs

# Seed email templates
yarn seed:email

# Remove email templates
yarn rollback:email

๐Ÿš€ Deployment

Docker Production (Recommended)

# Build and tag production image
docker build -f ci/Dockerfile -t your-registry/nestjs-starter:v1.0.0 .

# Push to registry
docker push your-registry/nestjs-starter:v1.0.0

# Run with Docker
docker run -d -p 3001:3001 --env-file .env --name nestjs-app your-registry/nestjs-starter:v1.0.0

# Or deploy with Docker Compose (full stack)
docker-compose up -d --build

Cloud Deployment Examples

AWS ECS

# 1. Create ECR repository
aws ecr create-repository --repository-name nestjs-starter --region us-east-1

# 2. Authenticate Docker to ECR
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <account-id>.dkr.ecr.us-east-1.amazonaws.com

# 3. Build and push
docker build -f ci/Dockerfile -t nestjs-starter:latest .
docker tag nestjs-starter:latest <account-id>.dkr.ecr.us-east-1.amazonaws.com/nestjs-starter:latest
docker push <account-id>.dkr.ecr.us-east-1.amazonaws.com/nestjs-starter:latest

# 4. Create ECS task definition and service through AWS Console or CLI

Google Cloud Run

# 1. Build and submit to Google Container Registry
gcloud builds submit --tag gcr.io/PROJECT-ID/nestjs-starter

# 2. Deploy to Cloud Run
gcloud run deploy nestjs-starter \
  --image gcr.io/PROJECT-ID/nestjs-starter \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated \
  --set-env-vars "APP_ENV=production" \
  --port 3001

DigitalOcean App Platform

# 1. Push to Docker Hub or DigitalOcean Container Registry
docker build -f ci/Dockerfile -t your-dockerhub/nestjs-starter:latest .
docker push your-dockerhub/nestjs-starter:latest

# 2. Create app via DigitalOcean Console
#    - Select Docker Hub as source
#    - Configure environment variables
#    - Add PostgreSQL and Redis managed databases

Heroku

# 1. Login to Heroku
heroku login
heroku container:login

# 2. Create app
heroku create your-app-name

# 3. Add PostgreSQL and Redis addons
heroku addons:create heroku-postgresql:mini
heroku addons:create heroku-redis:mini

# 4. Build and push
docker build -f ci/Dockerfile -t registry.heroku.com/your-app-name/web .
docker push registry.heroku.com/your-app-name/web

# 5. Release
heroku container:release web -a your-app-name

๐Ÿ” Security Best Practices

  1. Environment Variables: Never commit sensitive data - use .env.example as template only
  2. JWT Secrets: Use strong, randomly generated secrets (minimum 32 characters)
    openssl rand -base64 32
    
  3. Global Guards: All routes are protected by default (JWT, Roles, Throttler)
  4. Password Hashing: Uses Argon2 for secure password storage
  5. Rate Limiting: Throttler guard prevents brute force attacks
  6. CORS: Configure APP_CORS_ORIGINS to restrict allowed domains
  7. Helmet: Security headers configured automatically
  8. Input Validation: class-validator validates all DTOs automatically
  9. Database: Use connection pooling, read replicas, and prepared statements (Prisma handles this)
  10. HTTPS: Always use TLS in production
  11. Monitoring: Sentry integration for error tracking and monitoring
  12. Soft Deletes: Models support soft deletion to prevent data loss

๐Ÿ”ง Troubleshooting

Common Issues and Solutions

Database Connection Issues

Problem: Error: Can't reach database server

# Check if PostgreSQL is running
docker-compose ps postgres
# or
kubectl get pods -n nestjs-starter | grep postgres

# Check DATABASE_URL format
# Correct: postgresql://username:password@host:5432/database?schema=public

# For Docker: use service name as host
DATABASE_URL="postgresql://postgres:password@postgres:5432/db"

# For local: use localhost
DATABASE_URL="postgresql://postgres:password@localhost:5432/db"

# For Kubernetes: use service name
DATABASE_URL="postgresql://postgres:password@postgres.nestjs-starter.svc.cluster.local:5432/db"

Redis Connection Issues

Problem: Error: Redis connection refused

# Check if Redis is running
docker-compose ps redis
# or
kubectl get pods -n nestjs-starter | grep redis

# Verify REDIS_HOST matches your setup
# Docker: REDIS_HOST=redis
# Local: REDIS_HOST=localhost
# K8s: REDIS_HOST=redis.nestjs-starter.svc.cluster.local

Prisma Migration Errors

Problem: Migration failed or Schema is out of sync

# Reset database (โš ๏ธ DESTRUCTIVE - development only)
docker-compose down -v
docker-compose up -d postgres redis
yarn generate
yarn migrate

# For production, run migrations explicitly
yarn migrate:prod

# If stuck, check migration status
npx prisma migrate status

Port Already in Use

Problem: Error: listen EADDRINUSE: address already in use :::3001

# Find process using the port (macOS/Linux)
lsof -i :3001

# Kill the process
kill -9 <PID>

# Or use a different port
HTTP_PORT=3002 yarn dev

Docker Build Fails

Problem: ERROR [builder X/Y] RUN yarn install --frozen-lockfile

# Clear Docker build cache
docker builder prune -af

# Rebuild without cache
docker-compose build --no-cache

# Check Docker resources (ensure enough memory/disk)
docker system df
docker system prune

JWT Token Issues

Problem: Unauthorized or Invalid token

# Ensure secrets are properly set
echo $AUTH_ACCESS_TOKEN_SECRET
echo $AUTH_REFRESH_TOKEN_SECRET

# Secrets must be the same across restarts
# Use strong random values (min 32 characters)
openssl rand -base64 32

# Check token expiration settings
AUTH_ACCESS_TOKEN_EXP=1d   # 1 day
AUTH_REFRESH_TOKEN_EXP=7d  # 7 days

AWS S3/SES Integration Issues

Problem: AccessDenied or InvalidAccessKeyId

# Verify AWS credentials
aws configure list
aws sts get-caller-identity

# Check IAM permissions for S3
# Required: s3:PutObject, s3:GetObject, s3:DeleteObject

# Check IAM permissions for SES
# Required: ses:SendEmail, ses:SendRawEmail

# Verify email is verified in SES (sandbox mode)
aws ses list-verified-email-addresses

# Check S3 bucket exists and region matches
aws s3 ls s3://your-bucket-name --region us-east-1

Tests Failing

Problem: Tests fail unexpectedly

# Clear test cache
yarn test --clearCache

# Run tests with verbose output
yarn test --verbose

# Run specific test file
yarn test --testPathPattern=user.service.spec.ts

# Check for missing mocks
# Ensure all external dependencies are properly mocked

TypeScript Compilation Errors

Problem: error TS2307: Cannot find module

# Clear build cache and reinstall
rm -rf dist node_modules yarn.lock
yarn install
yarn build

# Regenerate Prisma client
yarn generate

# Check tsconfig.json paths configuration

Memory/Performance Issues

Problem: Application crashes or runs slowly

# Check memory usage
docker stats

# Increase Node.js memory limit
NODE_OPTIONS="--max-old-space-size=4096" yarn start

# Enable garbage collection logs
NODE_OPTIONS="--trace-gc" yarn dev

# Check for memory leaks in production
# Use clinic.js or node --inspect

Kubernetes Pod CrashLoopBackOff

Problem: Pod keeps restarting

# Check pod logs
kubectl logs -f <pod-name> -n nestjs-starter
kubectl logs <pod-name> --previous -n nestjs-starter

# Describe pod for events
kubectl describe pod <pod-name> -n nestjs-starter

# Common causes:
# 1. Missing environment variables
# 2. Database not ready (add init containers)
# 3. Health check failing too quickly (adjust liveness/readiness probes)
# 4. Insufficient resources (increase limits)

# Check events
kubectl get events -n nestjs-starter --sort-by='.lastTimestamp'

Email Not Sending (SES)

Problem: Emails not being sent

# Check SES sandbox mode
# In sandbox, you can only send to verified emails

# Verify sender email
aws ses verify-email-identity --email-address your-email@domain.com

# Check SES sending quota
aws ses get-send-quota

# Check email queue (Bull)
# Visit Bull Board or check Redis
redis-cli KEYS "bull:email:*"

# Check worker logs
docker-compose logs worker

Getting Help

If you encounter issues not covered here:

  1. Check Logs: Always start with application logs

    # Docker
    docker-compose logs -f app
    
    # Kubernetes
    kubectl logs -f deployment/nestjs-app -n nestjs-starter
    
  2. Enable Debug Mode:

    APP_DEBUG=true
    APP_LOG_LEVEL=debug
    
  3. Search Issues: Check GitHub Issues

  4. Create an Issue: Provide:

    • Error message
    • Steps to reproduce
    • Environment (Node version, OS, Docker/K8s)
    • Relevant logs

๐Ÿค Contributing

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

Development Guidelines

  • Follow TypeScript and ESLint rules
  • Write tests for new features
  • Update documentation when needed
  • Use conventional commit messages
  • Ensure all tests pass before submitting PR

๐Ÿ“„ Scripts Reference

| Script | Description | | --------------- | ---------------------------------------- | | yarn dev | Start development server with hot reload | | yarn build | Build for production | | yarn start | Start production server | | yarn test | Run unit tests | | yarn lint | Lint and fix code | | yarn format | Format code with Prettier | | yarn generate | Generate Prisma client | | yarn migrate | Run database migrations | | yarn studio | Open Prisma Studio |

๐Ÿ”— Useful Links

๐Ÿ“ License

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

๐Ÿ‘จโ€๐Ÿ’ป Author

Harsh Makwana

๐Ÿ™ Support

If this project helped you, please consider giving it a โญ๏ธ!


Happy Coding! ๐ŸŽ‰

Contract & API

Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.

MissingGITHUB MCP

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

MCP: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
curl -s "https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/contract"
curl -s "https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/trust"

Reliability & Benchmarks

Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.

Missingruntime-metrics

Trust signals

Handshake

UNKNOWN

Confidence

unknown

Attempts 30d

unknown

Fallback rate

unknown

Runtime metrics

Observed P50

unknown

Observed P95

unknown

Rate limit

unknown

Estimated cost

unknown

Do not use if

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Media & Demo

Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.

Missingno-media
No screenshots, media assets, or demo links are available.

Related Agents

Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.

Self-declaredprotocol-neighbors
GITLAB_AI_CATALOGgitlab-mcp

Rank

83

A Model Context Protocol (MCP) server for GitLab

Traction

No public download signal

Freshness

Updated 2d ago

MCP
GITLAB_PUBLIC_PROJECTSgitlab-mcp

Rank

80

A Model Context Protocol (MCP) server for GitLab

Traction

No public download signal

Freshness

Updated 2d ago

MCP
GITLAB_AI_CATALOGrmcp-openapi

Rank

74

Expose OpenAPI definition endpoints as MCP tools using the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)

Traction

No public download signal

Freshness

Updated 2d ago

MCP
GITLAB_AI_CATALOGrmcp-actix-web

Rank

72

An actix_web backend for the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)

Traction

No public download signal

Freshness

Updated 2d ago

MCP
Machine Appendix

Contract JSON

{
  "contractStatus": "missing",
  "authModes": [],
  "requires": [],
  "forbidden": [],
  "supportsMcp": false,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": null,
  "outputSchemaRef": null,
  "dataRegion": null,
  "contractUpdatedAt": null,
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/snapshot",
    "contractUrl": "https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/contract",
    "trustUrl": "https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/trust"
  },
  "curlExamples": [
    "curl -s \"https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/snapshot\"",
    "curl -s \"https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/contract\"",
    "curl -s \"https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "MCP"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_MCP",
      "generatedAt": "2026-04-16T23:59:29.706Z"
    }
  },
  "retryPolicy": {
    "maxAttempts": 3,
    "backoffMs": [
      500,
      1500,
      3500
    ],
    "retryableConditions": [
      "HTTP_429",
      "HTTP_503",
      "NETWORK_TIMEOUT"
    ]
  }
}

Trust JSON

{
  "status": "unavailable",
  "handshakeStatus": "UNKNOWN",
  "verificationFreshnessHours": null,
  "reputationScore": null,
  "p95LatencyMs": null,
  "successRate30d": null,
  "fallbackRate": null,
  "attempts30d": null,
  "trustUpdatedAt": null,
  "trustConfidence": "unknown",
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Capability Matrix

{
  "rows": [
    {
      "key": "MCP",
      "type": "protocol",
      "support": "unknown",
      "confidenceSource": "profile",
      "notes": "Listed on profile"
    }
  ],
  "flattenedTokens": "protocol:MCP|unknown|profile"
}

Facts JSON

[
  {
    "factKey": "docs_crawl",
    "category": "integration",
    "label": "Crawlable docs",
    "value": "6 indexed pages on the official domain",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  },
  {
    "factKey": "vendor",
    "category": "vendor",
    "label": "Vendor",
    "value": "Hmake98",
    "href": "https://github.com/hmake98/nestjs-starter",
    "sourceUrl": "https://github.com/hmake98/nestjs-starter",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-02-25T03:00:10.096Z",
    "isPublic": true
  },
  {
    "factKey": "protocols",
    "category": "compatibility",
    "label": "Protocol compatibility",
    "value": "MCP",
    "href": "https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/contract",
    "sourceUrl": "https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/contract",
    "sourceType": "contract",
    "confidence": "medium",
    "observedAt": "2026-02-25T03:00:10.096Z",
    "isPublic": true
  },
  {
    "factKey": "traction",
    "category": "adoption",
    "label": "Adoption signal",
    "value": "37 GitHub stars",
    "href": "https://github.com/hmake98/nestjs-starter",
    "sourceUrl": "https://github.com/hmake98/nestjs-starter",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-02-25T03:00:10.096Z",
    "isPublic": true
  },
  {
    "factKey": "handshake_status",
    "category": "security",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "href": "https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/trust",
    "sourceUrl": "https://xpersona.co/api/v1/agents/mcp-hmake98-nestjs-starter/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true
  }
]

Change Events JSON

[
  {
    "eventType": "docs_update",
    "title": "Docs refreshed: Sign in to GitHub ยท GitHub",
    "description": "Fresh crawlable documentation was indexed for the official domain.",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  }
]

Sponsored

Ads related to nestjs-starter and adjacent AI workflows.