50 lines
2.4 KiB
Markdown
50 lines
2.4 KiB
Markdown
# Etapa 01 — Setup do projeto, Docker e Flyway
|
|
|
|
## Objetivo
|
|
Criar o esqueleto do projeto backend em Spring Boot, configurar a conexão com PostgreSQL via Docker e deixar o Flyway pronto para rodar as migrations que virão nas próximas etapas.
|
|
|
|
## Contexto
|
|
Este é o ponto de partida do projeto. Nenhum código de negócio é escrito aqui — o foco é ambiente funcional: projeto sobe, conecta no banco, Flyway aplica a primeira migration vazia com sucesso.
|
|
|
|
Consulte `ARQUITETURA-SCHEMA.md` (seção 1 e 2) para a stack e estrutura de pacotes a seguir.
|
|
|
|
## Tarefas
|
|
|
|
1. Criar projeto Spring Boot 3.x (via Spring Initializr ou manualmente) com as dependências:
|
|
- `spring-boot-starter-web`
|
|
- `spring-boot-starter-data-jpa`
|
|
- `spring-boot-starter-validation`
|
|
- `spring-boot-starter-security`
|
|
- `flyway-core`
|
|
- `postgresql` (driver)
|
|
- `lombok`
|
|
2. Criar a estrutura de pacotes conforme definido em `ARQUITETURA-SCHEMA.md` seção 2 (`config`, `domain`, `repository`, `scraper`, `normalizer`, `proxy`, `service`, `controller`, `security`, `worker`) — pode começar com pacotes vazios, serão populados nas próximas etapas
|
|
3. Criar `docker-compose.yml` inicial (apenas serviço `postgres`, os demais serviços virão na etapa 09):
|
|
```yaml
|
|
services:
|
|
postgres:
|
|
image: postgres:16
|
|
environment:
|
|
POSTGRES_DB: leadscraper
|
|
POSTGRES_USER: leadscraper
|
|
POSTGRES_PASSWORD: <definir via .env>
|
|
ports:
|
|
- "5433:5432"
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
volumes:
|
|
postgres_data:
|
|
```
|
|
4. Configurar `application.yml` com datasource apontando para o Postgres do Docker, e Flyway habilitado
|
|
5. Criar `src/main/resources/db/migration/V1__init.sql` vazio (ou só com um comentário) para validar que o Flyway roda corretamente na subida da aplicação
|
|
6. Criar arquivo `.env.example` com as variáveis necessárias (senha do banco, etc.) — nunca commitar `.env` real
|
|
7. Subir o Postgres via `docker compose up -d postgres` e validar que o Spring Boot conecta e aplica a migration inicial sem erro
|
|
|
|
## Critérios de aceite
|
|
|
|
- [ ] Projeto Spring Boot compila e sobe sem erros
|
|
- [ ] `docker compose up -d postgres` sobe o banco corretamente
|
|
- [ ] Aplicação conecta no Postgres e o Flyway registra a migration `V1__init` na tabela `flyway_schema_history`
|
|
- [ ] Estrutura de pacotes criada conforme arquitetura
|
|
- [ ] `.env.example` documentado
|