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
poetry run uvicorn apps.ui.main:app --reload --port 8002
Using Python module
poetry run python -m apps.ui.main
Docker Container
Build Image
docker build -t ui:dev -f apps/ui/Dockerfile .
Run Container
docker run --rm -p 8002:8002 \
--add-host=host.docker.internal:host-gateway \
-e UI_PORT=8002 \
-e API_BASE=http://host.docker.internal:8001 \
-e BASE_PATH=/ \
ui:dev
Note for finch/nerdctl users:
- finch binds ports to
127.0.0.1by default (not0.0.0.0) - Use
--add-host=host.docker.internal:host-gatewayto allow container-to-host communication - Set
API_BASE=http://host.docker.internal:8001to reach the API container
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 (rendersindex.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