Backend

Os 3 frameworks backend suportados: NestJS, Express e Fastify.

O backend e gerado em apps/api/ e roda na porta 3001 por padrao. Todos os backends usam TypeScript strict e vem com health check, CORS, Helmet e error handling.

NestJS

O framework mais completo, com arquitetura modular, decorators e injecao de dependencias. Recomendado para projetos SaaS complexos.

Estrutura gerada:

apps/api/
├── src/
│   ├── app.module.ts         # Modulo principal (auto-wired)
│   ├── app.controller.ts     # Controller com health check
│   ├── app.service.ts        # Service padrao
│   ├── main.ts               # Bootstrap + Swagger
│   ├── database/             # PrismaModule + PrismaService
│   ├── auth/                 # AuthModule, JwtStrategy, guards
│   ├── rbac/                 # RbacModule, RolesGuard, CASL
│   ├── billing/              # BillingModule, controller, service
│   └── ...
├── prisma/
│   └── schema.prisma
├── nest-cli.json
├── tsconfig.json
└── package.json

Como features se adaptam: Cada feature gera um Module, Controller e Service separados. O auto-wiring importa todos os modulos no AppModule automaticamente.

Scripts: dev (nest start --watch), build (nest build), start (node dist/main.js)

Express

Framework minimalista e flexivel. Cada feature gera middlewares e routers que sao registrados automaticamente no app.ts.

Estrutura gerada:

apps/api/
├── src/
│   ├── app.ts                # Express app (auto-wired)
│   ├── index.ts              # Server startup
│   ├── config/
│   │   └── index.ts          # Env config (port, cors, etc.)
│   ├── routes/
│   │   └── index.ts          # Router com health check
│   ├── middlewares/
│   │   ├── errorHandler.ts   # Error handler global
│   │   ├── rateLimiter.ts    # Rate limiting (se habilitado)
│   │   └── logger.ts         # Pino HTTP (se habilitado)
│   ├── auth/
│   │   ├── jwt.ts            # generateToken / verifyToken
│   │   ├── hash.ts           # bcrypt helpers
│   │   ├── auth.middleware.ts # Bearer token middleware
│   │   └── auth.routes.ts    # /login, /register
│   └── ...
├── tsconfig.json
└── package.json

Exemplo do app.ts gerado:

import express from 'express';
import cors from 'cors';
import helmet from 'helmet';
import { config } from './config/index.js';
import { router } from './routes/index.js';
import { authRouter } from './auth/auth.routes.js';
import { errorHandler } from './middlewares/errorHandler.js';

const app = express();

app.use(helmet());
app.use(cors({ origin: config.corsOrigin }));
app.use(express.json());

app.use('/api/auth', authRouter);
app.use('/api', router);

app.use(errorHandler);

export { app };

Scripts: dev (tsx watch src/index.ts), build (tsc), start (node dist/index.js)

Fastify

Framework de alta performance. Features sao registradas como plugins Fastify com fastify-plugin.

Estrutura gerada:

apps/api/
├── src/
│   ├── app.ts                # buildApp() function (auto-wired)
│   ├── index.ts              # Server startup
│   ├── config/
│   │   ├── index.ts          # Env config
│   │   └── logger.ts         # Pino config (se habilitado)
│   ├── routes/
│   │   └── index.ts          # registerRoutes com health check
│   ├── plugins/
│   │   ├── rateLimiter.ts    # @fastify/rate-limit (se habilitado)
│   │   └── swagger.ts        # @fastify/swagger (se habilitado)
│   ├── auth/
│   │   ├── jwt.ts            # generateToken / verifyToken
│   │   ├── hash.ts           # bcrypt helpers
│   │   ├── auth.hook.ts      # preHandler hook
│   │   └── auth.routes.ts    # Plugin de rotas
│   └── ...
├── tsconfig.json
└── package.json

Como features se adaptam: Cada feature gera um plugin Fastify que e registrado no buildApp(). Guards de autenticacao sao implementados como preHandler hooks.

Scripts: dev (tsx watch src/index.ts), build (tsc), start (node dist/index.js)