A FastAPI + Alpine.js single-page app for running weekly goals, logging deep-work sessions, resolving blockers, and watching team velocity from one local dashboard.
- Full SPA workflow for creating weekly goals, logging focus sessions, resolving blockers, pausing work, and deleting items without page reloads.
- Weekly goals with squad, owner, priority, target points, deadlines, tags, velocity score, streak, and total focus hours.
- Inline focus-session composer on every goal card for
deep-work,planning,review, andpairingsessions. - Risk sync flow that automatically surfaces blockers for stale or slipping goals.
- Blocker board with severity states and resolution notes.
- Squad pulse panel for team-level visibility across
core-platform,growth,product,data,design, andinfra. - Rolling 14-day focus calendar plus recent session history.
- Render-ready deployment via
render.yamlwith local demo data seeded on start.
This dashboard is optimized for desktop screens.
- Desktop: full support
- Tablet (landscape): full support
- Tablet (portrait): partial support
- Mobile: limited support
Some wide data tables require horizontal scrolling on smaller screens. For the best experience, use desktop or tablet in landscape mode.
The resolution note entered from the Open blockers panel is not rendered anywhere else in the dashboard UI after a blocker is resolved.
- It is still preserved in the blocker payload returned by
GET /api/snapshot. - The original product direction was to push that note into the downstream application workflow instead of surfacing it again inside the dashboard.
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/snapshot |
Full dashboard payload (stats, goals, blockers, sessions, squad map, focus calendar) |
POST |
/api/goals |
Create weekly goal |
PATCH |
/api/goals/{goal_id}/toggle-active |
Pause or reactivate goal |
DELETE |
/api/goals/{goal_id} |
Delete goal with related sessions and blockers |
POST |
/api/goals/{goal_id}/log-session |
Log a focus session for a goal |
POST |
/api/blockers/sync-risk |
Generate blockers for stale or slipping goals |
POST |
/api/blockers/{blocker_id}/resolve |
Resolve blocker with an optional note |
GET |
/health |
Health check |
cd python-fastapi-productivity-ops-hub
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reloadOpen:
- UI:
http://127.0.0.1:8000 - API docs:
http://127.0.0.1:8000/docs
Seed a realistic local dataset (goals, blockers, focus sessions):
cd python-fastapi-productivity-ops-hub
.venv/bin/python scripts/seed_demo.pyReset local demo data:
cd python-fastapi-productivity-ops-hub
.venv/bin/python scripts/reset_demo.pyrender.yaml is included in the repository. You can deploy directly from this config.