A configuração do projeto é dividida nas seguintes etapas:
- Pré-requisitos
- Configuração Rápida com Docker Compose
- Executando Serviços Individualmente
- Executando Testes
- Guia para Novos Desenvolvedores
Pré-requisitos
Para desenvolvimento com Docker (Recomendado)
- Docker v20.10+
- Docker Compose v2.0+
Para desenvolvimento local
- Java JDK 21
- Node.js v18+
- pnpm v8+
- PostgreSQL 16+ (opcional, pode usar Docker)
Configuração Rápida com Docker Compose
Desenvolvimento (Recomendado)
Execute toda a aplicação com um único comando:
# Clona o repositório
git clone <repository-url>
cd conexao-treinamento
# Inicia todos os serviços
docker compose up -d
# Para acompanhar os logs
docker compose logs -f
Isso iniciará:
-
PostgreSQL:
localhost:5432
-
Backend:
localhost:8080
-
Frontend:
localhost:3000
Comandos Úteis do Docker Compose
# Rebuild e restart dos serviços
docker compose up -d --build
# Parar todos os serviços
docker compose down
# Remover volumes (apaga dados do banco)
docker compose down -v
# Ver status dos serviços
docker compose ps
# Logs de um serviço específico
docker compose logs -f backend
docker compose logs -f frontend
docker compose logs -f postgres
Ambiente de Testes
Para executar testes em containers isolados:
# Configurar arquivo de ambiente de teste (se necessário)
cp .env.example .env.test
# Executar testes
docker compose -f docker-compose.test.yml up --build
Executando Serviços Individualmente
1. Banco de Dados (PostgreSQL)
Opção A: Com Docker (Recomendado)
# Apenas o PostgreSQL
docker compose up postgres -d
# Verificar se está rodando
docker compose ps postgres
Opção B: PostgreSQL Local
# Instalar PostgreSQL e criar banco
createdb conexaotreinamento
psql -d conexaotreinamento -c "CREATE USER postgres WITH PASSWORD 'postgres123';"
2. Backend (Spring Boot)
cd backend
# Linux/macOS
chmod +x ./mvnw
./mvnw clean install
./mvnw spring-boot:run
# Windows
.\mvnw.cmd clean install
.\mvnw.cmd spring-boot:run
# Ou usando Maven instalado globalmente
mvn clean install
mvn spring-boot:run
Configurações de ambiente para o backend:
# Variáveis de ambiente (opcional)
export SPRING_PROFILES_ACTIVE=dev
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/conexaotreinamento
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=postgres123
O backend estará disponível em: http://localhost:8080
3. Frontend (Next.js)
cd web
# Instalar dependências
pnpm install
# Modo desenvolvimento
pnpm dev
# Ou modo produção
pnpm build
pnpm start
Configurações de ambiente para o frontend:
# Criar arquivo .env.local
echo "NEXT_PUBLIC_API_URL=http://localhost:8080" > .env.local
O frontend estará disponível em: http://localhost:3000
Executando Testes
Testes do Backend
cd backend
# Executar todos os testes
./mvnw test
# Executar testes com relatório de cobertura
./mvnw test jacoco:report
# Executar apenas testes unitários
./mvnw test -Dtest="**/*Test.java"
# Executar apenas testes de integração
./mvnw test -Dtest="**/*IntegrationTest.java"
# Executar testes com perfil específico
./mvnw test -Dspring.profiles.active=test
Testes do Frontend
cd web
# Verificação de tipos
pnpm type-check
# Linting
pnpm lint
# Formatação de código
pnpm format:check
pnpm format
# Testes (quando implementados)
pnpm test:smoke
pnpm test:integration
Testes com Docker
# Executar testes em ambiente isolado
docker compose -f docker-compose.test.yml up --build --abort-on-container-exit
# Limpar após testes
docker compose -f docker-compose.test.yml down -v
Guia para Novos Desenvolvedores
1. Primeiro Setup
# 1. Clone o repositório
git clone <repository-url>
cd conexao-treinamento
# 2. Inicie com Docker (mais fácil)
docker compose up -d
# 3. Aguarde todos os serviços subirem
docker compose logs -f
2. Verificando se está funcionando
- Frontend: Acesse http://localhost:3000
- Backend API: Acesse http://localhost:8080/swagger-ui.html
-
Database: Conecte em
localhost:5432
(postgres/postgres123)
3. Fluxo de Desenvolvimento
Workflow Recomendado
# 1. Sincronizar com a branch principal
git checkout develop
git pull origin develop
# 2. Criar nova branch a partir da develop
git checkout -b feature/nova-funcionalidade
# 3. Fazer alterações no código
# ... desenvolver sua feature ...
# 4. Executar testes e validações
# Backend
cd backend && ./mvnw test
# Frontend
cd web && pnpm type-check && pnpm lint
# 5. Commit das alterações (seguindo Conventional Commits)
git add .
git commit -m "feat: adiciona nova funcionalidade"
# 6. Antes de fazer push - sincronizar com develop
git checkout develop
git pull origin develop
git checkout feature/nova-funcionalidade
# 7. Resolver conflitos se houver
git rebase develop
# Se houver conflitos, resolva-os e continue:
# git add .
# git rebase --continue
# 8. Push da branch
git push origin feature/nova-funcionalidade
# 9. Abrir Pull Request no GitHub/GitLab
# Aguardar review e aprovação antes do merge
Padrão de Commits (Conventional Commits)
Use os seguintes prefixos para seus commits:
-
feat:
- Nova funcionalidade -
fix:
- Correção de bug -
docs:
- Alterações na documentação -
style:
- Formatação, sem mudança de lógica -
refactor:
- Refatoração de código -
test:
- Adição ou correção de testes -
chore:
- Tarefas de manutenção
Exemplos:
git commit -m "feat: adiciona endpoint para listar exercícios"
git commit -m "fix: corrige validação de email no cadastro"
git commit -m "docs: atualiza README com instruções de deploy"
4. Comandos Úteis do Dia a Dia
# Ver logs em tempo real
docker compose logs -f backend
docker compose logs -f frontend
# Reiniciar apenas um serviço
docker compose restart backend
# Executar comando dentro do container
docker compose exec backend bash
docker compose exec postgres psql -U postgres -d conexaotreinamento
# Limpar cache e rebuild
docker compose down
docker compose up -d --build
5. Debugando Problemas Comuns
Backend não inicia
# Verificar logs
docker compose logs backend
# Verificar se PostgreSQL está rodando
docker compose ps postgres
# Reiniciar com rebuild
docker compose up backend --build
Frontend não carrega
# Verificar se backend está respondendo
curl http://localhost:8080/actuator/health
# Verificar variáveis de ambiente
docker compose exec frontend env | grep NEXT_PUBLIC
Banco de dados com problemas
# Resetar banco (CUIDADO: apaga dados)
docker compose down -v
docker compose up postgres -d