<- projects/
PERSONAL PROJECT · PRODUCTIVITY

Effort Planner

A professional, feature-rich calendar application for managing resource effort, shifts, tasks, daily notes, and events — with precise scheduling logic and a premium modern UI.

Architecture

Frontend
FullCalendar.js v6 · Vanilla JS · Font Awesome · Dark glassmorphism UI
FastAPI Backend (Python 3.12+)
REST endpoints · Pydantic validation · input sanitization
JSON Storage
data/ directory · tasks, shifts, notes, events
Holidays Library
Dynamic global holiday detection for scheduling

Smart Effort Scheduling

Total task effort is automatically split among assigned resources, with completion dates computed individually by allocation percentage and daily shift hours:

Example: a 40-hour task split between
Alice (100%, 8h/day) → finishes in 2.5 days
Bob (50%, 4h/day) → finishes in 5 days

Tasks render as colored bars with tooltips showing daily working hours and total effort. Supports overlapping events, shift planning, and daily notes (max 250 chars) as distinct all-day events.

Tech Stack

Python 3.12+ FastAPI FullCalendar.js v6 Pydantic JSON Storage holidays lib Font Awesome

Codebase Layout

├── main.py          # FastAPI app: routes, CORS, request lifecycle (~13 KB)
├── models.py        # Pydantic schemas: Task, Shift, Note, Event, Assignment
├── crud.py          # CRUD operations per resource type
├── utils.py         # Effort-splitting math & scheduling helpers
├── data/            # JSON persistence
│   ├── tasks.json · shifts.json · notes.json · events.json
│   ├── holidays.json       # resolved holidays per country
│   └── countries.json      # global country/holiday dataset (~34 KB)
└── static/          # Frontend
    ├── index.html  ·  style.css  ·  script.js (~56 KB, FullCalendar.js v6)
navigate open