Commit graph

18 commits

Author SHA1 Message Date
Sam
f6a42c2dd2 feat: add Admin Panel with JWT auth, DB settings, and integration management
Complete admin backend with login, where all integrations (weather, news,
Home Assistant, Vikunja, Unraid, MQTT) can be configured via web UI instead
of ENV variables. Two-layer config: ENV seeds DB on first start, then DB
is source of truth. Auto-migration system on startup.

Backend: db.py shared pool, auth.py JWT, settings_service CRUD, seed_service,
admin router (protected), test_connections per integration, config.py rewrite.

Frontend: react-router v6, login page, admin layout with sidebar, 8 settings
pages (General, Weather, News, HA, Vikunja, Unraid, MQTT, ChangePassword),
shared IntegrationForm + TestButton components.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:37:30 +01:00
Sam
89ed0c6d0a feat: add MQTT integration for real-time entity updates
- aiomqtt async client with auto-reconnect and topic store
- MQTT router: GET /api/mqtt, GET /api/mqtt/topic/{path}, POST /api/mqtt/publish
- MQTT entities included in /api/all + WebSocket broadcast
- MqttCard frontend component with category filters, entity list
- Configurable via ENV: MQTT_HOST, MQTT_PORT, MQTT_USERNAME,
  MQTT_PASSWORD, MQTT_TOPICS (comma-separated or JSON array)
- Gracefully disabled when MQTT_HOST is not set

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:13:50 +01:00
Sam
9f7330e217 refactor: complete rewrite as React+FastAPI dashboard
Replace monolithic Jinja2 template with modern stack:

Backend (FastAPI):
- Modular router/service architecture
- Async PostgreSQL (asyncpg) for news from n8n pipeline
- Live Unraid server stats (2 servers via API)
- Home Assistant, Vikunja tasks, weather (wttr.in)
- WebSocket broadcast for real-time updates (15s)
- TTL cache per endpoint, all config via ENV vars

Frontend (React + Vite + TypeScript):
- Glassmorphism dark theme with Tailwind CSS
- Responsive grid: mobile/tablet/desktop/ultrawide
- Weather cards, hourly forecast, news with category tabs
- Server stats (CPU ring, RAM bar, Docker list)
- Home Assistant controls, task management
- Live clock, WebSocket connection indicator

Infrastructure:
- Multi-stage Dockerfile (node:22-alpine + python:3.11-slim)
- docker-compose with full ENV configuration
- Kaniko CI/CD pipeline for GitLab registry

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 01:48:51 +01:00
Sam
4bbc125a67 ci: allow branch pipelines for kaniko build 2026-03-02 00:36:52 +01:00
Sam
4860542d2b ci: switch daily briefing to kaniko registry build 2026-03-02 00:35:08 +01:00
Sam
9fd931a12f Use GitLab registry via local IP in CI 2026-03-01 22:44:44 +01:00
Sam
4fe644c517 UI: Remove 'Dashboard' text from inside the logo icon div 2026-02-13 13:57:06 +01:00
Sam
ee1c5bc5a4 UI: Rename to just 'Dashboard' and clean up header logo 2026-02-13 13:54:11 +01:00
Sam
c14cd60a32 UI: Move clock/date to right side, remove refresh button, and improve responsive layout 2026-02-13 12:58:24 +01:00
Sam
183b9528fe Fix: Absolute clock position - moved to background with -z-10 and opacity 2026-02-13 12:37:55 +01:00
Sam
0ad8470339 Update docker-compose.yml: add DASHBOARD_DATA_PATH and volume mount for data 2026-02-13 12:35:58 +01:00
Sam
076ee15c83 Add news and hourly weather to dashboard 2026-02-13 12:33:15 +01:00
Sam
320f273c3e Fix: Clock overlay in header - changed sm:flex to lg:flex, added z-0 2026-02-13 12:33:03 +01:00
Sam
79fb274b3b Update deploy stage tags to vm-deploy 2026-02-13 00:37:34 +01:00
Sam
231749f513 Trigger pipeline retry #2 2026-02-13 00:26:22 +01:00
Sam
8a2e6a9514 Trigger pipeline retry 2026-02-13 00:26:11 +01:00
Sam
58b2dd2730 Add GitLab CI/CD configuration 2026-02-13 00:25:22 +01:00
Sam
70c71105a1 Initial commit 2026-02-13 00:24:31 +01:00