Início Rápido para Desenvolvedores¶
Para avaliar o Provisa sem compilar a partir do código-fonte, veja o Início Rápido — baixe o instalador para macOS, Windows ou Linux e execute provisa start. (REQ-223, REQ-224, REQ-227)
Este guia é para rodar o Provisa a partir do repositório — desenvolvimento ativo, depuração ou contribuição.
Pré-requisitos¶
- Docker Desktop (em execução)
- Python 3.12+
- Node.js 20+
- Git
1. Clonar e configurar¶
setup.sh cria .venv/, instala todas as dependências Python via pip install -e ".[dev]", e configura os git hooks em .githooks/. [tool-verified: setup.sh lines 5–9]
2. Iniciar tudo¶
Quando terminar de iniciar, você verá:
O que ele inicia: [tool-verified: start-ui.sh]
- Serviços centrais do Docker Compose (
docker-compose.core.yml) — PostgreSQL, PgBouncer, Trino, Redis (REQ-055) - Overlay de desenvolvimento do Docker Compose (
docker-compose.dev.yml) — MinIO, Kafka, MongoDB, Elasticsearch, Neo4j, Fuseki, Debezium, Schema Registry (REQ-055) - API de backend na porta 8001 (hot-reload em mudanças em
provisa/econfig/) (REQ-618) - Servidor de desenvolvimento Vite da UI na porta 3000 (HMR)
- Rastreamento OpenTelemetry e Grafana em
http://localhost:3100. A stack de observabilidade é um perfil docker-composeobservabilityopcional (OTel Collector, Prometheus, Tempo, Grafana), não ativado por padrão no nível da plataforma;start-ui.sho habilita como conveniência de script de desenvolvimento, a menos que você passe--no-observability. (REQ-302, REQ-303, REQ-330)
Ctrl+C para tudo — backend, UI e todos os serviços Docker — e reverte quaisquer patches de configuração. (REQ-619)
Ctrl+R reinicia apenas o backend (útil após uma mudança de configuração que o hot-reload não capta). (REQ-619)
Opções¶
--no-observability — Desabilita o rastreamento distribuído. Por padrão, start-ui.sh baixa o agente Java do OpenTelemetry se ainda não estiver presente, aplica patch no jvm.config do Trino para carregá-lo, e inicia o coletor OTel, Prometheus, Tempo e Grafana. Passe --no-observability para pular tudo isso. O patch do jvm.config é revertido no Ctrl+C. [tool-verified: start-ui.sh lines 15, 67–82] (REQ-330)
--seed-data — Popula o Kafka com dados de demonstração depois que os serviços Docker estão saudáveis. Não executado por padrão. [tool-verified: start-ui.sh lines 14, 173–178]
--keep-docker — Deixa os serviços do Docker Compose rodando após o Ctrl+C em vez de chamar docker compose down. [tool-verified: start-ui.sh lines 16, 301–306] (REQ-619)
--reset-volumes — Apaga todos os volumes Docker e reinicia com um estado limpo. Útil para recuperação de falha do Docker. [tool-verified: start-ui.sh line 19] (REQ-170)
--demo — Inicia fontes de dados de demonstração adicionais (esquema pet-store PostgreSQL, mock OpenAPI petstore, SQLite, e um GraphQL remoto). Popula usuários e pedidos do petstore automaticamente. [tool-verified: start-ui.sh lines 17, 55–171]
--idp=basic|firebase — Habilita um provedor de identidade para autenticação. Sem essa flag, o backend roda sem provedor de autenticação e todas as requisições são tratadas como admin. [tool-verified: start-ui.sh line 18; provisa/auth/wiring.py lines 57–60; provisa/auth/middleware.py lines 57–68] (REQ-120, REQ-124)
3. Conectar uma fonte de dados¶
O Provisa lê a configuração de config/. Adicione um arquivo de fonte — por exemplo config/sources/my-db.yaml:
sources:
- id: my-pg
type: postgresql
host: localhost
port: 5432
database: mydb
username: myuser
password: ${MY_DB_PASSWORD}
tables:
- id: orders
publish: true
columns:
- name: id
- name: amount
- name: region
- name: customer_id
Defina a variável de ambiente e o backend a captará no próximo reload:
Veja docs/configuration.md para a referência YAML completa e todos os tipos de fonte suportados.
4. Execute sua primeira consulta¶
# GraphQL
curl -s -X POST http://localhost:8001/data/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ orders { id amount region } }"}' | jq
# SQL — use the /data/sql endpoint
curl -s -X POST http://localhost:8001/data/sql \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT id, amount, region FROM orders LIMIT 5"}' | jq
Nenhuma autenticação é exigida quando não há uma seção auth em config/provisa.yaml (o padrão em desenvolvimento). A função padrão é admin. [tool-verified: provisa/auth/wiring.py lines 57–60; provisa/auth/middleware.py lines 56–68] (REQ-120, REQ-267)
5. Abra a UI¶
Abra http://localhost:3000 em um navegador.
A barra de navegação tem quatro menus de nível superior: [tool-verified: provisa-ui/src/components/NavBar.tsx lines 39–80]
- Explore — Explorador de Esquema (
/schema), editor GraphQL (/query), editor Cypher (/graph), editor SQL (/sql) - Model — Views e Commands
- Security — Políticas de segurança em nível de linha e mascaramento de coluna (REQ-038, REQ-041)
- Admin — Visão geral, domínios, cache, tarefas programadas, saúde do sistema, observabilidade, usuários, organizações, funções
A API GraphQL de administração está em http://localhost:8001/admin/graphql. [tool-verified: provisa/api/app.py line 3389] (REQ-620)
Solução de problemas¶
Backend não inicia — verifique .logs/server.log. A causa mais comum é uma variável de ambiente ausente ou um conflito de porta na 8001. [tool-verified: start-ui.sh line 202] (REQ-618)
Serviços Docker não saudáveis — execute docker compose -f docker-compose.core.yml -f docker-compose.dev.yml ps para ver qual serviço está travado. O motor de federação leva ~30 segundos na primeira inicialização. (REQ-055)
Conflito de porta na 3000 ou 8001 — start-ui.sh mata processos obsoletos nessas portas antes de iniciar. Se outra coisa possui a porta, pare-a manualmente primeiro. [tool-verified: start-ui.sh lines 197–199] (REQ-619)
Início limpo — pare o script, então execute ./start-ui.sh --reset-volumes para apagar todos os volumes e reiniciar. [tool-verified: start-ui.sh line 19] (REQ-170)
Próximos passos¶
| Objetivo | Doc |
|---|---|
| Referência completa de configuração YAML | configuration.md |
| Segurança em nível de linha, mascaramento de coluna, autenticação | security.md |
| Todos os tipos de fonte suportados | sources.md |
| Subscriptions em tempo real | subscriptions.md |
| JDBC, ferramentas de BI, Arrow Flight, Apollo Federation | integrations.md |
| Cliente Python | python-client.md |
| Implantação em produção | deployment.md |