cat como-foi-feito.md
Como foi feito
Referência rápida da arquitetura, do pipeline e das decisões deste site.
Peças
| Peça | Função |
|---|---|
| Astro | Gera o site estático a partir do Markdown em content/ |
| Cloudflare Pages | Hospeda e serve pela CDN (plano gratuito) |
| Cloudflare Web Analytics | Conta visitas sem cookies |
| Terraform | Cria o projeto do Pages e o Web Analytics |
| HCP Terraform | Guarda o state do Terraform |
| GitHub Actions | Valida cada PR e publica cada push no main |
| Docker Compose | Homologação local, só em localhost |
Pipeline
- PR ou push:
astro check,astro build, checagem de links eterraform validate. - Push no
main: se não houver conteúdo marcado como pendente, o build vai para produção comwrangler pages deploy. - Homologação:
docker compose upserve o build de produção emlocalhost. Não existe URL de preview pública.
A infraestrutura muda pouco. Por isso o terraform apply roda na minha máquina, e o CI só confere se o código continua válido.
Decisões (ADRs)
| ADR | Decisão |
|---|---|
| 001 | Astro, com o texto em Markdown numa pasta própria |
| 002 | Cloudflare no plano gratuito, com plano de saída escrito |
| 003 | Terraform com state remoto e apply local |
| 004 | Deploy pelo GitHub Actions, não pela integração Git do Pages |
Limites declarados
- Sem servidor e sem banco: o site não guarda nada de quem visita.
- Depende do Cloudflare; o ADR 002 descreve como sair.
- Conteúdo em português e inglês.
Código
Tudo está em github.com/osamufelix/portfolio-samu.