# 🎯 Quick Start - Backend + Traefik ## 📋 O que foi criado? Você agora tem uma arquitetura completa de produção com: ✅ **Backend em Go** com estrutura profissional ✅ **Traefik** como reverse proxy com suporte a multi-tenant ✅ **PostgreSQL** para dados com isolamento por tenant ✅ **Redis** para cache e sessões ✅ **MinIO** para storage S3-compatible ✅ **Docker Compose** com stack completa ✅ **Autenticação JWT** segura ✅ **Multi-tenant** com roteamento automático ✅ **Documentação** completa ## 🚀 Iniciar Desenvolvimento ### 1. Copiar variáveis de ambiente ```bash cd aggios-app cp .env.example .env ``` ### 2. Iniciar stack com um comando **Windows:** ```bash .\scripts\start-dev.bat ``` **macOS/Linux:** ```bash chmod +x ./scripts/start-dev.sh ./scripts/start-dev.sh ``` **Ou manualmente:** ```bash docker-compose up -d ``` ### 3. Verificar serviços ```bash docker-compose ps # OUTPUT esperado: # NAME STATUS # traefik Up (healthy) # postgres Up (healthy) # redis Up (healthy) # minio Up (healthy) # backend Up (healthy) ``` ### 4. Testar API ```bash # Health check curl http://localhost:8080/api/health # Response esperado: # {"status":"up","timestamp":1733376000,"database":true,...} ``` ## 📚 Documentação Importante | Documento | Descrição | |-----------|-----------| | [ARCHITECTURE.md](./ARCHITECTURE.md) | Design da arquitetura | | [API_REFERENCE.md](./API_REFERENCE.md) | Todos os endpoints | | [DEPLOYMENT.md](./DEPLOYMENT.md) | Deploy e diagramas | | [SECURITY.md](./SECURITY.md) | Guia de segurança | | [backend/README.md](./backend/README.md) | Setup do backend | ## 🔄 Estrutura de Pastas ``` aggios-app/ ├── backend/ # ← Backend Go aqui │ ├── cmd/server/main.go # Entry point │ ├── internal/ │ │ ├── api/ # Handlers, middleware, routes │ │ ├── auth/ # JWT, passwords, tokens │ │ ├── config/ # Configurações │ │ ├── database/ # PostgreSQL, migrations │ │ ├── models/ # Estruturas de dados │ │ ├── services/ # Lógica de negócio │ │ └── storage/ # Redis e MinIO │ ├── migrations/ # SQL scripts │ ├── go.mod # Dependencies │ ├── Dockerfile # Para Docker │ └── README.md # Backend docs │ ├── aggios.app-institucional/ # Frontend Institucional (Next.js) ├── dash.aggios.app/ # Frontend Dashboard (Next.js) │ ├── docker-compose.yml # Stack completa ├── .env.example # Template de env ├── .env # Variáveis reais (não committar!) │ ├── traefik/ # Configuração Traefik │ ├── traefik.yml # Main config │ ├── dynamic/rules.yml # Dynamic routing rules │ └── letsencrypt/ # Certificados (auto-gerado) │ ├── backend/internal/data/postgres/ # Inicialização PostgreSQL │ └── init-db.sql # Schema initial │ ├── scripts/ │ ├── start-dev.sh # Start em Linux/macOS │ └── start-dev.bat # Start em Windows │ ├── ARCHITECTURE.md # Design detalhado ├── API_REFERENCE.md # Endpoints ├── DEPLOYMENT.md # Diagrama & deploy ├── SECURITY.md # Segurança & checklist └── README.md # Este arquivo ``` ## 🛠️ Próximos Passos ### 1. Completar Autenticação (2-3 horas) - [ ] Implementar login com validação real - [ ] Adicionar password hashing (Argon2) - [ ] Implementar refresh token logic - [ ] Testes de autenticação **Arquivo:** `backend/internal/api/handlers/auth.go` ### 2. Adicionar Endpoints de Usuário (1-2 horas) - [ ] GET /api/users/me - [ ] PUT /api/users/me (update profile) - [ ] POST /api/users/me/change-password - [ ] DELETE /api/users/me **Arquivo:** `backend/internal/api/handlers/users.go` ### 3. Implementar Services Layer (2-3 horas) - [ ] UserService - [ ] TenantService - [ ] TokenService - [ ] FileService **Pasta:** `backend/internal/services/` ### 4. Adicionar Endpoints de Tenant (1-2 horas) - [ ] GET /api/tenant - [ ] PUT /api/tenant - [ ] GET /api/tenant/members - [ ] Invite members **Arquivo:** `backend/internal/api/handlers/tenant.go` ### 5. Implementar Upload de Arquivos (2 horas) - [ ] POST /api/files/upload - [ ] GET /api/files/{id} - [ ] DELETE /api/files/{id} - [ ] Integração MinIO **Arquivo:** `backend/internal/api/handlers/files.go` ### 6. Testes Unitários (3-4 horas) - [ ] Auth tests - [ ] Handler tests - [ ] Service tests - [ ] Middleware tests **Pasta:** `backend/internal/*_test.go` ### 7. Documentação Swagger (1-2 horas) - [ ] Adicionar comentários swagger - [ ] Gerar OpenAPI/Swagger - [ ] Publicar em `/api/docs` **Dependency:** `github.com/swaggo/http-swagger` ### 8. Integração com Frontends (2-3 horas) - [ ] Atualizar CORS_ALLOWED_ORIGINS - [ ] Criar cliente HTTP no Next.js - [ ] Autenticação no frontend - [ ] Redirects de login ### 9. CI/CD Pipeline (2-3 horas) - [ ] GitHub Actions workflow - [ ] Build Docker image - [ ] Push para registry - [ ] Deploy automático **Arquivo:** `.github/workflows/deploy.yml` ### 10. Monitoramento (1-2 horas) - [ ] Adicionar logging estruturado - [ ] Sentry integration - [ ] Prometheus metrics - [ ] Health check endpoint --- ## 📝 Exemplo: Adicionar um novo endpoint ### 1. Criar handler ```go // backend/internal/api/handlers/agencias.go package handlers func (h *AgenciaHandler) ListAgencias(w http.ResponseWriter, r *http.Request) { tenantID := r.Header.Get("X-Tenant-ID") agencias, err := h.agenciaService.ListByTenant(r.Context(), tenantID) if err != nil { utils.RespondError(w, 500, "error", err.Error(), r.URL.Path) return } utils.RespondSuccess(w, 200, agencias, "Agências obtidas com sucesso") } ``` ### 2. Registrar na rota ```go // backend/internal/api/routes.go mux.HandleFunc("GET /api/agencias", middleware.Chain( agenciaHandler.ListAgencias, corsMiddleware, jwtMiddleware, )) ``` ### 3. Testar ```bash curl -X GET http://localhost:8080/api/agencias \ -H "Authorization: Bearer {token}" ``` --- ## 🐛 Troubleshooting ### Backend não inicia ```bash # Ver logs docker-compose logs -f backend # Rebuildar docker-compose build backend docker-compose up -d backend ``` ### PostgreSQL falha ```bash # Verificar password cat .env | grep DB_PASSWORD # Reset database docker-compose down -v postgres docker-compose up -d postgres ``` ### Redis não conecta ```bash # Test connection docker-compose exec redis redis-cli ping # Verificar password docker-compose exec redis redis-cli -a $(grep REDIS_PASSWORD .env) ping ``` ### Certificado SSL ```bash # Ver status Let's Encrypt docker-compose logs traefik | grep acme # Debug Traefik docker-compose logs -f traefik ``` --- ## 🔐 Segurança Inicial **IMPORTANTE:** Antes de publicar em produção: ```bash # 1. Gerar secrets seguros openssl rand -base64 32 > jwt_secret.txt openssl rand -base64 24 > db_password.txt # 2. Editar .env com valores seguros nano .env # 3. Deletar .env.example rm .env.example # 4. Verificar .gitignore echo ".env" >> .gitignore git add .gitignore ``` --- ## 🚀 Deploy em Produção 1. **Servidor Linux** (Ubuntu 20.04+) 2. **Docker + Compose** instalados 3. **Domain** apontando para servidor 4. **Secrets** em vault (não em .env) ```bash # 1. Clone repo git clone /opt/aggios-app cd /opt/aggios-app # 2. Setup secrets export JWT_SECRET=$(openssl rand -base64 32) export DB_PASSWORD=$(openssl rand -base64 24) # 3. Start stack docker-compose -f docker-compose.yml up -d # 4. Health check curl https://api.aggios.app/api/health ``` --- ## 📊 Monitoramento Após deploy em produção: ```bash # Ver métricas docker-compose stats # Ver logs docker-compose logs -f backend # Verificar saúde docker-compose ps # Acessar dashboards: # - Traefik: http://traefik.localhost # - MinIO: http://minio-console.localhost ``` --- ## 💬 Próximas Discussões Quando estiver pronto, podemos implementar: 1. **OAuth2** (Google, GitHub login) 2. **WebSockets** (notificações em tempo real) 3. **gRPC** (comunicação inter-serviços) 4. **Message Queue** (Kafka/RabbitMQ) 5. **Search** (Elasticsearch) 6. **Analytics** (Big Query/Datadog) 7. **Machine Learning** (recomendações) 8. **Blockchain** (auditoria imutável) --- ## 📞 Suporte Para dúvidas: 1. Consulte a documentação nos links acima 2. Verifique os logs: `docker-compose logs {service}` 3. Leia o arquivo correspondente em `ARCHITECTURE.md`, `API_REFERENCE.md` ou `SECURITY.md` --- **Status**: ✅ Pronto para desenvolvimento **Stack**: Go + PostgreSQL + Redis + MinIO + Traefik **Versão**: 1.0.0 **Data**: Dezembro 2025