Build a real-time homelab server monitoring dashboard with Vue 3 frontend and FastAPI backend that monitors Linux servers, Docker, qBittorrent, UniFi, and UNAS storage.
- Phase 1: Requirements gathering and planning
- Phase 2: Project scaffolding and structure setup
- Phase 3: Backend core - FastAPI setup and collector framework
- Phase 4: Implement individual collectors (Linux, Docker, qBittorrent, UniFi, UNAS)
- Phase 5: WebSocket real-time streaming
- Phase 6: Frontend core - Vue project with TailwindCSS
- Phase 7: Dashboard UI - Overview grid with status cards
- Phase 8: Drill-down views for each system type
- Phase 9: Dark/Light theme toggle
- Phase 10: Docker Compose deployment setup
- Phase 11: Testing and configuration
- ✅ What systems to monitor? → Linux SSH, Docker, qBittorrent, UniFi, UNAS
- ✅ What metrics? → CPU, RAM, disk, network, temps, app-specific
- ✅ UI style? → Dark/Light toggle, card-based overview + drill-down
- ✅ Data storage? → In-memory only (no persistence for v1)
- ✅ Poll interval? → 5-10 seconds
- Tech Stack: Vue 3 + TypeScript + TailwindCSS | FastAPI + Python
- Real-time: WebSocket for push updates
- No Auth: Local network only, no login required for v1
- Modular Collectors: Each system type has its own collector class
- (none)
Phase 10 Complete - Full stack implementation done!
- Backend: FastAPI with all 5 collectors (Linux, Docker, qBittorrent, UniFi, UNAS)
- Frontend: Vue 3 + TypeScript + TailwindCSS with dark/light mode
- WebSocket real-time updates
- Dashboard with status overview and drill-down views
- Docker Compose deployment ready
ServerMonitor/
├── backend/
│ ├── app/
│ │ ├── main.py
│ │ ├── config.py
│ │ ├── models/metrics.py
│ │ ├── collectors/{base,linux,docker,qbittorrent,unifi,unas}.py
│ │ ├── services/{collector_manager,metrics_store}.py
│ │ └── api/{routes,websocket}.py
│ ├── config.yaml
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── components/{dashboard,detail,common,charts}/
│ │ ├── composables/{useTheme,useWebSocket}.ts
│ │ ├── stores/metrics.ts
│ │ ├── types/metrics.ts
│ │ └── views/{Dashboard,SystemDetail}.vue
│ ├── package.json
│ ├── Dockerfile
│ └── nginx.conf
└── docker-compose.yml
Next: Configure systems in config.yaml and test!