Pular para o conteúdo principal

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​

  1. Abrir o repositório principal:

Etapa 2: Criar um Codespace​

  1. Clique no botão verde Code
  2. Selecione a aba Codespaces
  3. Clique em Create codespace on main
┌─────────────────────────────────────────┐
│ Code ▼ │
├─────────────────────────────────────────┤
│ Local │ Codespaces │
│ │ │
│ │ ┌──────────────────────┐ │
│ │ │ + Create codespace │ │
│ │ │ on main │ │
│ │ └──────────────────────┘ │
└─────────────────────────────────────────┘

Etapa 3: Aguarde a Inicialização​

O Codespace irá:

  1. Criar uma máquina virtual
  2. Clonar o repositório
  3. Instalar as dependências
  4. 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:


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

⏭️ Próximo Passo​

Capítulo 2: Troubleshooting →


Voltar ao índice do módulo