NestJS plus Prisma is my default for typed Node APIs. Here is the setup I reuse.

Project Structure

One module per domain, a shared Prisma module, and DTOs validated with class-validator.

Global Validation Pipe

Enable it once in main.ts with whitelist and transform turned on.

Pagination Pattern

Cursor pagination with take/skip guards keeps large tables fast.

Testing

Spin up the module with an isolated test database per suite.