A homelab server monitoring dashboard with modern UI/UX that provides real-time visibility into various home infrastructure components.
- Frontend: Vue 3 (Composition API) + TypeScript
- Backend: FastAPI (Python)
- Styling: TailwindCSS
- Real-time: WebSocket for live updates
- Data Storage: In-memory (no persistence initially)
- Connect to Linux machines using SSH
- Collect system metrics remotely
- Monitor container status (running, stopped, health)
- Container resource usage (CPU, memory, network)
- Active torrent sessions
- Download/upload speeds
- Queue status
- Network status
- Connected devices
- Bandwidth usage
- Storage pool status
- Disk health
- Available capacity
- CPU usage (per core and total)
- RAM usage (used, available, cached)
- Disk usage (per mount point)
- Network I/O (upload/download rates)
- System uptime
- CPU/GPU temperatures
- Fan speeds
- Power consumption (if available)
- qBittorrent: active downloads, seeds, speeds, queue length
- Overview mode: Grid/list of all monitored systems showing status at a glance
- Drill-down mode: Click on any system to see detailed metrics
- Dark mode and light mode with user toggle
- Default to dark mode (suitable for always-on displays)
- Modern, clean interface
- Card-based layout for system overview
- Clear status indicators (healthy/warning/critical)
- Responsive design for various screen sizes
- Poll interval: 5-10 seconds for real-time feel
- WebSocket push for instant UI updates
- Graceful handling of unreachable systems
- Local network access only
- No authentication required (initial version)
- Easy to run via Docker Compose or directly
- RESTful endpoints for configuration
- WebSocket endpoint for real-time metrics stream
- Alert notifications (email, Discord, etc.)
- Historical data persistence
- User authentication
- Mobile app
- Dashboard loads and displays all configured systems
- Metrics update in real-time (5-10 second refresh)
- Drill-down provides detailed view per system
- UI is responsive and visually appealing
- System handles offline/unreachable targets gracefully