Files
ContainerFlow/mejoras.md
T
2026-05-02 04:54:20 +00:00

147 lines
7.6 KiB
Markdown

# Mejoras Frontend - ContainerFlow
## Documentacion @xyflow/react 12
| Recurso | URL |
|---------|-----|
| **Docs principal** | https://reactflow.dev/learn |
| **API Reference** | https://reactflow.dev/api-reference |
| **Ejemplos** | https://reactflow.dev/examples |
| **UI Components** | https://reactflow.dev/ui |
| **Playground** | https://xyflow.com/labs/react-flow-playground |
| **GitHub** | https://github.com/xyflow/xyflow |
| **Migracion a v12** | https://reactflow.dev/learn/troubleshooting/migrate-to-v12 |
| **npm** | https://www.npmjs.com/package/@xyflow/react |
### Secciones clave de la documentacion
- **Learn > Core Concepts** — terms, building flows, interactivity, viewport, components
- **Learn > Customization** — custom nodes, handles, edges, labels, theming
- **Learn > Layouting** — overview, sub-flows
- **Learn > Advanced** — hooks, accessibility, testing, TypeScript, performance, state management
- **Reference > Hooks** — useNodes, useEdges, useReactFlow, etc.
- **Reference > Components** — Background, Controls, Handles, MiniMap, etc.
- **Reference > Utilities** — addEdge, applyNodeChanges, path functions
---
## Ejemplos relevantes para ContainerFlow
### Nodos
| Ejemplo | URL | Aplicacion en ContainerFlow |
|---------|-----|------------------------|
| Custom Nodes | https://reactflow.dev/examples/nodes/custom-node | Ya usamos ServiceNode y GroupNode custom |
| Node Toolbar | https://reactflow.dev/examples/nodes/node-toolbar | Agregar toolbar con acciones (restart, stop, logs) al seleccionar un container |
| Node Resizer | https://reactflow.dev/examples/nodes/node-resizer | Permitir redimensionar grupos manualmente |
| Updating Nodes | https://reactflow.dev/examples/nodes/update-node | Referencia para actualizar stats en tiempo real |
| Stress Test | https://reactflow.dev/examples/nodes/stress | Benchmark con muchos containers |
| Intersections | https://reactflow.dev/examples/nodes/intersections | Detectar overlaps entre nodos |
### Edges
| Ejemplo | URL | Aplicacion en ContainerFlow |
|---------|-----|------------------------|
| Animating Edges | https://reactflow.dev/examples/edges/animating-edges | Animaciones en edges para indicar actividad |
| Custom Edges | https://reactflow.dev/examples/edges/custom-edges | Ya usamos OffsetEdge custom |
| Edge Label Renderer | https://reactflow.dev/examples/edges/edge-label-renderer | Mostrar tipo de conexion (db, cache, proxy) como label en el edge |
| Floating Edges | https://reactflow.dev/examples/edges/floating-edges | Handles que se mueven con el edge en vez de posicion fija |
| Simple Floating Edges | https://reactflow.dev/examples/edges/simple-floating-edges | Alternativa mas simple — edges al handle mas cercano |
| Edge Markers | https://reactflow.dev/examples/edges/markers | Agregar flechas direccionales a las conexiones |
| Edge Toolbar | https://reactflow.dev/examples/edges/edge-toolbar | Mostrar info de conexion al hacer hover/click en un edge |
### Interaccion
| Ejemplo | URL | Aplicacion en ContainerFlow |
|---------|-----|------------------------|
| Context Menu | https://reactflow.dev/examples/interaction/context-menu | Click derecho en container → restart, stop, logs, inspect |
| Contextual Zoom | https://reactflow.dev/examples/interaction/contextual-zoom | Mostrar mas detalle (ports, stats) solo cuando hay zoom suficiente |
| Save and Restore | https://reactflow.dev/examples/interaction/save-and-restore | Ya tenemos posiciones persistidas, pero podriamos guardar/cargar layouts completos |
| Validation | https://reactflow.dev/examples/interaction/validation | Validar conexiones manuales si agregamos esa funcionalidad |
| Touch Device | https://reactflow.dev/examples/interaction/touch-device | Soporte para tablets/touch |
### Layout
| Ejemplo | URL | Aplicacion en ContainerFlow |
|---------|-----|------------------------|
| Dagre Tree | https://reactflow.dev/examples/layout/dagre | Ya tenemos dagre en package.json pero no lo usamos — alternativa a nuestro layout manual |
| Elkjs Tree | https://reactflow.dev/examples/layout/elkjs | Layout mas potente que dagre, reduce cruces de edges |
| Horizontal Flow | https://reactflow.dev/examples/layout/horizontal | Layout horizontal (izquierda a derecha) como alternativa |
| Node Collisions | https://reactflow.dev/examples/layout/node-collisions | Resolver overlaps automaticamente al mover nodos |
### Subflows y Agrupacion
| Ejemplo | URL | Aplicacion en ContainerFlow |
|---------|-----|------------------------|
| Sub Flows | https://reactflow.dev/examples/grouping/sub-flows | Referencia para nuestros GroupNode — grafos anidados |
### Estilos
| Ejemplo | URL | Aplicacion en ContainerFlow |
|---------|-----|------------------------|
| Dark Mode | https://reactflow.dev/examples/styling/dark-mode | Toggle dark/light mode |
| Tailwind | https://reactflow.dev/examples/styling/tailwind | Ya usamos Tailwind — referencia de estilos |
| Turbo Flow | https://reactflow.dev/examples/styling/turbo-flow | Nodos con bordes gradient animados — inspiracion visual |
### Misc
| Ejemplo | URL | Aplicacion en ContainerFlow |
|---------|-----|------------------------|
| Download Image | https://reactflow.dev/examples/misc/download-image | Exportar el diagrama como PNG para documentacion |
---
## Mejoras identificadas
### Criticas
- [ ] **Error boundaries** — Un crash en un nodo tumba toda la app. Agregar React error boundary alrededor de ReactFlow
- [ ] **Empty state** — Si no hay containers, mostrar mensaje "No containers found" en vez de canvas vacio
- [ ] **Reconnection feedback** — Mostrar "Reconnecting..." visible cuando se pierde el WebSocket
### UX
- [ ] **Context menu** — Click derecho en container: restart, stop, view logs, copy ID
- [ ] **Node toolbar** — Al seleccionar un nodo, mostrar acciones rapidas arriba del nodo
- [ ] **Contextual zoom** — Mostrar ports y stats detallados solo con zoom > 0.8, ocultar en zoom out
- [ ] **Edge labels** — Mostrar tipo de conexion (Database, Cache, Proxy) como label en cada edge
- [ ] **Edge markers** — Flechas direccionales para indicar flujo de datos
- [ ] **Download image** — Boton para exportar diagrama como PNG
- [ ] **Search/filter** — Buscar containers por nombre dentro del canvas
### Performance
- [ ] **Virtualizacion de logs** — LogPanel renderiza 2000 lineas de golpe. Usar virtualizacion (react-window o similar)
- [ ] **Reconnexion exponencial** — Backoff exponencial en vez de intervalo fijo 3s
- [ ] **Validacion de mensajes WS** — Validar estructura de mensajes con Zod antes de procesar
### Layout
- [ ] **Auto-layout con dagre/elkjs** — Usar la dependencia dagre que ya tenemos o migrar a elkjs para layout automatico
- [ ] **Collision detection** — Resolver overlaps automaticamente al mover nodos
- [ ] **Layout horizontal** — Opcion de layout izquierda-derecha ademas del actual
### Visual
- [ ] **Transiciones de layout** — Animar nodos cuando aparecen/desaparecen
- [ ] **Turbo-style glow** — Bordes con gradient animado para containers running
- [ ] **Dark/light mode** — Toggle de tema (actualmente solo dark)
### Accesibilidad
- [ ] **ARIA labels** — Agregar labels a botones de solo icono
- [ ] **Keyboard navigation** — Navegar entre nodos con teclado
- [ ] **Touch support** — Handles mas grandes para dispositivos tactiles
---
## Componentes UI de React Flow
React Flow lanzo "React Flow UI" (antes "React Flow Components") — componentes pre-hechos instalables via shadcn CLI:
- **Database Schema Node** — Visualizar tablas y relaciones
- **Zoom Slider** — Control de zoom mas visual que los botones default
- **Debug Components** — Inspeccionar propiedades de nodos y estado del flow
Docs: https://reactflow.dev/ui