Files

43 lines
2.3 KiB
Markdown

# 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 |
| `POST /modules/<module-name>/sync` | Triggers a backend data sync (module-specific) |
| `GET /modules/<module-name>/*` | Custom endpoints registered by module |
| `GET /notifications` | List of open notifications |
| `DELETE /notifications/delete/<noti-id>` | Delete a notification by its id |
## 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](./modules/testmodule/) | Minimal module implementation to be used as an template. |
| [SocialWatch](./modules/socialwatch/README.md) | Visualize your social life using CalDAV + CardDAV contacts and events. |