No description
- Vue 47.7%
- HTML 22.2%
- JavaScript 14.1%
- Go 12.7%
- Makefile 1.8%
- Other 1.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| backend | ||
| public | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .nvmrc | ||
| clock-lille.html | ||
| docker-compose.yml | ||
| Dockerfile | ||
| index.html | ||
| Makefile | ||
| nginx.conf | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| vite.config.js | ||
Homepage
Dashboard personnel avec horloge animée, widgets todo/notes, agrégateur RSS, pomodoro et recherche rapide.
Stack
- Frontend : Vue 3 (Composition API) + Vite + Vue Router
- Backend : Go (stdlib uniquement) — API REST pour todo, notes, et veille RSS (proxy Miniflux)
- Veille RSS : Miniflux externe (
MINIFLUX_URL), interrogé par le backend en Basic auth - Déploiement : k3s (repo infra-homelab : images construites par kaniko dans le cluster, playbook 60j, puis playbook 60 tag homepage). Docker Compose reste utilisable en local.
Démarrage rapide
# 1. Configurer l'environnement
cp .env.example .env
# Éditer .env : changer les mots de passe et API_TOKEN
# 2. Lancer tout (backend + frontend dev)
make dev
# 3. Ouvrir http://localhost:5173
Commandes
| Commande | Description |
|---|---|
make install |
Installer les dépendances npm |
make dev |
Lancer le backend (Docker) + frontend (Vite) |
make build |
Build de production dans dist/ |
make up |
Lancer toute la stack Docker |
make down |
Arrêter la stack |
Widgets
- Horloge : Canvas animé avec données météo (Open-Meteo), position solaire, 3 villes
- Todo : Vue 3 colonnes (hier/ajd/demain), persisté côté serveur, protégé par token
- Notes : Notes éphémères, persistées côté serveur, protégées par token
- RSS : Agrégateur multi-feeds (configurable via
src/data/feeds.json) - Pomodoro : Timer 25/5 min
- Recherche : Ctrl+K, DuckDuckGo avec support des bangs
- Liens : Panel de navigation (configurable via
src/data/links.json) - Partages : partages MicroBin actifs et temps restant (
MICROBIN_URL, page/listlue par le backend) - Onglets favoris / partage : Linkding et MicroBin intégrés en iframe (
/favoris,/partage), visibles une fois déverrouillé
Authentification
Le dashboard est public. Todo, notes, partages et onglets sont protégés par le mot de passe du dashboard
(API_TOKEN), saisi via le cadenas en bas de page.
Connexion unique : /api/auth pose aussi le cookie signé hp_sso sur SSO_COOKIE_DOMAIN (30 jours, clé
dérivée d'API_TOKEN : le changer déconnecte partout). Traefik interroge /api/verify (ForwardAuth) avant
Linkding et MicroBin : cookie valide = 200 + Remote-User, sinon redirection vers le dashboard avec ?next=,
qui y renvoie après déverrouillage. /api/logout (cadenas) supprime le cookie. CORS_ORIGIN doit être l'URL
exacte du dashboard pour que le navigateur accepte le cookie.
Configuration
- Liens :
src/data/links.json - Flux RSS :
src/data/feeds.json - Ports / tokens :
.env