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.

Python FastAPI TypeScript React Zustand Tauri Rust Pydantic

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.

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

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

Risorse