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>
27 lines
749 B
YAML
27 lines
749 B
YAML
services:
|
|
daily-briefing:
|
|
build: .
|
|
container_name: daily-briefing
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
# Database (PostgreSQL)
|
|
- DB_HOST=10.10.10.10
|
|
- DB_PORT=5433
|
|
- DB_NAME=openclaw
|
|
- DB_USER=sam
|
|
- DB_PASSWORD=sam
|
|
# Weather
|
|
- WEATHER_LOCATION=Leverkusen
|
|
- WEATHER_LOCATION_SECONDARY=Rab,Croatia
|
|
# Home Assistant
|
|
- HA_URL=https://homeassistant.daddelolymp.de
|
|
- HA_TOKEN=${HA_TOKEN}
|
|
# Vikunja Tasks
|
|
- VIKUNJA_URL=http://10.10.10.10:3456/api/v1
|
|
- VIKUNJA_TOKEN=${VIKUNJA_TOKEN}
|
|
# Unraid Servers (JSON array)
|
|
- UNRAID_SERVERS=${UNRAID_SERVERS:-[]}
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
restart: always
|