# 🚀 Guia de Desenvolvimento - NewWhats Este documento descreve como configurar e rodar o ambiente de desenvolvimento com **hot-reload** para desenvolvimento rápido. --- ## 📋 Portas | Serviço | Produção | Desenvolvimento | |---------|----------|-----------------| | Frontend (Next.js) | 3003 | 4004 | | Backend (Express) | 8008 | 8009 | --- ## 🛠️ Setup Inicial ### 1. Requisitos - Node.js (verifique com `node -v`) - npm (verifique com `npm -v`) - PostgreSQL rodando - DragonflyDB (Redis-compatible) rodando - NATS JetStream rodando - Temporal.io rodando ### 2. Instalar Dependências ```bash # Frontend cd frontend npm install # Backend cd ../backend npm install ``` --- ## 🏃 Executar em Desenvolvimento (Hot-Reload) ### Opção 1: Usar Serviços Systemd (Recomendado) #### Iniciar Ambos os Serviços ```bash # Iniciar dev services sudo systemctl start newwhats-frontend-dev newwhats-backend-dev # Verificar status sudo systemctl status newwhats-frontend-dev newwhats-backend-dev # Ver logs em tempo real sudo journalctl -u newwhats-frontend-dev -f sudo journalctl -u newwhats-backend-dev -f ``` #### Parar Serviços Dev ```bash sudo systemctl stop newwhats-frontend-dev newwhats-backend-dev ``` #### Ativar Auto-start na Boot ```bash sudo systemctl enable newwhats-frontend-dev newwhats-backend-dev ``` --- ### Opção 2: Rodar Manualmente (Terminal) #### Terminal 1 - Frontend (Hot-Reload) ```bash cd /home/deploy/projetos/newwhats.local/frontend npm run dev # Output esperado: # ▲ Next.js 14.2.35 # - Local: http://localhost:4004 # ✓ Ready in X.Xs ``` #### Terminal 2 - Backend (Hot-Reload) ```bash cd /home/deploy/projetos/newwhats.local/backend npm run dev # Output esperado: # Server running on port 8009 # Watching for file changes... ``` --- ## 📝 Variáveis de Ambiente ### Frontend - `NODE_ENV=development` → Ativa React DevTools e hot-reload - Porta: `4004` (configurado em `package.json`) ### Backend - `NODE_ENV=development` → Logs detalhados, sem compressão - `PORT=8009` → Porta dev (não conflita com produção 8008) - `.env` já está configurado com valores corretos --- ## 🔄 Hot-Reload em Ação ### Frontend - Edite arquivos em `frontend/pages/`, `frontend/components/`, etc. - Next.js recompila automaticamente e atualiza o navegador - Para mudanças em `next.config.mjs`, reinicie o serviço ### Backend - Edite arquivos em `backend/src/` - `tsx watch` reinicia o servidor automaticamente - Mudanças em `.env` requerem restart manual --- ## 🚨 Troubleshooting ### Porta já em uso ```bash # Verificar qual processo usa a porta lsof -i :4004 # Frontend lsof -i :8009 # Backend # Matar processo (último recurso) sudo kill -9 ``` ### Serviço não inicia ```bash # Verificar logs detalhados sudo systemctl status newwhats-frontend-dev sudo journalctl -u newwhats-frontend-dev -n 50 # Recarregar systemd após editar .service sudo systemctl daemon-reload ``` ### Mudanças não aparecem - **Frontend**: Limpar cache do navegador (Ctrl+Shift+Del) - **Backend**: Aguarde a mensagem de restart no terminal --- ## ⚙️ Scripts Disponíveis ### Frontend ```bash npm run dev # Desenvolvimento com hot-reload (porta 4004) npm run build # Build para produção npm run start # Rodar build (produção, porta 3003) npm run lint # Linting ``` ### Backend ```bash npm run dev # Desenvolvimento com tsx watch (porta 8009) npm run build # Compilar TypeScript npm run start # Rodar compilado (produção, porta 8008) npm run db:migrate # Migrar database npm run db:push # Push schema para database npm run db:studio # Prisma Studio ``` --- ## 🔗 URLs de Desenvolvimento - **Frontend**: http://localhost:4004 - **Backend API**: http://localhost:8009 - **Prisma Studio**: `npm run db:studio` (backend) --- ## 📌 Produção vs Desenvolvimento | Aspecto | Produção | Desenvolvimento | |---------|----------|-----------------| | Hot-reload | ❌ | ✅ | | Compilação | ✅ Build prévio | ❌ On-the-fly | | Logs | Estruturados (JSON) | Pretty-printed | | Otimização | ✅ | ❌ | | Velocidade Dev | Lenta | ⚡ Rápida | --- ## 🤝 Boas Práticas 1. **Sempre use dev em desenvolvimento** — hot-reload economiza tempo 2. **Teste em produção antes de deploy** — verifique otimizações 3. **Mantenha `.env` sincronizado** — mudanças críticas requerem restart 4. **Limpe logs regularmente** — `journalctl --vacuum=time=7d` 5. **Verifique portas antes de mudar** — evite conflitos --- ## 📞 Suporte Para problemas ou dúvidas, verifique: - Logs dos serviços: `journalctl -u newwhats-*-dev -f` - Status das dependências: `systemctl status postgresql dragonfly nats` - Conectividade: `curl http://localhost:8009/health` --- **Última atualização**: 2026-04-10 **Ambiente**: Linux (Debian/Ubuntu)