100 lines
2.0 KiB
Markdown
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
|