Diagramas e fluxogramas de arquitetura declarativos, animados e programáveis em Python
Projete fluxos técnicos modernos uma única vez e renderize para Manim (MP4, GIF), Web Canvas/SVG interativo ou Remotion
Por que o animaflow? · Galeria & Exemplos · Arquitetura · Instalação · Começando Rápido · Exemplos Prontos · Identidade Visual · Estrutura · Roadmap · Autoria & Licença
Galeria & Exemplos
| Streaming Contínuo — fluxo em tempo real de partículas | Multi-Agent Swarm — DAG de orquestração em camadas | RAG Pipeline — arquitetura de busca e LLM |
Por que o animaflow?
Criar diagramas de arquitetura de software para redes profissionais (LinkedIn, X/Twitter), vídeos técnicos (YouTube, Reels) e apresentações corporativas geralmente exige:
- Escrever centenas de linhas manuais de geometria, coordenadas absolutas e updaters no Manim ou After Effects, ou
- Usar geradores estáticos (Graphviz, PlantUML, Diagrams) sem qualquer suporte a movimento, ritmo narrativo ou pulso de dados.
O animaflow resolve isso separando a definição semântica do fluxo dos motores de renderização:
- Declare Nós e Conexões: especifique nós, serviços, banco de dados, labels e metadados via DSL simples em Python.
- Auto-Layout Inteligente: organize automaticamente nós em camadas (DAGs), colunas ou sequências horizontais/verticais com alinhamento e margens dinâmicas anti-sobreposição.
- Timeline Narrativa: anime pacotes individuais, streams contínuos de partículas, transições de estado e realces de nós de forma declarativa.
- Múltiplos Backends: exporte diretamente para Manim CE (vídeos MP4 e GIFs em alta definição) e HTML/Web Canvas interativo.
Como funciona a arquitetura
O núcleo do animaflow é modular e extensível:
| Módulo / Subsistema | O que faz | Tecnologia / Detalhes |
|---|---|---|
Flow Core (core.flow) |
Armazena a topologia do grafo, metadados dos nós, conectores e parâmetros visuais | Python Puro / Dataclasses |
Layout Engine (core.layout) |
Algoritmos de arranjo automático (horizontal, vertical, empilhamento em camadas DAG) calculando larguras mínimas e espaçamento | Algoritmos de layout de grafos |
Timeline Engine (core.timeline) |
Orquestra as ações temporais: sequências de aparição (reveal), envio de pacotes (send_packet), streams contínuos (stream_packets), realces (highlight_node) e esperas (wait) |
Motor declarativo de eventos |
Manim Backend (backends.manim) |
Converte nós e conexões em Mobjects vetoriais modernos com tipografia refinada, sombras sutis, badges de subtítulo e renderiza a cena | Manim Community Edition (CE) |
Web Canvas Backend (backends.web) |
Gera código HTML/SVG independente e interativo com simulação física de partículas em JavaScript puro | SVG nativo + ES6 Vanilla JS |
Instalação
# Instalação básica (Core + exportação Web Canvas)
pip install animaflow
# Core com todos os renderizadores opcionais, incluindo Manim (MP4 / GIF)
pip install "animaflow[all]"
# Ferramentas de teste, lint, tipos e publicação
pip install -e ".[dev]"
Nota: Para renderização via Manim, é necessário ter o
ffmpeginstalado no seu sistema operacional.
Publicar uma versão
O workflow publish.yml testa em Python 3.10–3.12 e valida o wheel e o sdist. Para publicar no PyPI, crie uma GitHub Release com a tag vX.Y.Z; a tag deve corresponder às versões em pyproject.toml e src/animaflow/__init__.py. Para testar, execute o workflow manualmente com o destino testpypi.
Antes da primeira publicação, cadastre um pending publisher em cada índice:
| Campo | PyPI | TestPyPI |
|---|---|---|
| Project name | animaflow |
animaflow |
| Owner | Oseiasdfarias |
Oseiasdfarias |
| Repository | animaflow |
animaflow |
| Workflow filename | publish.yml |
publish.yml |
| Environment | pypi |
testpypi |
No PyPI, configure o pending publisher em Publishing; no TestPyPI, use Publishing. Os environments pypi e testpypi do GitHub já estão criados. O OIDC não usa tokens ou secrets do PyPI.
Começando Rápido
1. Criando um fluxo com animação contínua (Stream de Partículas)
from manim import Scene
import animaflow as af
class MyArchitectureScene(Scene):
def construct(self):
# 1. Cria o fluxo de arquitetura
flow = af.Flow(title="Real-Time Event Processing")
# 2. Declara os nós do sistema
client = flow.add_node("Mobile / IoT", subtitle="MQTT Producer")
broker = flow.add_node("Event Bus", subtitle="Kafka Cluster")
worker = flow.add_node("Stream Worker", subtitle="Flink / Python")
store = flow.add_node("Data Lake", subtitle="ClickHouse")
# 3. Organiza o layout em camadas automáticas
flow.auto_layout_layers([[client], [broker], [worker], [store]], h_gap=1.6, v_gap=0.8)
# 4. Conecta os componentes
flow.connect(client, broker, label="telemetry")
flow.connect(broker, worker, label="ingest")
flow.connect(worker, store, label="batch write")
# 5. Programa a narrativa de animação
flow.timeline.reveal_sequence(delay=0.3)
flow.timeline.stream_packets(count=6, speed=0.8, duration=3.0)
flow.timeline.wait(1.0)
# 6. Renderiza na cena Manim
flow.render_manim(self)
2. Exportando para Web Interativa (HTML/SVG)
# Exportação simples para arquivo HTML estático
html_content = flow.export_html()
with open("arquitetura.html", "w", encoding="utf-8") as f:
f.write(html_content)
Exemplos Prontos
O repositório inclui exemplos completos na pasta examples/:
| Exemplo | Descrição | Como Executar |
|---|---|---|
event_driven_pipeline.py |
Pipeline de eventos em tempo real com stream contínuo de partículas e layout em camadas | manim -qm examples/event_driven_pipeline.py EventDrivenPipelineAnimation |
multi_agent_swarm.py |
DAG de orquestração multi-agente com nós em cascata e nós paralelos | manim -qm examples/multi_agent_swarm.py AgentSwarmAnimation |
rag_pipeline_manim.py |
Arquitetura completa de RAG (Retrieval-Augmented Generation) | manim -qm examples/rag_pipeline_manim.py RAGFlowAnimation |
rag_pipeline_web.py |
Demonstração da exportação para visualizador HTML interativo | python examples/rag_pipeline_web.py |
Identidade Visual (Nordic Sage & Carbon)
A identidade visual do animaflow foi concebida com princípios de design editorial nórdico e precisão industrial, evitando gradientes genéricos e priorizando contraste técnico:
- Símbolo: Três nós de arquitetura dispostos em triangulação fechada por um circuito orbital contínuo de dados.
- Tipografia: IBM Plex Sans SemiBold com curvas vetoriais extraídas via
fontTools(sem dependência de fontes externas instaladas). - Pacote Completo: Disponível no diretório
brand/com versões em SVG puro, PNGs rasterizados via PyCairo (16px a 1600px), favicons e guia de uso embrand/README.md.
Estrutura do Repositório
animaflow/
├── brand/ # Identidade visual oficial (Nordic Sage & Carbon)
│ ├── README.md # Especificação de design, paleta e regras de aplicação
│ ├── scripts/ # Scripts autônomos de geração (PyCairo + fontTools)
│ ├── svg/ # SVGs de alta precisão com tipografia em curvas
│ └── png/ # PNGs rasterizados em alta resolução (16px a 1600px)
├── docs/ # Documentação técnica de implementação e assets
│ ├── IMPLEMENTATION_OVERVIEW.md # Status detalhado das implementações e roadmap
│ └── assets/ # Demonstrações, capturas e GIFs do pipeline
├── src/
│ └── animaflow/
│ ├── core/ # Modelos (Flow, Node, Edge, Layout, Timeline)
│ │ ├── flow.py
│ │ ├── layout.py
│ │ └── timeline.py
│ └── backends/ # Renderizadores plugáveis
│ ├── manim/ # Integração Manim CE (Mobjects vetoriais e animações)
│ └── web/ # Gerador de Canvas SVG interativo
├── examples/ # Scripts de demonstração prontos para rodar
├── tests/ # Bateria de testes unitários e de integração
├── pyproject.toml # Metadados de empacotamento e dependências
└── README.md # Documentação principal
Roadmap e Próximos Passos
Para uma visão detalhada do que já foi construído e das próximas entregas, consulte o documento docs/IMPLEMENTATION_OVERVIEW.md.
- DSL semântica de fluxos em Python
- Motor de auto-layout em camadas (DAGs) com margens dinâmicas anti-sobreposição
- Renderizador vetorial Manim com suporte a temas e subtítulos
- Animação de pacotes discretos e stream contínuo de partículas
- Exportador para Web Canvas SVG interativo
- Identidade visual oficial Nordic Sage & Carbon (SVGs, PNGs, Favicons, Banner)
- Controles interativos no Web Canvas (Play/Pause, Zoom e Pan)
- Suporte nativo a Diagramas de Sequência (
SequenceDiagram) - API de estilização avançada (formas de nós customizadas, estilos de setas e gradientes)
- CLI dedicada (
animaflow render <script> --backend manim|web) - Exportação direta para formatos adicionais (JSON para Remotion, GraphViz DOT)
Autoria & Licença
Desenvolvido por Oséias Farias.
Distribuído sob a licença MIT. Consulte LICENSE para mais detalhes.
Release files for animaflow 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| animaflow-0.1.0.tar.gz | 1.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| animaflow-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.3 MB
Release files / animaflow-0.1.0.tar.gz
| Download URL | animaflow-0.1.0.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5f890720ed609649145211a47f11fccbd7cc7e725cca3f7e62a6ab635e0e4ab1
|
|
BLAKE2b-256 checksum How to use checksums |
547770e916dd06e9110da2681e4a1040ecc06f4a4f9d8983bc28afc1afe8d6bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / animaflow-0.1.0-py3-none-any.whl
| Download URL | animaflow-0.1.0-py3-none-any.whl |
|---|---|
| Size | 21.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ab0ebf954dd659064bb88be6525f1f9ff54b9df3d2df11cd964d40ed34ee7ac2
|
|
BLAKE2b-256 checksum How to use checksums |
0ab4ec007204e8cb4c0b4e0d2ff2295ecede32e70a8de834115b072a58b83304
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency log