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)