Add tabbed dashboard at /dashboard/ with three D3.js visualizations: - Vendor treemap (devices grouped by type and vendor) - SSID social graph (force-directed, shared probed SSIDs as edges) - Fingerprint clusters (packed circles by device behavior) Intelligence API endpoints at /api/v1/intelligence/ with param validation. Dashboard built on htmx + Pico CSS dark theme + D3 v7, all vendored locally (make vendor). 13 new tests (59 total).
78 lines
2.6 KiB
Markdown
78 lines
2.6 KiB
Markdown
# ESP32-Web Tasks
|
|
|
|
**Last Updated:** 2026-02-06
|
|
|
|
## Current Sprint: v0.1.5 — Zones & Presence
|
|
|
|
### P1 - High
|
|
- [ ] Zone model (name, description, location)
|
|
- [ ] `POST /api/v1/zones` — create zone
|
|
- [ ] `GET /api/v1/zones` — list zones
|
|
- [ ] `PUT /api/v1/zones/<id>` — update zone
|
|
- [ ] Assign sensors to zones
|
|
|
|
### P2 - Normal
|
|
- [ ] Device zone tracking (which zone a device is in)
|
|
- [ ] Dwell time analysis
|
|
- [ ] Presence history endpoint
|
|
|
|
### P2 - Dashboard (v0.2.0)
|
|
- [ ] Presence timeline (Gantt chart, low effort)
|
|
- [ ] Deauth attack timeline (alert overlay, low effort)
|
|
|
|
## Completed: v0.1.4 — Device Intelligence Dashboard
|
|
|
|
- [x] Base dashboard layout (htmx + Pico CSS + D3.js dark theme)
|
|
- [x] Vendor treemap visualization (`/api/v1/intelligence/vendor-treemap`)
|
|
- [x] SSID social graph visualization (`/api/v1/intelligence/ssid-graph`)
|
|
- [x] Fingerprint clusters visualization (`/api/v1/intelligence/fingerprint-clusters`)
|
|
- [x] Jinja2 base template with tab navigation
|
|
- [x] Vendored static assets: Pico CSS, htmx, D3.js v7 (`make vendor`)
|
|
- [x] Dashboard + intelligence API tests (13 new tests, 59 total)
|
|
- [x] Pagination totals, request logging, data retention CLI
|
|
|
|
## Completed: v0.1.3 — Fleet Management
|
|
|
|
- [x] `GET /api/v1/sensors/<id>/config` — read sensor config
|
|
- [x] `PUT /api/v1/sensors/<id>/config` — update sensor config
|
|
- [x] `POST /api/v1/sensors/<id>/ota` — trigger OTA update
|
|
- [x] `POST /api/v1/sensors/<id>/calibrate` — trigger calibration
|
|
- [x] Sensor heartbeat timeout detection
|
|
- [x] Sensor metrics history endpoint
|
|
- [x] OpenAPI 3.0 spec with Swagger UI
|
|
|
|
## Completed: v0.1.2 — OSINT Features
|
|
|
|
- [x] IEEE OUI database download (`make oui`)
|
|
- [x] MAC vendor lookup utility
|
|
- [x] BLE company_id mapping (30+ vendors)
|
|
- [x] Device profile enrichment in API
|
|
- [x] Export endpoints (devices.csv, devices.json, alerts.csv, probes.csv)
|
|
- [x] Auto-populate vendor on device creation
|
|
|
|
## Completed: v0.1.1 — Server Management
|
|
|
|
- [x] Makefile start/stop/restart/status commands
|
|
- [x] Health endpoint with uptime tracking
|
|
- [x] CLI module (esp32-web command)
|
|
- [x] Initial database migration
|
|
- [x] Listen on all interfaces (0.0.0.0:5500)
|
|
|
|
## Completed: v0.1.0 — Project Scaffold
|
|
|
|
- [x] Flask app factory pattern
|
|
- [x] SQLAlchemy 2.x models
|
|
- [x] API blueprint with endpoints
|
|
- [x] UDP collector with parsers
|
|
- [x] pytest fixtures and tests
|
|
- [x] Containerfile for podman
|
|
- [x] Makefile for common tasks
|
|
|
|
## Notes
|
|
|
|
- Sensors send data to UDP 5500
|
|
- API listens on TCP 5500
|
|
- Commands sent to sensors on UDP 5501
|
|
- SQLite for dev, PostgreSQL for prod
|
|
- Dashboard at `/dashboard/` with htmx tab switching
|