Files
home-automation/apps/ui/README.md
2025-11-06 13:46:19 +01:00

100 lines
2.0 KiB
Markdown

# Home Automation UI
FastAPI-based web interface with Jinja2 templates for the home automation system.
## Features
- **Jinja2 Templates**: Dynamic HTML rendering
- **Responsive Design**: Modern, clean UI
- **FastAPI Backend**: Fast and reliable serving
## Port Configuration
- **Development Port**: 8002
- **Access URL**: http://localhost:8002
## Running the UI
### Using uvicorn directly
```bash
poetry run uvicorn apps.ui.main:app --reload --port 8002
```
### Using Python module
```bash
poetry run python -m apps.ui.main
```
### Docker Container
#### Build Image
```bash
docker build -t ui:dev -f apps/ui/Dockerfile .
```
#### Run Container
```bash
docker run --rm -p 8002:8002 \
-e UI_PORT=8002 \
-e API_BASE=http://localhost:8001 \
-e BASE_PATH=/ \
ui:dev
```
#### Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `UI_PORT` | `8002` | Port for UI server |
| `API_BASE` | `http://localhost:8001` | Base URL for API service |
| `BASE_PATH` | `/` | Base path for routing |
## Project Structure
```
apps/ui/
├── __init__.py
├── main.py # FastAPI application
├── templates/ # Jinja2 templates
│ └── index.html # Main page
└── README.md # This file
```
## Templates
Templates are located in `apps/ui/templates/` and use Jinja2 syntax.
### Available Routes
- `GET /` - Main UI page (renders `index.html`)
## Development
The server runs with auto-reload enabled during development. Any changes to:
- Python files (`.py`)
- Template files (`.html`)
will trigger an automatic restart.
## Dependencies
- **FastAPI**: Web framework
- **Jinja2**: Template engine
- **Uvicorn**: ASGI server
## Template Variables
Templates receive the following context variables:
- `request`: FastAPI Request object (required by Jinja2Templates)
## Future Enhancements
- [ ] Add static file serving (CSS, JS, images)
- [ ] Implement WebSocket support for real-time updates
- [ ] Add device control interface
- [ ] Integrate with API for capability discovery