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.

Coda a sinistra, settimana a destra; in basso la proposta con impatto prima e dopo (dati di prova).

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.

Alcune schermate

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.