Capítulo 1: Iniciando com GitHub Codespaces
Objetivos
- Configurar um ambiente de desenvolvimento em nuvem com GitHub Codespaces
- Iniciar o projeto e-contact-backend
- Compreender a estrutura do projeto
- Realizar os primeiros testes da API
🌐 O que é o GitHub Codespaces?
O GitHub Codespaces é um ambiente de desenvolvimento em nuvem que permite:
- Desenvolver diretamente do navegador
- Ter um ambiente pré-configurado
- Evitar problemas de instalação local
- Colaborar facilmente
Principal Vantagem
Não é necessário instalar Java, Maven, PostgreSQL ou qualquer outra ferramenta na sua máquina!
Pré-requisitos
- Conta no GitHub (gratuita)
- Navegador web moderno
Etapas de Configuração
Etapa 1: Acessar o Repositório
- Abrir o repositório principal:
Repositório
Etapa 2: Criar um Codespace
- Clique no botão verde Code
- Selecione a aba Codespaces
- Clique em Create codespace on main
┌─────────────────────────────────────────┐
│ Code ▼ │
├─────────────────────────────────────────┤
│ Local │ Codespaces │
│ │ │
│ │ ┌──────────────────────┐ │
│ │ │ + Create codespace │ │
│ │ │ on main │ │
│ │ └──────────────────────┘ │
└─────────────────────────────────────────┘
Etapa 3: Aguarde a Inicialização
O Codespace irá:
- Criar uma máquina virtual
- Clonar o repositório
- Instalar as dependências
- Abrir o VS Code no navegador
⏱️ Tempo estimado: 2-3 minutos
Etapa 4: Verificar o Ambiente
Assim que o Codespace estiver pronto, abra o terminal e verifique:
# Verificar Java
java -version
# Esperado: openjdk 17.x.x ou superior
# Verificar Maven
./mvnw -version
# Esperado: Apache Maven 3.x.x
🏃 Iniciando a Aplicação
Comando de Inicialização
No terminal do Codespace:
./mvnw spring-boot:run
Saída Esperada
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.2.x)
...
Started EContactApplication in X.XXX seconds
Acessar a Aplicação
Quando a aplicação iniciar, o Codespaces exibirá uma notificação:
┌──────────────────────────────────────────────────┐
│ Your application running on port 8080 is │
│ available. │
│ │
│ [Open in Browser] [Make Public] │
└──────────────────────────────────────────────────┘
Clique em Open in Browser para acessar a API.
🔍 Explorando a Estrutura do Projeto
inskillflow-docs-formation-spring-boot-projet-e-contact-backend/
│
├── 📁 src/main/java/com/example/econtact/
│ │
│ ├── 📄 EContactApplication.java # Ponto de entrada
│ │
│ ├── 📁 config/
│ │ ├── SecurityConfig.java # Configuração de segurança
│ │ └── CorsConfig.java # Configuração CORS
│ │
│ ├── 📁 controller/
│ │ ├── ContactController.java # Endpoint público /api/contact
│ │ ├── AuthController.java # Endpoints de autenticação
│ │ └── AdminController.java # Endpoints admin protegidos
│ │
│ ├── 📁 model/
│ │ ├── Lead.java # Entidade Contato/Lead
│ │ ├── User.java # Entidade Usuário
│ │ └── enums/ # RequestType, LeadStatus, Role
│ │
│ ├── 📁 dto/
│ │ ├── ContactRequest.java # DTO formulário de contato
│ │ ├── LoginRequest.java # DTO de autenticação
│ │ └── LeadResponse.java # DTO resposta lead
│ │
│ ├── 📁 repository/
│ │ ├── LeadRepository.java
│ │ └── UserRepository.java
│ │
│ ├── 📁 service/
│ │ ├── LeadService.java
│ │ ├── UserService.java
│ │ └── EmailService.java
│ │
│ └── 📁 security/
│ ├── JwtService.java # Geração/validação JWT
│ ├── JwtAuthenticationFilter.java # Filtro de autenticação
│ └── UserDetailsServiceImpl.java
│
├── 📁 src/main/resources/
│ └── application.yml # Configuração
│
├── 📁 frontend/ # Frontend de teste
│
├── 📁 troubleshooting/ # Guias de troubleshooting
│
└── 📁 cours/ # Documentação e cursos
Primeiros Testes da API
Teste 1: Verificar se a API está acessível
curl http://localhost:8080/api/health
Resposta esperada:
{"status": "UP"}
Teste 2: Enviar um Contato (Endpoint Público)
curl -X POST http://localhost:8080/api/contact \
-H "Content-Type: application/json" \
-d '{
"fullName": "Jean Dupont",
"email": "jean.dupont@example.com",
"company": "Ma Société",
"phone": "514-555-1234",
"requestType": "INFO",
"message": "Je voudrais plus d'\''informations sur vos services."
}'
Resposta esperada:
{
"id": 1,
"fullName": "Jean Dupont",
"email": "jean.dupont@example.com",
"status": "NEW",
"createdAt": "2025-02-02T12:00:00"
}
Teste 3: Acessar um Endpoint Protegido (Sem Token)
curl http://localhost:8080/api/admin/leads
Resposta esperada:
{
"status": 401,
"error": "Unauthorized"
}
⚠️ Problemas Comuns
Porta 8080 já está em uso
# Identificar o processo
lsof -i :8080
# Ou usar outra porta
./mvnw spring-boot:run -Dspring-boot.run.arguments="--server.port=8081"
Erro de banco de dados
Verifique se a configuração H2 está ativa para desenvolvimento no application.yml.
Codespace desconectando
Os Codespaces gratuitos possuem limite de tempo. Reinicie se necessário.
Recursos de Troubleshooting
Para mais detalhes sobre as etapas e troubleshooting:
Guias Detalhados
Checklist de Validação
Antes de passar para o próximo capítulo, verifique se você:
- Criou um Codespace com sucesso
- Iniciou a aplicação Spring Boot
- Testou o endpoint
/api/contact - Compreendeu a estrutura do projeto