TinkerSet
Applicazione desktop/web per esplorare e organizzare file tramite regole configurabili e assistenza LLM. UI React+Tauri con backend FastAPI per elaborazione ed esecuzione azioni.
Panoramica
Monorepo che combina un'interfaccia utente React (con stato gestito da Zustand) pacchettizzata per desktop con Tauri e backend Python (FastAPI). Consente di definire "job" JSON che possono essere visualizzati in anteprima o eseguiti sul file system, e offre interpretazione di prompt naturali tramite più provider LLM. Include CLI, rotte HTTP e motori modulari di filtri e azioni.
Architettura
Struttura cartelle: frontend contiene l'UI (React + TypeScript + Vite) e wrapper Tauri (src-tauri/). app ospita backend FastAPI con services/ (llm_service, processor, action_engine, filter_engine), models/ (Job) e cli.py. L'app espone endpoint (ad es. /preview, /execute, /ai/interpret) che UI o CLI possono chiamare; Tauri fornisce integrazione IPC per l'eseguibile desktop. Configurazione centralizzata in config.py che carica .env. Integrazioni LLM supportano groq, ollama e openai ed sono incapsulate in services/llm_service.py.
Decisioni tecniche chiave
Monorepo per mantenere frontend (Tauri) e backend (FastAPI) insieme e facilitare test locali
Tauri + React per offrire esperienza desktop e sviluppo web con la stessa base di codice
FastAPI + Pydantic per validazione ed endpoint HTTP veloci e tipizzati
Architettura basata su servizi (services/) per separare llm_service, processor, action_engine e filter_engine
CLI (cli.py) per workflow offline e test riproducibili
Centralizzare caricamento .env in config.py per coerenza ambiente
Tipizzazione rafforzata in frontend (evitare any, usare unknown e helper errori) per sicurezza maggiore
Standard di denominazione coerente per provider LLM
Sfide
Gestione segreti in .env (rischio di esporre API key se commessi) — richiede policy e CI secrets
Tauri aggiunge complessità build multipiattaforma (Rust toolchain e dipendenze native su Windows)
Test integrazioni LLM può richiedere chiavi esterne o sistemi emulazione per CI
Senza database persistente nel core: operazioni file system e job in memoria/JSON richiedono attenzione per concorrenza e recupero
Dipendenze dev (Black, Ruff, pre-commit, pytest) aumentano impronta locale e complicano riproducibilità senza CI
Compromessi
Monorepo facilita sincronizzazione UI-backend ma può aumentare dimensione repository
Tauri offre API native e packaging desktop al costo di build più complessi e dipendenze native
Supportare più provider LLM aumenta flessibilità ma aggiunge complessità codice e gestione credenziali
Non usare DB relazionale semplifica design iniziale ma limita audit trail/rollback e agevola inconsistenze se esecuzione fallisce
Riscrivere errori frontend per usare unknown e helper migliora sicurezza tipi ma richiede cambiamenti estensivi componenti