Skip to content
ExponaBLOG
Series · Day 100 of 100

NestJS

  1. 01
    Why I use NestJS for serious Node backends: a deep dive
    Express gives you freedom. NestJS gives your team a shared structure.
  2. 02
    NestJS architecture in one picture: a step-by-step guide
    Modules, controllers and providers — the three building blocks.
  3. 03
    Structure NestJS projects by feature: a practical guide
    Folders by feature beat folders by type once you pass 20 files.
  4. 04
    Dependency injection in NestJS: best practices explained
    How the container resolves your providers — and the scopes that bite.
  5. 05
    Custom providers: useValue, useClass, useFactory in NestJS
    The escape hatches for anything that is not a simple class.
  6. 06
    The NestJS request lifecycle: what developers should know
    Know what runs, in which order, for every request.
  7. 07
    Validation with ValidationPipe: a practical NestJS guide
    Turn on global validation once and never trust raw input again.
  8. 08
    DTOs that protect your API: patterns, pitfalls and fixes
    Your DTO is a security boundary, not just a type.
  9. 09
    Zod as an alternative to class-validator for production
    One schema for validation and types, shared with your frontend.
  10. 10
    Typed, validated configuration: a practical NestJS guide
    Crash at startup, not at 3 AM when a variable is missing.
  11. 11
    Environment-specific configuration for NestJS developers
    Same code, different behavior — without if (env === 'prod') everywhere.
  12. 12
    Prisma with NestJS: the clean setup — a practical guide
    My default data layer for NestJS projects.
  13. 13
    Prisma connection management: what developers should know
    Connection pool exhaustion is the classic Prisma production bug.
  14. 14
    Prisma schema design tips: a NestJS guide for developers
    Schema decisions you will live with for years.
  15. 15
    Transactions in Prisma: a practical guide for developers
    All or nothing — the two ways Prisma does it.
  16. 16
    Prisma vs TypeORM vs Drizzle: what developers should know
    Choosing an ORM for NestJS in 2026.
  17. 17
    N+1 queries with Prisma: NestJS best practices explained
    include feels innocent until it runs in a loop.
  18. 18
    Cursor pagination with Prisma: a practical NestJS guide
    Fast pagination for infinite scroll and large tables.
  19. 19
    Soft delete with Prisma Client extensions for production
    Hide deleted rows everywhere without repeating where clauses.
  20. 20
    Multi-tenancy in NestJS: real-world lessons and examples
    How I isolate tenant data in a multi-tenant CRM.
  21. 21
    Request context with nestjs-cls: lessons from production
    Access the current user and tenant anywhere — without request scope.
  22. 22
    JWT authentication with Passport: lessons from production
    The standard NestJS auth setup, done properly.
  23. 23
    Guards, explained: what every NestJS developer should know
    Guards answer one question: can this request continue?
  24. 24
    Roles and permissions with decorators: a practical guide
    Fine-grained authorization that reads like documentation.
  25. 25
    Custom parameter decorators: what developers should know
    Clean controllers with @CurrentUser() instead of req.user everywhere.
  26. 26
    Refresh tokens in NestJS: a hands-on guide for engineers
    Long sessions without long-lived access tokens.
  27. 27
    Google login in NestJS: a practical guide for developers
    Social login with passport-google-oauth20.
  28. 28
    Exception filters for consistent errors, explained simply
    Every error in one predictable shape.
  29. 29
    Use Nest's built-in HTTP exceptions for NestJS developers
    Throw meaning, not status codes.
  30. 30
    Interceptors: logging, timing, transforms for production
    Cross-cutting concerns wrapped around every handler.
  31. 31
    Should you wrap every response in an envelope in NestJS
    { data, success, message } on every response — a debate worth having.
  32. 32
    Caching with Redis in NestJS: what developers should know
    Cache the expensive stuff and invalidate on purpose.
  33. 33
    Rate limiting with @nestjs/throttler: a practical guide
    Protect login and public endpoints in minutes.
  34. 34
    Background jobs with BullMQ: what developers should know
    Move slow work out of the request cycle.
  35. 35
    Retries and backoff done right: a practical NestJS guide
    A retry strategy is part of your API design.
  36. 36
    Scheduled tasks with @nestjs/schedule: a practical guide
    Cron jobs inside your NestJS app.
  37. 37
    Cron jobs with multiple instances for NestJS developers
    Three pods means your daily report emails go out three times.
  38. 38
    In-process events with EventEmitter for NestJS developers
    Decouple modules without a message broker.
  39. 39
    Domain events vs integration events for NestJS developers
    Not every event should leave your service.
  40. 40
    WebSockets with NestJS gateways: lessons from production
    Real-time features with Socket.IO and Nest DI.
  41. 41
    Scaling Socket.IO across instances for NestJS developers
    Two servers, one conversation — use the Redis adapter.
  42. 42
    NestJS microservices: transports — a step-by-step guide
    Same programming model over TCP, Redis, NATS, Kafka and more.
  43. 43
    Kafka consumers in NestJS: practical tips and trade-offs
    Event-driven services with @nestjs/microservices.
  44. 44
    Hybrid apps: HTTP plus microservices — a practical guide
    One NestJS app serving REST and consuming events.
  45. 45
    Message patterns vs event patterns for NestJS developers
    Request-response or fire-and-forget? Choose deliberately.
  46. 46
    CQRS with @nestjs/cqrs: a practical guide for developers
    Commands, queries and events with a built-in bus.
  47. 47
    Sagas in NestJS CQRS: a practical guide for developers
    Coordinate long-running processes with event streams.
  48. 48
    OpenAPI docs with @nestjs/swagger: a step-by-step guide
    API docs your frontend team will actually use.
  49. 49
    The Swagger CLI plugin: a practical guide for developers
    Stop writing @ApiProperty on every field.
  50. 50
    Unit testing NestJS services: what developers should know
    Fast tests with the TestingModule.