OPEN SOURCE · SELF-HOSTED · SINGLE DOCKER COMMAND
The Board
GOAL MANAGER
A personal life-balance dashboard that tracks how you invest your time, surfaces what needs attention today, and keeps your relationships on plan — across a web UI, a Telegram bot, and a macOS menu bar.
Get Started → View on GitHub
🌐 Web Dashboard
📱 Telegram Bot
🍎 macOS Menu Bar
7:30am Daily Brief
WHAT IT DOES
Everything in one place,
nothing you don't need
Five focused modules, each solving a specific daily planning problem. All data stays local — SQLite on your machine, volume-mounted so it survives restarts and rebuilds.
🎯
TODAY — Morning Launchpad
Ordered agenda computed fresh each morning: overdue social steps → slipping priorities → goals behind → dormant domains. One focus card at the top tells you exactly where to start.
🔥
Daily Log — Click Heatmap
Domain × day grid. Click a cell to add an hour. Hover for a − button. Color ramps paper to deep orange at 4h+. Column totals track both direct log and project time rolled up automatically.
📓
Diaries — Project Journals
Every project has a sticky journal panel. Domain-grouped cards with drag-to-reassign. Full-text search across all entries. 64-color accent picker keeps cards on-palette.
🤝
Keep in Touch
Every contact has a phase (TO_SCHEDULE → SCHEDULED → DONE) and a cadence. The system computes the next action due per contact and surfaces overdue relationships in the daily agenda.
VIP Priorities
A manually-ranked priority queue — not a todo list. Drag to reorder. Due dates, overdue flags, weekly recurrence. #1 is always your next move. Soft-delete preserves history.
📊
Goals Engine
Each domain carries a weekly hour goal and a % of total target. The underperformer engine computes gaps across week, month, and 8-week windows — surfaced on TODAY and in the morning brief.
THE DASHBOARD
Five tabs, one workflow
The Workshop aesthetic — warm paper, ink, burnt orange, deep teal. Designed for daylight readability and a little optimism.
TODAY
DAILY LOG
DIARIES
SOCIAL
TODOS
TODAY'S FOCUS
Call to schedule lunch — Mitch +3d past plan
VIP PRIORITIES
1. Pay quarterly taxes
2. Review insurance renewal
3. Schedule annual checkup
BALANCE GOALS
EXERCISE: 1h of 4h goal
ART: 2h of 6h goal
CODING: 9h — on track
AGENDA
OVERDUECall to schedule lunch — Mitch +3d past plan
TODAYDue today: Pay quarterly taxes
BEHINDEXERCISE: 1h of 4h weekly goal
Morning briefing — pushed to Telegram at 7:30am
📅 DAILY BRIEF — Tuesday Jun 17 🎯 TODAY'S FOCUS Call to schedule lunch — Mitch +3d 📌 AGENDA 🔴 Call to schedule — Mitch +3d past plan 🟠 Due today: Pay quarterly taxes EXERCISE: 1h of 4h weekly goal ⏱ THIS WEEK SO FAR CODING ██████████ 9h / 10h goal ART ████░░░░░░ 2h / 6h goal EXERCISE█░░░░░░░░░ 1h / 4h goal 📞 SOCIAL — STEPS DUE 🔴 Mitch: Call to schedule lunch (+3d) Steve: Call on the books 📋 VIP PRIORITIES 1. Pay quarterly taxes due today 2. Review insurance renewal 3. Schedule annual checkup
Daily log heatmap — click to add an hour
MON
TUE
WED
THU
FRI ←
CODING
2
3
2
3
1
11
ART
4
1
5
EXERCISE
1
1
Telegram commands
/brief — full morning briefing
/log coding 2 — add 2h to Coding
/add Pay taxes — add to VIP Priorities
/check 1 — mark priority #1 done
/queue — social steps due
GETTING STARTED
Up in three commands
The only hard dependency is Docker Desktop. Everything else — the database, the scheduler, the Telegram bot — starts inside the container.
1
Clone and configure
Copy .env.example to .env and fill in your Telegram bot token and user ID. Both are optional — the app runs without them, the bot just stays dormant.
# Clone
git clone https://github.com/jeffcu/dashboard.git
cd dashboard
cp .env.example .env
2
Start the container
One command starts everything: the FastAPI server, the SQLite database, the scheduler, and the Telegram bot.
docker compose up -d
3
Open the dashboard
Navigate to http://localhost:8765. The TODAY tab loads your first morning agenda. Customize your domains in Daily Log → Domain Settings.
+
Optional: macOS menu bar
Install the xbar plugin for a live glance from your menu bar — week hours and social queue status, updated every minute.
cp xbar/dashboard.1m.sh ~/.config/xbar/plugins/
chmod +x ~/.config/xbar/plugins/dashboard.1m.sh
TECH STACK
Simple by design
No Node.js build pipeline. No cloud dependencies. No authentication surface. A single Docker container, a single SQLite file, a single HTML page.
🐍
FastAPI
Async REST API + static file serving
🗄
SQLite + SQLAlchemy
Zero-ops, volume-mounted, survives restarts
🐳
Docker
Single-command start, no local Python needed
📱
Telegram Bot
Long-polling — no public URL or SSL required
APScheduler
In-process cron for the daily briefing push
📄
Vanilla JS + HTML
Single file — edit and hard-refresh, no build step