feat: add PWA frontend for CYD ThermoPro dashboard
Add a Flask backend + SQLite + HTML/CSS/JS PWA that: - Polls the CYD /api/latest endpoint - Stores readings, sessions, and freeform notes in SQLite - Displays probe cards with target setpoints and preset options - Renders temperature history with Chart.js - Serves a PWA manifest and dark-themed dashboard Also update cyd-bridge/README.md with verified bringup instructions.
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# ThermoPro CYD Frontend
|
||||
|
||||
A Progressive Web App (PWA) that consumes the CYD ThermoPro Bridge API, stores session history in SQLite, and displays probe temperatures with charts, target setpoints, and freeform notes.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
LXC/container
|
||||
├── Python backend (FastAPI/Flask)
|
||||
│ ├── Polls CYD /api/latest periodically
|
||||
│ ├── Stores readings + sessions + notes in SQLite
|
||||
│ └── Serves the static PWA and API
|
||||
└── PWA (HTML/CSS/JS)
|
||||
├── Dashboard with probe cards
|
||||
├── Temperature history charts
|
||||
├── Target setpoint editor
|
||||
└── Session notes
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.10+
|
||||
- `flask`, `requests`, `gunicorn` (or `uvicorn` if FastAPI)
|
||||
- SQLite (stdlib)
|
||||
|
||||
## Running locally
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
||||
pip install -r requirements.txt
|
||||
python app.py
|
||||
```
|
||||
|
||||
Then open `http://localhost:5000`.
|
||||
|
||||
## Configuration
|
||||
|
||||
The backend needs to know the CYD IP. Set the environment variable:
|
||||
|
||||
```bash
|
||||
export CYD_BASE_URL=http://192.168.2.55
|
||||
```
|
||||
|
||||
or edit the default in `config.py`.
|
||||
|
||||
## Deployment
|
||||
|
||||
Serve the app behind a reverse proxy (e.g. Caddy or Nginx) in an LXC. The backend will continue polling the CYD as long as it can reach the device.
|
||||
Reference in New Issue
Block a user