Um studio front-end para visualizar e brincar com DAGs de pipelines (estilo Airflow), com foco em aprender e praticar algoritmos de grafos + visualização.
- Layout:
elkjs(ELK / layered) - Render/Interações:
d3(SVG, zoom/pan, hover, highlight) - UI: React + Vite + TypeScript
- State: Zustand (4 slices: graph, layout, ui, viewport)
- Styling: Tailwind + shadcn/ui
- Renderizar um DAG (nodes + edges) a partir de um arquivo (ex: YAML/JSON).
- Rodar layout com ELK (left-to-right) e desenhar no SVG com D3.
- Interações essenciais: zoom/pan, selecionar nó/aresta, highlight upstream/downstream.
- Validar DAG (detectar ciclos) e sinalizar problemas no UI.
- Node.js >= 20
- pnpm (recomendado)
- Git
git clone <SEU_REPO.git>
cd airgraph-studio
pnpm install
pnpm devAcesse o endereço que o Vite mostrar no terminal.
| Script | Descrição |
|---|---|
dev |
Roda localmente com HMR |
build |
Build de produção |
preview |
Preview do build |
test |
Testes unitários |
lint |
Lint |
format |
Formatação |
Observação: se algum script ainda não existir no repo, trate como "contrato" do projeto — a gente cria conforme implementa.
airgraph-studio/
apps/
studio/ # app web (Vite + React)
src/
features/ # vertical slices
canvas/ # SVG + D3 rendering
inspector/ # side panel
importer/ # YAML/JSON import
store/ # Zustand store + slices
shared/ # app-level utils
main.tsx
App.tsx
index.html
vite.config.ts
packages/
graph-core/ # tipos + algoritmos (validateDag, topoSort, traversals)
layout-elk/ # adapter ELK (Graph → PositionedGraph)
render-d3/ # renderer D3/SVG (paths, zoom, hit testing)
docs/
overview.md
getting_started.md
instructions.md
prompts/ # prompts modulares para dev agent
system/ # convenções globais
features/ # prompts por feature
recipes/ # combinações de prompts
snippets/ # blocos reutilizáveis
.editorconfig
.gitignore
package.json
pnpm-workspace.yaml
tsconfig.base.json
- Branch:
feat/...,fix/...,chore/... - Commits: preferir Conventional Commits (
feat:,fix:,docs:)
- Todo algoritmo de grafo em
packages/graph-coredeve ter teste unitário. - Componentes e hooks críticos (zoom/pan, selection, highlight) devem ter pelo menos testes de lógica (e2e depois).
- Passa
test - Passa
lint - Sem warnings relevantes no console
- README/docs atualizados quando mudar contratos
- Import/export YAML (schema de pipeline)
- Ciclos: detectar e destacar arestas do ciclo
- Highlight upstream/downstream
- Cluster/Group por stage (RAW/CUR/BI)
- Mini-map + search
- Undo/redo
- Persistência de preferências (tema/layout)