Skip to content

Instantly share code, notes, and snippets.

@gpupo
Created April 5, 2025 15:27
Show Gist options
  • Save gpupo/99dc907a76944176c0774ee59d3dc98d to your computer and use it in GitHub Desktop.
Save gpupo/99dc907a76944176c0774ee59d3dc98d to your computer and use it in GitHub Desktop.
Monorepo Modern data stack com [postgres +Alembic + Supabase + superset + Prefect] em [Bazel e UV] em infraestrutura Docker com CI/CD woodpecker-ci
  1. 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.
  2. Apache Superset

    • Configuração via superset_config.py para se conectar ao Postgres/Supabase.
    • Dashboards versionados no monorepo (exportados como YAML/JSON).
  3. Prefect

    • Fluxos de dados (ETL) definidos como targets Bazel para cache e paralelização.
  4. 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.
  5. Docker

    • Imagens otimizadas (multistage builds) com layers cacheadas via Bazel.
  6. Woodpecker CI/CD

🚀 Casos de Uso

  1. 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.
  2. CI/CD com Woodpecker

    • Qualquer alteração no fluxo Prefect ou migração dispara:
      • Rebuild da imagem Docker.
      • Execução de testes.
      • Deploy incremental.

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).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment