A personal study-time tracking dashboard built as a plugin for Super Productivity. It gives a weekly overview of time spent studying, with configurable daily and weekly goals, progress tracking, and per-project breakdowns — all in a single self-contained HTML file with no external dependencies.
- Weekly time tracking with configurable week start day
- Daily and weekly goals with prorated progress bars and ahead/behind indicators
- Period comparisons showing hour diffs vs. previous week / yesterday
- Time Tracked chart — bar chart with Last 7 Days / 30 Days / 8 Weeks / 12 Months views
- Project Breakdown — pie chart showing time distribution across projects
- Per-project hour cards with weekly goal percentages and lifetime totals
- Native charts rendered with vanilla JS and CSS (no charting libraries)
- Light/dark theme support matching Super Productivity
- Live updates when task data changes in the host app
- Fallback mock data for standalone development
sp-dashboard/
├── index.html # Main UI (CSS + JS embedded)
├── manifest.json.template # Template used at build time
├── plugin.js # Super Productivity integration script
└── icon.svg # Plugin icon
tests/
└── index.test.js # Vitest/JSDOM unit tests
scripts/
├── minify.sh # HTML minifier
├── screenshot.js # Puppeteer screenshot generator
└── check-js.js # Syntax checker
Makefile # Build & release helpers
package.json # Node tooling and dependencies
All plugin logic resides in a single HTML file to conform with the host app's plugin sandbox.
- Download the latest Release
- Open Super Productivity → Settings → Plugins
- Click "Load Plugin from Folder"
- Select the
sp-dashboardzip file
- Node.js (18+) and npm
makeavailable (macOS/Linux)
npm installnpm test
make testmake build # minifies and zips into build/sp-dashboard
make release # build + tag + GitHub release (requires gh CLI)npm run screenshot # outputs to assets/plugin.jsruns in the host app and listens for ReduxACTIONhooks, postingSP_STATE_CHANGEDmessages to the iframeindex.htmlreceives these messages and pulls task/project data viaPluginAPI- All date calculations use local timezone; the week range is determined by the user-selected start day
- Goals and UI preferences are persisted in
localStorage - When opened standalone (no
PluginAPI), mock data is loaded for development
MIT