Skip to content

Flowly - Herramienta web ligera para crear diagramas ER, UML, flowcharts y más. Construida con vanilla JS y Konva.js. Exporta a SVG, PNG, JPG y PDF.

License

Notifications You must be signed in to change notification settings

YamiCueto/Flowly

Repository files navigation

🎨 Flowly - Herramienta Ligera de Diagramas para Desarrolladores

💡 ¿Por qué otra herramienta de diagramas?

Sugerencia de GIF: Grabación de 30 segundos mostrando:

  1. Abrir Flowly (carga instantánea, sin login)
  2. Arrastrar y soltar 3-4 figuras rápidamente
  3. Conectarlas con flechas
  4. Ajustar colores/propiedades en tiempo real
  5. Exportar a SVG con un clic Texto: "De idea a diagrama en 30 segundos. Sin cuenta requerida."

Como desarrolladores, pasamos horas diseñando arquitecturas, esquemas de bases de datos y flujos de sistema. Pero la mayoría de las herramientas de diagramas:

  • 🐌 Requieren instalación (aplicaciones de escritorio pesadas)
  • 💸 Bloquean funciones tras muros de pago (Lucidchart, Miro)
  • 🔐 Fuerzan creación de cuenta (herramientas cloud-first)
  • 🎨 Abruman con funciones que nunca usamos

Flowly es diferente: Una aplicación web de instalación cero y código abierto que hace una cosa excepcionalmente bien — ayudarte a bosquejar diagramas técnicos rápido.

Construida para Desarrolladores

// ¿Te gusta esto?
const diagrama = {
  instantaneo: true,
  offline: true,
  cuentaRequerida: false,
  caracteristicas: "solo lo que necesitas"
}

Eso es Flowly. Sin tonterías, solo diagramas.


🎯 Comparación de Características

Característica Flowly draw.io Lucidchart Miro
Sin Instalación ✅ Solo web ✅ Web/Escritorio ✅ Web ✅ Web
Modo Offline ✅ Completo ⚠️ Limitado
Sin Cuenta Requerida ✅ Siempre ✅ Opcional ❌ Requerido ❌ Requerido
Código Abierto ✅ MIT ✅ Apache 2.0 ❌ Propietario ❌ Propietario
Formatos de Exportación 5 (PNG,JPG,SVG,PDF,JSON) 10+ 5+ 3
Colaboración 🔜 Planeado
Tamaño de Archivo ~50KB ~2MB N/A N/A
Tiempo de Carga <1s ~3s ~5s ~4s
Precio Gratis Gratis $7.95/mes $8/mes

El punto ideal de Flowly: Bocetos arquitectónicos rápidos, ERDs de bases de datos y diagramas de sistema cuando los necesitas ahora.


🚀 Inicio Rápido

Opción 1: Usar Online (Recomendado)

Solo visita yamicueto.github.io/Flowly — funciona en cualquier dispositivo con navegador.

Opción 2: Ejecutar Localmente (Offline)

# Clonar el repositorio
git clone https://github.com/YamiCueto/Flowly.git
cd Flowly

# Abrir en el navegador (¡sin proceso de compilación!)
open index.html  # macOS
start index.html # Windows
xdg-open index.html # Linux

Eso es todo. Cero dependencias, cero proceso de compilación.

Opción 3: Despliega Tu Propia Instancia

GitHub Pages (Gratis):

# Haz fork del repo, luego:
gh repo clone tu-usuario/Flowly
cd Flowly
git push origin main

# Habilita Pages: Settings → Pages → Source: rama main
# Tu app: https://tu-usuario.github.io/Flowly

Netlify/Vercel (1 clic): Desplegar en Netlify


📸 Capturas de Pantalla y Casos de Uso

1️⃣ Diseño de Esquemas de Bases de Datos

Haz clic para ver ejemplo

Sugerencia de captura: Diagrama ER con 5-6 tablas (Usuarios, Órdenes, Productos) conectadas por líneas de relación, mostrando claves foráneas y tipos de datos en etiquetas de texto.

