Demo fullstack 100% funcional que demonstra as capacidades de uma stack moderna:
Frontend Angular 20.3.4:
- ✅ SPA (Client-Side Rendering)
- ✅ SSR (Server-Side Rendering com Angular Universal)
- ✅ SSG (Static Site Generation)
- ✅ PWA (Progressive Web App)
- ✅ Prerender (Pré-renderização)
Backend NestJS:
- ✅ REST API (Express + TypeScript)
- ✅ GraphQL (Apollo Server)
- ✅ WebSockets (Socket.IO)
- ✅ Microservices (TCP Transport)
- ✅ gRPC (Protocol Buffers)
Infraestrutura:
- ✅ PostgreSQL com Prisma ORM (✅ Produção: 15.14)
- ✅ MongoDB com Mongoose ODM (✅ Produção: 6.0.26)
- ✅ Redis para Cache Manager (✅ Produção: 7-alpine)
- ✅ Caddy Reverse Proxy (✅ Produção: 2.7-alpine)
- ✅ Docker Compose (✅ Dev +
⚠️ Prod: Backend OK, Frontend em ajuste) ⚠️ Kubernetes manifests (pendente: atualizar Traefik → Caddy)
Projeto educacional e de demonstração para explorar tecnologias modernas de desenvolvimento web fullstack com foco em:
- Múltiplos padrões de renderização frontend
- Diversos protocolos de comunicação backend
- Orquestração containerizada completa
- Arquitetura escalável e cloud-ready
# Clone o repositório
git clone https://github.com/nitaigf/base-nest-angular
cd base-nest-angular
# Levantar todos os serviços
docker-compose -f docker-compose.dev.yml up -d
# Aguardar inicialização (~2-3 minutos)
# Verificar status
docker-compose -f docker-compose.dev.yml ps# Backend
cd backend
npm install
npm run start:dev # Porta 3000
# Frontend (em terminais separados)
cd frontend
npm install
npm start # SPA na porta 4200
npm run start:ssr # SSR na porta 4000| Serviço | URL | Status | Descrição |
|---|---|---|---|
| Frontend SPA | http://localhost:4200 | ✅ | Angular SPA com lazy loading |
| Frontend SSR | http://localhost:4000 | ✅ | Angular Universal SSR |
| Backend REST | http://localhost:3000/api | ✅ | NestJS REST API |
| GraphQL | http://localhost:3000/graphql | ✅ | Apollo Server |
| WebSocket | ws://localhost:3000 | ✅ | Socket.IO Gateway |
| gRPC | localhost:5001 | ✅ | Protocol Buffers |
| PostgreSQL | localhost:5432 | ✅ | Banco relacional |
| MongoDB | localhost:27017 | ✅ | Banco NoSQL |
| Redis | localhost:6379 | ✅ | Cache e sessões |
Todas as rotas testadas e funcionais:
# REST API
GET /api/metadata # ✅ Status 200 - Metadados sistema
GET /api/health # ✅ Status 200 - Health check
GET /api # ✅ Status 200 - API info
# GraphQL
POST /graphql # ✅ Status 200 - Apollo Server
GET /graphql # ✅ Status 200 - GraphQL Playground
# WebSocket
ws://localhost:3000 # ✅ Socket.IO Gateway
# gRPC
localhost:5001 # ✅ MetadataService
# Microservices
localhost:6000 # ✅ TCP TransportTodas as rotas testadas com status 200:
| Rota | SPA (4200) | SSR (4000) | Descrição |
|---|---|---|---|
/ |
✅ ~9ms | ✅ ~158ms | Home → Redireciona para /pages/csr |
/home |
✅ ~10ms | ✅ ~53ms | Alias para home |
/csr |
✅ ~10ms | ✅ ~66ms | Redireciona para /pages/csr |
/ssr |
✅ ~6ms | ✅ ~170ms | Redireciona para /pages/ssr |
/ssg |
✅ ~8ms | ✅ ~127ms | Redireciona para /pages/ssg |
/pwa |
✅ ~11ms | ✅ ~604ms | Redireciona para /pages/pwa |
/pages/csr |
✅ ~12ms | ✅ ~55ms | Página CSR + GraphQL |
/pages/ssr |
✅ ~11ms | ✅ ~63ms | Página SSR + REST API |
/pages/ssg |
✅ ~6ms | ✅ ~49ms | Página SSG + WebSocket |
/pages/pwa |
✅ ~10ms | ✅ ~59ms | Página PWA + gRPC |
/** |
✅ ~9ms | ✅ ~44ms | Wildcard → Redireciona para /pages/csr |
Diferenças SPA vs SSR:
- SPA: HTML básico + JavaScript (hidratação no cliente)
- SSR: HTML completo pré-renderizado + dados de hidratação
- frontend-spa (service
frontend-spa): 4200 - frontend-ssr (service
frontend-ssr): 4000 - backend: 3000
- postgres: 5432
- mongo: 27017
- redis: 6379
# Desenvolvimento (validado ✅)
docker-compose -f docker-compose.dev.yml up -d
docker-compose -f docker-compose.dev.yml down
docker-compose -f docker-compose.dev.yml logs -f [service]
# Produção (build otimizado)
docker-compose -f docker-compose.prod.yml up -d --build
docker-compose -f docker-compose.prod.yml down
# Limpeza completa
docker-compose -f docker-compose.dev.yml down -v
docker system prune -f# Ordem de aplicação: Databases → Backend → Frontend
kubectl apply -f k8s-postgres.yaml
kubectl apply -f k8s-mongo.yaml
kubectl apply -f k8s-redis.yaml
kubectl apply -f k8s-backend.yaml
kubectl apply -f k8s-frontend.yaml
# Verificar status
kubectl get pods,svc,pvc
kubectl logs -f deployment/backend
kubectl logs -f deployment/frontend-spa# Backend NestJS
cd backend
npm run start:dev # Desenvolvimento com hot reload
npm run start:debug # Debug mode
npm run test # Testes unitários
# Frontend Angular
cd frontend
npm start # SPA na porta 4200
npm run start:ssr # SSR na porta 4000
npm run build # Build de produção
npm run test # Testes unitáriosProjeto 100% testado e funcional em:
- ✅ Desenvolvimento Local (macOS Apple Silicon)
- ✅ Docker Compose (containers Linux)
- ✅ Todas as rotas frontend validadas
- ✅ Todos os protocolos backend validados
- ✅ Integração completa frontend ↔ backend ↔ databases
- ✅ Angular 20.3.4 com BootstrapContext compliance
- SPA vs SSR: Executam em processos separados (limitação do Angular Universal)
- Renderização: SSR pré-renderiza no servidor, SPA hidrata no cliente
- Performance: SPA mais rápido após carregamento inicial, SSR melhor para SEO
- Variáveis de ambiente: Ajustar em
docker-compose.dev.ymlconforme necessário - Apple Silicon: Containers já configurados para ARM64
- Portas: Configuráveis via environment variables
✅ Infraestrutura Backend - 100% Funcional:
# Testar infraestrutura backend
docker-compose -f docker-compose.prod.yml -f docker-compose.prod.debug.yml up -d postgres mongo redis backend
# Testar endpoints
curl http://localhost:3000/ # ✅ Hello World!
curl http://localhost:3000/rest/meta # ✅ REST API
curl http://localhost:3000/grpc/meta # ✅ gRPC
curl http://localhost:3000/micro/meta # ✅ Microservices
curl http://localhost:3000/api/docs # ✅ Swagger
curl http://localhost:3000/graphql # ✅ GraphQL- Build SSR funcionando localmente
- Docker de produção em ajuste (estrutura servidor Angular 20)
- Configuração Caddy pronta
🔧 Configuração Flexível:
- Sistema
.envpara portas e exposição - Override files para debug vs produção
- Caddy substitui Traefik (configuração mais simples)
- ARCHITECTURE.md: Detalhes técnicos e decisões arquiteturais
- Frontend README: Configurações específicas do Angular
- Backend README: Configurações específicas do NestJS
Projeto educacional aberto a contribuições! Veja issues para melhorias sugeridas.
Stack validada e pronta para desenvolvimento! 🚀