-
PostgreSQL + Alembic + Supabase
- Postgres: Container com extensões (
pg_cron
,pg_net
,postgis
). - Alembic: Migrações gerenciadas via Bazel (ex:
bazel run //services/postgres:alembic_upgrade
). - Supabase: Usado para autenticação (Auth), Edge Functions e API GraphQL.
- Postgres: Container com extensões (
-
Apache Superset
- Configuração via
superset_config.py
para se conectar ao Postgres/Supabase. - Dashboards versionados no monorepo (exportados como YAML/JSON).
- Configuração via
-
Prefect
- Fluxos de dados (ETL) definidos como targets Bazel para cache e paralelização.
-
Bazel + UV
- Bazel: Compila e cacheia tudo (migrações, imagens Docker, fluxos Prefect).
- UV: Substitui Poetry/Pipenv para instalação rápida de dependências Python.
-
Docker
- Imagens otimizadas (multistage builds) com layers cacheadas via Bazel.
-
Woodpecker CI/CD
-
ETL com Prefect → Dados no Supabase → Dashboard no Superset
- Prefect ingere dados de uma API externa.
- Supabase expõe os dados via GraphQL.
- Superset consome os dados para visualização.
-
CI/CD com Woodpecker
- Qualquer alteração no fluxo Prefect ou migração dispara:
- Rebuild da imagem Docker.
- Execução de testes.
- Deploy incremental.
- Qualquer alteração no fluxo Prefect ou migração dispara:
Essa stack é ideal para times que:
- Querem controle fino sobre infraestrutura.
- Precisam de alta performance em CI/CD (graças ao Bazel).
- Usam Supabase como backend (Auth, Postgres, GraphQL).
- Valorizam Python moderno (UV em vez de Poetry).