Skip to content

lruizap/fileflow

Repository files navigation

FileFlow

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.

Estado actual

  • 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, --overwrite y --delete-extra.
  • Watcher de carpetas mediante notify, disponible desde CLI y GUI.
  • Builds de Windows publicados directamente en release/.

Acciones disponibles

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.

Arquitectura

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

Desarrollo

Requisitos:

Compilar workspace Rust:

cargo build --release

Ejecutar tests:

cargo test

Ejecutar GUI en desarrollo:

cd crates/fileflow-gui
npm install
npm run tauri dev

Compilar frontend:

cd crates/fileflow-gui
npm run build

Uso CLI

Listar acciones:

cargo run -p fileflow-cli -- actions list

Copiar archivo:

cargo run -p fileflow-cli -- run copy -- --src a.txt --dst b.txt --overwrite

Mover archivo:

cargo run -p fileflow-cli -- run move -- --src a.txt --dst b.txt --overwrite

Sincronizar carpetas:

cargo run -p fileflow-cli -- run sync -- --src ./origen --dst ./destino --recursive

Previsualizar sincronizacion sin escribir cambios:

cargo run -p fileflow-cli -- run sync -- --src ./origen --dst ./destino --recursive --delete-extra --dry-run

Ejecutar pipeline:

cargo run -p fileflow-cli -- run-config ./pipelines/demo.json

Validar pipeline:

cargo run -p fileflow-cli -- validate-config ./pipelines/demo.json

Vigilar carpeta:

cargo run -p fileflow-cli -- run watch -- --path ./entrada --config ./pipelines/sync.json --recursive --debounce-ms 500

GUI

La interfaz incluye:

  • Acciones rapidas para echo, copy, move y sync.
  • 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.

Procesos simultaneos en GUI

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.

Release

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.

Errores comunes

Falta de -- al pasar argumentos a una accion

Incorrecto:

fileflow run copy --src a.txt --dst b.txt

Correcto:

fileflow run copy -- --src a.txt --dst b.txt

Ruta de origen inexistente

Comprueba que el archivo o carpeta indicado en --src exista y que la ruta sea valida desde el directorio en el que ejecutas el comando.

Destino ya existente

Para copy, move o sync, usa --overwrite cuando quieras permitir sobrescritura.

Roadmap

  • 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.

Autor

Lucas Ruiz

Proyecto personal en Rust para automatizacion local de archivos.

About

FileFlow es una aplicación de escritorio portable diseñada para automatizar procesos repetitivos del sistema de archivos en Windows.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors