---
title: "Work Planner"
url: "https://edoardogabrielli.com/en/projects/work-planner"
lang: "en"
updated: "2026-11-02"
---

# Work Planner

> Work Planner: a personal application to plan workload and see the effect of every change before approving it.

A web application to plan workload: a queue of tasks is poured, day by day, into the available capacity. Every change is first a proposal whose impact you can see, and the plan changes only after approval.

## Why I built it

When a new request arrives, the real question is: what happens to the plan if I accept it? A task manager or time tracker does not answer, because it does not say what the capacity is allocated to. I wanted to give a manager credible delivery dates, with the numbers in front of me.

It is not a task manager and does not measure actual time: the timeline is the planned, agreed allocation. I designed it for personal use, with a single user.

![Queue on the left, week on the right; below, the proposal with before and after impact (sample data).](https://edoardogabrielli.com/media/originals/2026/11/f018617d4b634f41a1e596c12429dd28/work-planner-planning.webp)

## How it works

The ordered queue is the priority: there are no scores deciding in my place. Each task's work is poured into the days, splitting where needed. If I reorder the queue, record leave or add a request, the program shows the plan before and after; I apply or cancel.

Some choices are not obvious and I wrote them in the specification: a task ready early does not free capacity, recovered capacity does not compact the plan, a fixed date does not reorder the queue but raises a conflict.

## A few screens

![Bar timeline per project, with delivery dates.](https://edoardogabrielli.com/media/originals/2026/11/8e7cb1fa32984a5d92b78c6ac1467acc/work-planner-timeline.webp)

![Planning on a phone, with the «Plan changed» bar.](https://edoardogabrielli.com/media/originals/2026/11/6a7cf401a2b84e158eb3e92795c73c19/work-planner-mobile.webp)

## Technical choices

- The scheduler is made of pure functions, with no database, framework or clock: it is the one place where a bug goes unnoticed and costs a lot, so I test it more than anything else (199 backend tests, including tests on invariants: no minute lost or invented, no day over capacity).
- The calendar is read and published only as iCalendar, including for Outlook and Google.
- An API lets Claude act on the app with the same logic as the interface; the repository contains a skill for Claude Code. I wrote the program together with Claude Code.
- A manager report exportable as PNG or PDF, and a history with undo.

## Limits and status

It is a young project: the git history covers three days of September 2026, 34 commits and about 9,500 lines. It works for me, in production for personal use, but it is not meant for several users and I do not consider it mature. The screens above use sample data.

**Stack:** Python, FastAPI, SQLAlchemy, Alembic, PostgreSQL, Vue 3, Pinia, TypeScript, Vite, Docker Compose.

[Code on GitHub](https://github.com/dodogabrie/work-manager) · [Open the site](https://work-planner.edoardogabrielli.com)

[← All projects](https://edoardogabrielli.com/en/projects)