TinkerSet

App escritorio/web para buscar y organizar archivos mediante reglas configurables y asistencia de LLMs. UI en React+Tauri con backend FastAPI para gestión y ejecución de acciones.

Python FastAPI TypeScript React Zustand Tauri Rust Pydantic

Resumen

Monorepo que combina una interfaz de usuario en React (con estado gestionado por Zustand) empacada para escritorio con Tauri y un backend en Python (FastAPI). Permite definir "jobs" JSON que se pueden previsualizar o ejecutar sobre el sistema de ficheros, y ofrece interpretación de prompts naturales vía múltiples proveedores LLM. Dispone de CLI, rutas HTTP, y motores modulares de filtros y acciones.

Arquitectura

Estructura de carpetas: frontend contiene la UI (React + TypeScript + Vite) y el wrapper Tauri (src-tauri/). app aloja el backend FastAPI con services/ (llm_service, processor, action_engine, filter_engine), models/ (Job), y cli.py. La app expone endpoints (p.ej. /preview, /execute, /ai/interpret) a los que la UI o el CLI pueden llamar; Tauri ofrece integración IPC para el ejecutable de escritorio. Configuración centralizada en config.py que carga .env. LLM integrations soportan groq, ollama y openai y están encapsuladas en services/llm_service.py.

Frontend Tauri Backend (FastAPI) Services LLM Providers Local File System

Decisiones técnicas clave

Monorepo para mantener frontend (Tauri) y backend (FastAPI) juntos y facilitar pruebas locales

Tauri + React para ofrecer experiencia de escritorio y desarrollo web con la misma base de código

FastAPI + Pydantic para validación y endpoints HTTP rápidos y tipados

Arquitectura basada en servicios (services/) para separar llm_service, processor, action_engine y filter_engine

CLI (cli.py) para workflows offline y pruebas reproducibles

Centralizar carga de .env en config.py para consistencia en entorno

Tipado reforzado en frontend (evitar any, usar unknown y helper de errores) para mayor seguridad

Estándar de nombres consistente para proveedores LLM

Desafíos

Gestión de secretos en .env (riesgo de exponer API keys si se comite) — requiere políticas y CI secrets

Tauri añade complejidad de build multiplataforma (Rust toolchain y dependencias nativas en Windows)

Probar integraciones LLM puede requerir claves externas o sistemas de emulación para CI

Sin base de datos persistente en el core: operaciones sobre ficheros y jobs en memoria/JSON requieren cuidado para concurrencia y recuperación

Dependencias dev (Black, Ruff, pre-commit, pytest) incrementan la huella local y complican reproducibilidad sin CI

Compromisos

Monorepo facilita sincronía entre UI y backend pero puede aumentar tamaño del repositorio

Tauri ofrece APIs nativas y empaquetado desktop a costa de builds más complejos y dependencias nativas

Soportar múltiples proveedores LLM incrementa flexibilidad pero añade complejidad en el código y en la gestión de credenciales

No usar una DB relacional simplifica el diseño inicial pero limita auditoría/rollback y facilita inconsistencias si hay fallos en ejecución

Reescribir errores en frontend para usar unknown y helper mejora seguridad de tipos pero requiere cambios extensivos en componentes existentes

Recursos