Úsalo para:

  • Diseño de tablas PostgreSQL/MySQL
  • Planificación de colecciones MongoDB
  • Modelado de datos de API

Consejo pro: Exporta como SVG → incrústalo en tu documentación de arquitectura.

2️⃣ Diagramas de Arquitectura de Sistemas

Haz clic para ver ejemplo

Sugerencia de captura: Arquitectura de microservicios con cajas para servicios (Auth, API Gateway, DB), flechas mostrando llamadas HTTP/gRPC, e íconos de nube para servicios AWS/GCP.

Úsalo para:

  • Explicar componentes del sistema a tu equipo
  • Incorporación de nuevos desarrolladores
  • Documentación técnica

Consejo pro: Usa hexágonos para servicios, rectángulos para bases de datos, círculos para APIs externas.

3️⃣ Diagramas de Flujo y Máquinas de Estado

Haz clic para ver ejemplo

Sugerencia de captura: Diagrama de flujo de procesamiento de órdenes con diamantes de decisión ("¿Pago OK?"), cajas de proceso ("Enviar Email"), y flechas con etiquetas.

Úsalo para:

  • Visualización de lógica de negocio
  • Diseño de máquinas de estado
  • Planificación de pipelines CI/CD

Consejo pro: Usa etiquetas de flecha para documentar condiciones (haz clic en la flecha → edita texto).


⚡ Características Principales

Canvas e Interacción

  • Canvas infinito con zoom/paneo suave
  • Grilla inteligente con ajuste configurable (20px por defecto)
  • Multi-selección (Shift+Clic o arrastra para seleccionar área)
  • Deshacer/Rehacer (historial de 50 pasos, Ctrl+Z/Y)
  • Copiar/Pegar funciona entre pestañas del navegador

Librería de Figuras

  • 8 tipos de figuras: Rectángulo, Círculo, Elipse, Triángulo, Pentágono, Hexágono, Línea, Flecha
  • Figuras de texto con edición inline (doble clic)
  • Figuras arrastrables desde la barra lateral
  • Dibujo con mouse (herramienta activa + arrastra en canvas)

Personalización

  • Selectores de color para relleno y contorno (+ transparente)
  • Ancho de contorno (deslizador 0-20px)
  • Control de opacidad (0-100%)
  • Posición manual (entradas X/Y)
  • Tamaño manual (entradas de ancho/alto con bloqueo de aspecto)
  • Rotación (deslizador 0-360° + entrada de grados)

Opciones de Exportación

Formato Casos de Uso Configuración
PNG Presentaciones, documentos Alta calidad (2x pixel ratio)
JPG Archivos adjuntos de email Deslizador de calidad (0.1-1.0)
SVG Escalado vectorial, Figma/Sketch Transforma preservadas (matrices)
PDF Reportes formales, impresos Ajuste automático de página, multi-página
JSON Backup, control de versiones Git Estado completo del proyecto

Consejo pro: Usa SVG para documentación técnica (se verá nítido en Confluence/Notion), PNG para Slack/Discord.

Almacenamiento

  • LocalStorage (hasta 10 proyectos)
  • Auto-guardado cada 30 segundos (si está habilitado)
  • Miniaturas del proyecto para navegación rápida
  • Exportación/Importación JSON para transferencia entre dispositivos

⌨️ Atajos de Teclado

Herramientas

Atajo Acción
V Herramienta de Selección (predeterminada)
R Rectángulo
C Círculo
E Elipse
T Triángulo
P Pentágono
H Hexágono
L Línea
A Flecha
X Texto

Edición

Atajo Acción
Ctrl + C Copiar figuras seleccionadas
Ctrl + V Pegar (con desplazamiento +20px)
Ctrl + X Cortar
Ctrl + A Seleccionar todo
Delete Eliminar seleccionadas
Ctrl + D Duplicar seleccionadas
Ctrl + Z Deshacer
Ctrl + Shift + Z Rehacer
Ctrl + Y Rehacer (alternativo)

Vista

Atajo Acción
Ctrl + Scroll Zoom in/out
Ctrl + 0 Ajustar al lienzo
G Alternar grilla
Espacio + Arrastrar Paneo

