Building the HomelabDashboard Android App from Scratch
There is a certain point in homelab development where browser bookmarks and SSH sessions stop being a sensible way to manage things. When you are running 25+ LXC containers across a Proxmox host, a Romanian VPS, and a Docker stack, you want a single place to see everything — and you want it in your pocket.
That is where HomelabDashboard came from. Not a third-party monitoring tool, not a pre-built solution — a native Android app built from scratch in Kotlin with Jetpack Compose, connected to a real Flask API running on my own infrastructure.
How it Works
The app talks to a Flask metrics API running inside CT900, exposed publicly via a Cloudflare tunnel at metrics.sevenbirches.co.uk. Every piece of data the app displays — container status, CPU usage, memory consumption, PBS backup results, VPS health — comes from that API, collected every 15 minutes by a Python metrics collector running against the Proxmox API and Docker socket.
This means the app is showing real live infrastructure state, not mock data. When a container is stopped, the app shows it stopped. When memory pressure is building, it shows the trend.
What the App Does
The app has five main sections accessed via bottom navigation:
Dashboard — at-a-glance view of all containers with colour-coded health indicators. Each container card shows current CPU, memory, and disk usage with start, stop, and reboot controls. Actions use optimistic UI updates — the card flips to the new state immediately while the actual command runs in the background, giving a responsive feel even over mobile data.
Costs — monthly AWS Bedrock spend tracking. The AI analysis pipeline costs approximately £0.02 per month through careful tiered model routing. This screen makes that visible.
Services — a launcher for all 22 self-hosted applications running across the homelab. One tap to open Jellyfin, Sonarr, n8n, Home Assistant, or any other service directly in the browser.
Ask + Simulate — natural language queries to the AI agent via AWS Bedrock, and a simulation engine that can model infrastructure failure scenarios. Six pre-built scenarios cover OOM kills, VPS outages, NAS power loss, cascade stress events, monitoring gaps, and disk pressure.
Alerts — full history of all alerts fired by the monitoring agent, with resolved state tracking and actionable buttons to acknowledge or snooze directly from the notification.
Push Notifications
The app receives Firebase Cloud Messaging push notifications from the homelab agent whenever an alert fires. The notifications include action buttons — Acknowledge and Snooze — that work directly from the notification tray without opening the app. The Android side handles this through a custom AlertActionReceiver that processes the button taps and sends the response back to the agent.
Why Build This
The honest answer is that it is more useful than any existing tool I found, and building it was the point. Kotlin, Jetpack Compose, Firebase, REST APIs, real-time data — these are all transferable skills, and having a working app deployed to a physical device is a better portfolio demonstration than a tutorial project.
The app is deployed to a Samsung S21 and used daily. The GitHub repository is at github.com/mrapierre/Homelab-Playbooks with the full Android source in the AndroidApp folder.