modular life dashboard thingy (name is yet to be decided)
This project is basically a web shell that combines a bunch of dashboards, each with its own frontend and backend, into an SPA.
Each dashboard (or webpage, in general) is considered a module, and comes with:
- backend: inherits from a base module class, uses a Flask blueprint for routing
- frontend: delivered as JS/HTML/CSS fragments, embedded via
innerHTML, with access to shared CSS classes and JS helpers for a consistent look and feel
The shared base provides a navbar to switch between modules, centralized notifications, shared stylesheets, and the module-loading functionality in the backend.
Goal
My goal was to build a dashboard tracking how I'm doing in life (social activity, workouts, studying, hobbies, etc). That quickly turned into one dashboard per topic, and since I didn't want to spin up 10 containers and navigate 20 separate pages, I started this project to combine them all into one.
Quality
I'm not a web dev, and the frontend is 90% vibe-coded. Not like single-prompt vibe-coded, but built in small iterations with care for detail. I'm still manually refactoring, doing the backend, and making architecture and design decisions, etc. (that's what I tell myself when I cry myself to sleep), and, most importantly: learning a bunch.
Endpoints
| Path | Content |
|---|---|
GET /modules |
List of loaded modules with metadata (to populate sidebar) |
GET /modules/<module-name>/page |
Embeddable html content of module |
GET /modules/<module-name>/* |
Custom endpoints registered by module |
Auth
For now there are no plans to include auth in the application.
It's heavily recommended to use an external service like Authelia to manage access.
Included modules
| Module | Info |
|---|---|
| TestModule | Minimal module implementation to be used as an template. |
| SocialWatch | Visualize your social life using CalDAV + CardDAV contacts and events. |