
A self-hosted dashboard where every user builds their own grid of widgets: monitored links, calendar, media, tasks, weather. It connects to Jellyfin, Overseerr, TMDB, AniList, Spotify and Discord, with real-time chat and mini-games built in.
- widgets
- 14
- typed permissions
- 46
- commits
- 148
What I built
- A grid of 14 customisable widgets, with JSON import and export.
- Board sharing with read or edit rights, plus public read-only links.
- Real-time messaging and 6 games with a leaderboard, on a dedicated Socket.io server.
- Roles, 46 typed permissions and owner approval of new accounts.
- 7 themes (light, dark, OLED, cyber…) with a custom primary colour.
- Docker deployment: isolated migrations, Docker secrets, maintenance page.
The challenges
01
Secrets that never leave the server
Integration keys are encrypted server-side and never sent to the browser. Every call goes through a server proxy.
02
Rebuilding without breaking
The core was refactored step by step using the strangler-fig pattern, documented and covered by Playwright tests, while production kept running.
03
A CI that keeps watch
GitHub Actions runs the tests, gitleaks blocks any leaked secret and knip hunts down dead code.


Stack
- Next.js 15
- React 19
- TypeScript
- MySQL 8
- Drizzle
- NextAuth v5
- Socket.io
- Docker
- Year
- 2025 — 2026
- Type
- Web app
- Source code
- Private repository