🚀 Cap 06: Stack Enterprise TypeScript: NestJS (Clean Architecture) e Next.js App Router (SSR/RSC) - Exemplos Práticos
Código executável completo demonstrando a integração de sistemas Full Stack.
🗺️ Fluxo de Integração
flowchart TD
NEXT["Next.js 14+ (App Router, Server Components & Streaming)"]
NEXT -->|Server-to-Server Fetch| NEST["NestJS Backend (Modules, Controllers, Providers, Guards)"]
NEST --> TYPEORM["TypeORM / Prisma + PostgreSQL"]
style NEXT fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style NEST fill:#ffebee,stroke:#f44336,stroke-width:2px
style TYPEORM fill:#e8f5e9,stroke:#4caf50,stroke-width:1px
📄 Código de Demonstração (produtos.service.ts)
// produtos.service.ts (NestJS Backend Service)
import { Injectable, NotFoundException } from '@nestjs/common';
export interface Produto {
id: string;
nome: string;
preco: number;
}
@Injectable()
export class ProdutosService {
private produtos: Produto[] = [
{ id: '1', nome: 'MacBook Pro M3', preco: 18000 },
{ id: '2', nome: 'Monitor Dell 32 4K', preco: 4500 }
];
async buscarTodos(): Promise<Produto[]> {
return this.produtos;
}
async buscarPorId(id: string): Promise<Produto> {
const prod = this.produtos.find(p => p.id === id);
if (!prod) throw new NotFoundException(`Produto com ID ${id} não encontrado`);
return prod;
}
}
🚀 Saída Esperada de Execução
[Nest] 4120 - 08/25/2026, 3:55:10 AM LOG [NestFactory] Starting Nest application...
[Nest] 4120 - 08/25/2026, 3:55:10 AM LOG [InstanceLoader] ProdutosModule dependencies initialized
[Nest] 4120 - 08/25/2026, 3:55:10 AM LOG [RoutesResolver] ProdutosController {/api/produtos}:
[Nest] 4120 - 08/25/2026, 3:55:10 AM LOG [RouterExplorer] Mapped {/api/produtos, GET} route
🧭 Navegação Rápida
| 📖 Teoria | 📊 Slides | 🧠 Quiz | 💻 Exemplos | 🧩 Exercícios | | :— | :— | :— | :— | :— | | Ler Tópico | Ver Slides | Fazer Quiz | Ver Código | Praticar |