Work Planner
Un'applicazione web per pianificare il carico di lavoro: una coda di attività viene versata, giorno per giorno, nella capacità disponibile. Ogni cambiamento è prima una proposta di cui si vede l'impatto, e solo dopo l'approvazione cambia il piano.
Perché l'ho fatto
Quando arriva una richiesta nuova, la domanda vera è: che cosa succede al piano se la accetto? Un elenco di attività o un registro delle ore non rispondono, perché non dicono a che cosa è assegnata la capacità. Volevo poter dare a un responsabile date di consegna credibili, con i numeri davanti.
Non è un gestore di attività e non misura il tempo effettivo: la timeline è l'allocazione prevista e concordata. L'ho pensato per uso personale, con un solo utente.

Come funziona
La coda ordinata è la priorità: non ci sono punteggi che decidono al posto mio. Il lavoro di ogni attività viene versato nei giorni, spezzandosi dove serve. Se riordino la coda, registro ferie o aggiungo una richiesta, il programma mostra il piano prima e dopo; applico o annullo.
Alcune scelte non sono ovvie e le ho scritte nella specifica: un'attività pronta in anticipo non libera capacità, la capacità recuperata non compatta il piano, una data fissa non riordina la coda ma segnala un conflitto.
Scelte tecniche
- Il pianificatore è fatto di funzioni pure, senza database, framework né orologio: è l'unico punto dove un errore passa inosservato e costa caro, quindi lo provo più di tutto il resto (199 test sul backend, tra cui test sugli invarianti: nessun minuto perso o inventato, nessun giorno oltre la capacità).
- Il calendario si legge e si pubblica solo in formato iCalendar, anche per Outlook e Google.
- Un'API permette a Claude di agire sull'app con la stessa logica dell'interfaccia; nel repository c'è una skill per Claude Code. Il programma l'ho scritto insieme a Claude Code.
- Un report per il responsabile, esportabile in PNG o PDF, e uno storico con annullamento.
Limiti e stato
È un progetto giovane: la storia git copre tre giorni di settembre 2026, 34 commit e circa 9.500 righe. Funziona per me, in produzione per uso personale, ma non è pensato per più utenti e non lo considero maturo. Le schermate sopra usano dati di prova.
Stack: Python, FastAPI, SQLAlchemy, Alembic, PostgreSQL, Vue 3, Pinia, TypeScript, Vite, Docker Compose.

