A single-file, dark-mode dashboard for everything in my life that fluctuates daily — AI service quotas, cloud spend, home lab telemetry, investments, social metrics, and health.
One index.html. No build step, no install, no backend.
| AI | Claude (live), ChatGPT, GitHub Copilot |
| Cloud | Azure cost, quota, and resource health |
| Web | Cloudflare zone traffic |
| Money | Credit cards, utility bills, crypto & stock holdings (live prices) |
| Home lab | Home Assistant — sensors and controls (lights, locks, covers, scenes, climate, media, cameras); generic JSON metrics from any local device |
| Social | YouTube, GitHub stars, Discord, Twitch |
| Health | Fitbit (live), manual entry for Pixel Watch |
| Claude Code | Local subscription LLM usage — tokens, messages and equivalent API cost, per period, per model (Fable tracked separately). Free to read; no API calls |
| Security | Open-port drift vs a baseline, certificate expiry, missing security headers — your own hosts only |
Each card shows a live progress bar, a status badge, a countdown to reset, a sparkline of recent readings, and a Refresh button that pulls real data where an API allows it. Home Assistant cards can also act — toggles, scenes, setpoints and transport controls.
Double-click index.html and it runs — no build, no install.
It opens with example cards so the page isn't blank. When you're ready for real data: Settings → Cards → Remove all cards, then add your own. Restore examples puts them back if you want the tour again.
For OAuth-based cards (Azure, Twitch, Fitbit) you need a real http(s) origin, since OAuth
providers can't redirect back to a file:// URL. Easiest option:
cd server && docker compose up -dThat serves the dashboard and the optional backend on http://localhost:8787. If you run
Home Assistant, dropping index.html into /config/www/ is even better — same-origin with
HA, so no CORS setup at all. See NOTES.md.
Never fake a number. Where a real API exists, the card calls it and shows a Live badge. Where one genuinely doesn't — OpenAI blocks browser calls by design, consumer AI subscriptions expose no quota API, banks need a server-side secret, Pixel Watch data never leaves the device — the card says Manual and you fill it in yourself. Every platform's note field explains exactly which it is and why.
API keys and tokens are stored in your browser's localStorage and are sent only to their
own provider. Nothing is committed to this repo. Anyone with access to your browser
profile can read them via dev tools, so prefer low-privilege, restricted-scope keys.
See NOTES.md — per-platform setup instructions, what's blocked and why, architecture notes, and how to add a new platform.