FileFlow es un automatizador local de tareas de archivos para Windows, construido principalmente en Rust.
La idea del proyecto es ofrecer un Zapier local para archivos: copiar, mover, sincronizar, vigilar carpetas y ejecutar automatizaciones reutilizables sin depender de servicios externos.
- CLI en Rust para ejecutar acciones desde terminal.
- GUI de escritorio con Tauri, React y TypeScript.
- Motor central reutilizable con logs, progreso, estados y cancelacion.
- Acciones modulares registradas mediante factories.
- Pipelines JSON para encadenar acciones.
- Editor visual de pipelines.
- Biblioteca de pipelines recientes/guardados.
- Persistencia local de rutas, historial y preferencias de la GUI.
- Cola avanzada en GUI con procesos simultaneos, prioridades y limite editable.
- Barras de progreso independientes por cada proceso activo o en cola.
- Sincronizacion recursiva con
--dry-run,--overwritey--delete-extra. - Watcher de carpetas mediante
notify, disponible desde CLI y GUI. - Builds de Windows publicados directamente en
release/.
| Accion | Descripcion |
|---|---|
echo |
Accion de prueba para validar el flujo completo. |
copy |
Copia un archivo de origen a destino. |
move |
Mueve un archivo de origen a destino. |
sync |
Sincroniza carpetas, con soporte recursivo opcional. |
watch |
Vigila una carpeta y ejecuta un pipeline cuando detecta cambios. |
pipeline |
Ejecuta varias acciones en secuencia. |
fileflow/
├── crates/
│ ├── fileflow-core # Motor, Action trait, Context, logs y progreso
│ ├── fileflow-actions # Acciones, factories, registry y pipelines JSON
│ ├── fileflow-cli # CLI basada en clap
│ └── fileflow-gui # GUI Tauri + React
├── pipelines/ # Ejemplos de automatizaciones JSON
└── release/ # Ejecutables e instaladores publicados
CLI / GUI -> Registry -> ActionFactory -> Action -> Engine -> Context -> Logs / Progress / Result
Requisitos:
- Rust: https://rustup.rs
- Node.js y npm
- Dependencias de Tauri 2 para Windows
Compilar workspace Rust:
cargo build --releaseEjecutar tests:
cargo testEjecutar GUI en desarrollo:
cd crates/fileflow-gui
npm install
npm run tauri devCompilar frontend:
cd crates/fileflow-gui
npm run buildListar acciones:
cargo run -p fileflow-cli -- actions listCopiar archivo:
cargo run -p fileflow-cli -- run copy -- --src a.txt --dst b.txt --overwriteMover archivo:
cargo run -p fileflow-cli -- run move -- --src a.txt --dst b.txt --overwriteSincronizar carpetas:
cargo run -p fileflow-cli -- run sync -- --src ./origen --dst ./destino --recursivePrevisualizar sincronizacion sin escribir cambios:
cargo run -p fileflow-cli -- run sync -- --src ./origen --dst ./destino --recursive --delete-extra --dry-runEjecutar pipeline:
cargo run -p fileflow-cli -- run-config ./pipelines/demo.jsonValidar pipeline:
cargo run -p fileflow-cli -- validate-config ./pipelines/demo.jsonVigilar carpeta:
cargo run -p fileflow-cli -- run watch -- --path ./entrada --config ./pipelines/sync.json --recursive --debounce-ms 500La interfaz incluye:
- Acciones rapidas para
echo,copy,moveysync. - Selector de archivos y carpetas.
- Previsualizacion de sincronizaciones con
dry-run. - Editor visual de pipelines JSON.
- Biblioteca de pipelines recientes y guardados.
- Pantalla para vigilar carpetas y ejecutar pipelines al detectar cambios.
- Historial y rutas persistentes entre sesiones.
- Panel de cola con limite simultaneo editable.
- Prioridad por proceso: baja, normal, alta y critica.
- Barras de progreso independientes para cada trabajo activo o en cola.
- Cancelacion individual por proceso.
- Panel de actividad, logs e historial.
- Guia integrada y pantalla de proyecto.
Desde la version 0.6.0 la GUI puede ejecutar mas de un proceso al mismo tiempo. El limite por defecto es de 2 procesos simultaneos y puede ajustarse desde el panel superior de la aplicacion entre 1 y 8 procesos simultaneos.
Cuando se alcanza el limite, las nuevas acciones entran en cola. La cola arranca automaticamente el siguiente trabajo cuando queda un hueco libre. Los trabajos en cola se ordenan por prioridad y, a igualdad de prioridad, por orden de llegada.
Prioridades disponibles:
| Prioridad | Uso recomendado |
|---|---|
| Baja | Tareas pesadas que pueden esperar. |
| Normal | Valor por defecto para uso general. |
| Alta | Tareas que deben adelantarse a la cola normal. |
| Critica | Tareas urgentes que deben arrancar antes que el resto. |
Cada proceso tiene su propia barra de progreso, logs finales y boton de cancelacion. Cancelar un proceso en cola lo elimina antes de arrancar; cancelar un proceso en ejecucion activa su cancelacion cooperativa.
Los artefactos publicados se dejan directamente en release/, sin subcarpetas
por version:
release/
├── fileflow.exe
├── fileflow-cli.exe
├── fileflow_0.6.0_x64-setup.exe
└── fileflow_0.6.0_x64_en-US.msi
El ejecutable principal de la GUI se llama fileflow.exe. La CLI mantiene el
nombre fileflow-cli.exe para poder convivir en la misma carpeta.
Incorrecto:
fileflow run copy --src a.txt --dst b.txtCorrecto:
fileflow run copy -- --src a.txt --dst b.txtComprueba que el archivo o carpeta indicado en --src exista y que la ruta sea
valida desde el directorio en el que ejecutas el comando.
Para copy, move o sync, usa --overwrite cuando quieras permitir
sobrescritura.
- Mejorar la biblioteca de pipelines con busqueda y etiquetas.
- Ampliar cobertura de tests de integracion.
- Mejorar empaquetado y distribucion de releases.
- Plugins dinamicos o integraciones externas.
- Optimizaciones para trabajos grandes.
Lucas Ruiz
Proyecto personal en Rust para automatizacion local de archivos.