Archivo

Atajo Acción
Ctrl + S Guardar proyecto
Ctrl + O Cargar proyecto
Ctrl + N Nuevo proyecto
Ctrl + E Abrir modal de exportación

🏗️ Arquitectura

┌─────────────────────────────────────────────────────────┐
│                     FlowlyApp (app.js)                  │
│         Orquestador de la Aplicación & Inicialización   │
└────────┬──────────────┬──────────────┬─────────────────┘
         │              │              │
         ▼              ▼              ▼
┌─────────────┐  ┌──────────────┐  ┌────────────────┐
│ CanvasManager│  │ ToolManager  │  │ ExportManager  │
│  Konva Stage │  │ Cambio de    │  │ PNG/JPG/SVG/   │
│  Figuras     │  │ herramientas │  │ PDF/JSON       │
│  Selección   │  │ Manejo de    │  │ Serialización  │
│  Historial   │  │ dibujo       │  │                │
└──────┬───────┘  └──────┬───────┘  └────────┬───────┘
       │                 │                   │
       │   ┌─────────────┴──────────┐        │
       │   ▼                        ▼        │
       │  ┌──────────────┐   ┌──────────────┐│
       │  │ ShapeFactory │   │ StorageManager││
       │  │ (shapes.js)  │   │ (storage.js)  ││
       │  │ Rect, Circle │   │ LocalStorage  ││
       │  │ Line, etc.   │   │ Guardar/Cargar││
       │  └──────────────┘   └───────────────┘│
       │                                       │
       ▼                                       ▼
