[ { "title": "Website", "url": "https://lab2025.duckdns.org/", "description": "Public portfolio website", "colour": "#0f766e", "class": "Website" }, { "title": "Demo Apps", "url": "https://demos.lab2025.duckdns.org/", "description": "Static browser-side demo catalog", "colour": "#2563eb", "class": "Demos" }, { "title": "Service Catalog", "url": "https://demos.lab2025.duckdns.org/homelab-catalog/", "description": "Generated host, service, route, and runbook map from homelab.yml", "colour": "#0891b2", "class": "Catalog" }, { "title": "Gitea", "url": "https://lab2025.duckdns.org/git/", "description": "External Git service on the Debian host", "colour": "#609926", "class": "Gitea" }, { "title": "Grafana", "url": "https://grafana.lab2025.duckdns.org/", "description": "Monitoring dashboards", "colour": "#f97316", "class": "Grafana" }, { "title": "Prometheus", "url": "https://prometheus.lab2025.duckdns.org/", "description": "Prometheus query UI", "colour": "#dc2626", "class": "Prometheus" }, { "title": "Alertmanager", "url": "https://alertmanager.lab2025.duckdns.org/", "description": "Alert routing and silences", "colour": "#b91c1c", "class": "Alertmanager" }, { "title": "Argo CD", "url": "https://argocd.lab2025.duckdns.org/", "description": "GitOps application sync status", "colour": "#0ea5e9", "class": "ArgoCD" }, { "title": "Container Registry", "url": "http://100.77.80.72:30500/v2/_catalog", "description": "Local image registry catalog endpoint", "colour": "#334155", "class": "Docker" }, { "title": "Heimdall", "url": "https://heimdall.lab2025.duckdns.org/", "description": "Homelab service dashboard", "colour": "#7c3aed", "class": "Heimdall" }, { "title": "Pi-hole", "url": "http://192.168.100.89:8081/admin/", "description": "LAN DNS and ad blocking on the Raspberry Pi", "colour": "#dc2626", "class": "PiHole" }, { "title": "Uptime Kuma", "url": "http://192.168.100.89:3001/", "description": "Service uptime checks on the Raspberry Pi", "colour": "#16a34a", "class": "UptimeKuma" }, { "title": "n8n", "url": "https://n8n.lab2025.duckdns.org/", "description": "Workflow automation for translation jobs and homelab tasks", "colour": "#ea4b71", "class": "N8N" }, { "title": "Prowlarr", "url": "https://prowlarr.lab2025.duckdns.org/", "description": "Indexer management for the media automation stack", "colour": "#2563eb", "class": "Prowlarr" }, { "title": "Sonarr", "url": "https://sonarr.lab2025.duckdns.org/", "description": "TV library automation", "colour": "#22c55e", "class": "Sonarr" }, { "title": "Radarr", "url": "https://radarr.lab2025.duckdns.org/", "description": "Movie library automation", "colour": "#f59e0b", "class": "Radarr" }, { "title": "qBittorrent", "url": "https://qbittorrent.lab2025.duckdns.org/", "description": "Torrent download client", "colour": "#3b82f6", "class": "Qbittorrent" }, { "title": "Kapowarr", "url": "https://kapowarr.lab2025.duckdns.org/", "description": "Comics library automation", "colour": "#ef4444", "class": "Kapowarr" }, { "title": "Suwayomi", "url": "https://suwayomi.lab2025.duckdns.org/", "description": "Manga server and scraper engine", "colour": "#8b5cf6", "class": "Suwayomi" }, { "title": "Maintainerr", "url": "https://maintainerr.lab2025.duckdns.org/", "description": "Media list maintenance automation", "colour": "#14b8a6", "class": "Maintainerr" } ]