# Backend Documentation

The backend is built with **FastAPI**, providing a high-performance API to serve system metrics.

## Core Files

### `main.py`
- Entry point of the application.
- Defines the FastAPI app and CORS middleware.
- **Endpoints**:
    - `GET /`: Serves the `monitor.html` file.
    - `GET /api/status`: Orchestrates the monitoring tasks and returns a JSON response.
- **Parallel Execution**: Uses `asyncio.gather` and `asyncio.to_thread` to run blocking SSH/HTTP calls concurrently.

### `monitor_logic.py`
- Contains the low-level monitoring functions.
- **`get_ssh_data()`**:
    - Connects via SSH using `paramiko`.
    - Executes commands to fetch:
        - CPU Usage: `top`
        - RAM Usage: `free`
        - Disk Space: `df`
        - Temperature: `/sys/class/thermal/thermal_zone0/temp` or `vcgencmd`.
- **`check_web_service()`**:
    - Performs an HTTP GET request.
    - Calculates latency in milliseconds.

## Environment Variables
- `PC_PASS`: SSH password for the Ubuntu Server.
- `PI_PASS`: SSH password for the Raspberry Pi.