┌────────────────────────────────────────────────────┐
│            Módulos UI (ui/*)                       │
│  • Barra de herramientas • Panel de propiedades    │
│  • Atajos • Modales • Notificaciones               │
└────────────────────────────────────────────────────┘

Patrón clave: Arquitectura modular con patrón "attacher" para refactorización incremental sin romper cambios.


🛠️ Stack Tecnológico

Tecnología Versión ¿Por qué?
Konva.js 9.3.14 API de canvas 2D de alto rendimiento con manejo de eventos
html2canvas 1.4.1 Exportación de canvas a PNG/JPG raster
jsPDF 2.5.1 Generación de PDF del lado del cliente
FileSaver.js 2.0.5 Cross-browser saveAs() para descargas
Bootstrap 5 5.3.0 Tooltips y utilidades CSS
Font Awesome 6.4.0 Íconos de herramientas
SweetAlert2 11.7.3 Notificaciones toast bonitas
JavaScript Vanilla ES6+ Sin frameworks — ejecutable en cualquier navegador moderno

Sin dependencias de construcción. Sin webpack, rollup, o vite. Solo abre index.html.


📊 Estadísticas del Proyecto

📁 Tamaño total: ~50KB (HTML+CSS+JS, sin minificar)
📄 Líneas de código:
   ├─ JavaScript: ~1,500 líneas
   ├─ CSS: ~800 líneas
   └─ HTML: ~400 líneas

⚡ Rendimiento:
   ├─ Tiempo de carga: <1s (cold cache)
   ├─ FPS de canvas: 60fps (60 figuras)
   └─ Uso de memoria: ~30MB (típico)

🌐 Compatibilidad del navegador:
   ├─ Chrome/Edge: 90+ ✅
   ├─ Firefox: 88+ ✅
   ├─ Safari: 14+ ✅
   └─ Mobile: iOS 14+, Android Chrome ✅

🗺️ Roadmap

v1.1 (T2 2025) — Exportación Mejorada & Colaboración

  • Importar archivos XML de draw.io
  • Exportar a formato Figma/Sketch
  • Compartir vía URL única (integración Firebase)
  • Modo offline PWA (Service Worker)
  • Tema oscuro

v1.2 (T3 2025) — Conectores Inteligentes

  • Conectores de auto-enrutamiento (codo, curvas bezier)
  • Ajuste magnético a puntos de anclaje
  • Etiquetas y estilos de conector
  • Algoritmos de auto-diseño de figuras

v2.0 (2026) — Colaboración en Tiempo Real

  • Edición multi-usuario (WebRTC)
  • Indicadores de presencia (cursores, selecciones)
  • Hilos de comentarios en figuras
  • Historial de versiones (viaje en el tiempo)
  • Sistema de plugins para figuras personalizadas

Vota por características: GitHub Discussions


🤝 Contribuir

¡Las contribuciones son bienvenidas! Ya sea que estés arreglando un bug o añadiendo una nueva figura, apreciamos tu ayuda.

Inicio Rápido

  1. Fork el repo
  2. Clona tu fork: git clone https://github.com/tu-usuario/Flowly.git
  3. Crea una rama: git checkout -b feature/figura-estrella
  4. Haz cambios (ver CONTRIBUTING.md para pautas)
  5. Prueba localmente: Abre index.html en el navegador
  6. Commit: git commit -m "feat: añadir figura estrella a la barra de herramientas"
  7. Push: git push origin feature/figura-estrella
  8. Abre un PR en GitHub

Áreas que Necesitan Ayuda

  • Pruebas automatizadas (Vitest + Playwright)
  • Accesibilidad (navegación por teclado, lectores de pantalla)
  • Nuevos tipos de figuras (estrella, diamante, nube)
  • i18n (soporte multi-idioma)
  • Optimización móvil (gestos táctiles)

Ver issues etiquetadas good first issue.


📜 Licencia

Este proyecto está licenciado bajo la Licencia MIT — ver el archivo LICENSE para detalles.

TL;DR: Puedes hacer lo que quieras con este código — úsalo, modifícalo,
distribuye, vende productos basados en él. Solo mantén el aviso de copyright.

💬 Preguntas Frecuentes

¿Por qué no solo usar draw.io?

draw.io es increíble, pero es enorme (~2MB de JS). Flowly es 50KB — 40x más pequeño. Si solo necesitas diagramas técnicos rápidos, Flowly carga más rápido y está enfocado para desarrolladores.

¿Es realmente offline?

, una vez que cargues la página, todo funciona offline (excepto cargar figuras personalizadas desde CDN). Los proyectos se guardan en LocalStorage, sin servidor backend. La versión PWA (v1.1) añadirá soporte offline completo incluso en la primera carga.

¿Puedo usarlo para proyectos comerciales?

, es MIT-Licensed. Usa Flowly en tu empresa, vende diagramas creados con él, lo que sea. Solo no elimines el aviso de copyright del código fuente si lo redistribuyes.

¿Dónde se guardan mis datos?

En tu navegador (LocalStorage). Nunca subimos nada a ningún servidor. Si borras los datos del navegador, borras los proyectos — ¡así que exporta JSON regularmente como backups!

¿Flowly soporta colaboración?

Todavía no (v1.0 es de un solo usuario). La colaboración en tiempo real está planeada para v2.0 (2026) usando WebRTC. Mientras tanto, usa JSON export/import para compartir proyectos.

¿Cómo puedo reportar bugs o solicitar características?

Abre un issue en GitHub o inicia una discusión. Los PRs también son bienvenidos!


🌟 Apoya el Proyecto

Si Flowly te ahorra tiempo, considera:

  • Dale una estrella a este repo (ayuda a otros a descubrirlo)
  • 🐦 Comparte en Twitter/LinkedIn (etiqueta a @YamiCueto)
  • 🐛 Reporta bugs o contribuye con código
  • 💸 Patrocina el desarrollo vía GitHub Sponsors (próximamente)

Historial de Estrellas


📞 Contacto

Autor: Yami Cueto
GitHub: @YamiCueto
Proyecto: github.com/YamiCueto/Flowly

¿Tienes preguntas? Abre una discusión o etiquétame en issues.


Hecho con ❤️ para desarrolladores que odian las tonterías

⬆️ Volver arriba

About

Flowly - Herramienta web ligera para crear diagramas ER, UML, flowcharts y más. Construida con vanilla JS y Konva.js. Exporta a SVG, PNG, JPG y PDF.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published