# Nestjs Clean Typescript

> Clean NestJS API development with TypeScript following SOLID principles, modular architecture, an…

Clean NestJS API development with TypeScript following SOLID principles, modular architecture, and comprehensive testing practices.

- Page: https://ss33.ai/skills/mindrally/nestjs-clean-typescript-15833213316
- Publisher: mindrally
- Category: [Software Development](https://ss33.ai/skills/category/software-development-t44z8z) › [APIs & backend](https://ss33.ai/skills/category/software-development-t44z8z/apis-and-backend-t0x840)
- License: Apache-2.0
- Source: https://github.com/mindrally/skills/blob/7682ca77710e0971eab4e0ae5dddfa281aea0ba5/nestjs-clean-typescript/SKILL.md

## Skill

SKILL.md: https://ss33.ai/api/v1/ss33/download/mindrally/nestjs-clean-typescript-15833213316

# NestJS Clean TypeScript

Guidelines by Alberto Basalo for developing clean NestJS APIs using TypeScript. These rules emphasize strong typing, clean code principles, and architectural best practices.

## TypeScript General Principles

- Always declare the type of each variable and function (parameters and return value)
- Avoid using any; create necessary types instead
- Use JSDoc for public classes and methods
- One export per file

## Naming Conventions

- PascalCase for classes
- camelCase for variables and functions
- kebab-case for files and directories
- UPPERCASE for environment variables
- Boolean variables use prefixes: isX, hasX, canX

## Function Design

- Write short functions with a single purpose. Less than 20 instructions
- Use early returns to avoid nesting
- Apply RO-RO pattern: pass objects for multiple parameters, return objects for results

## Data and Classes

- Prefer immutability for data with readonly and as const
- Follow SOLID principles
- Classes should have:
  - Less than 200 instructions
  - Fewer than 10 public methods
  - Fewer than 10 properties

## NestJS Specific Guidelines

- Use modular architecture with one module per domain/route
- Use MikroORM entities for persistence
- One service per entity
- DTOs validated with class-validator
- Global filters, middlewares, guards, and interceptors in core module

## Testing

- Use Jest framework
- Follow Arrange-Act-Assert convention
- Write unit tests for each public function
- Include end-to-end tests per API module
