130 lines
2.5 KiB
Markdown
130 lines
2.5 KiB
Markdown
# Home Automation Monorepo
|
|
|
|
A Python-based home automation system built with Poetry in a monorepo structure.
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
home-automation/
|
|
├── apps/ # Applications
|
|
│ ├── api/ # API service
|
|
│ ├── abstraction/ # Abstraction layer
|
|
│ ├── rules/ # Rules engine
|
|
│ └── ui/ # User interface
|
|
├── packages/ # Shared packages
|
|
│ └── home_capabilities/ # Home capabilities library
|
|
├── infra/ # Infrastructure
|
|
│ ├── docker-compose.yml
|
|
│ └── README.md
|
|
├── pyproject.toml # Poetry configuration
|
|
└── README.md
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- Python 3.11+
|
|
- Poetry
|
|
|
|
## Setup
|
|
|
|
1. Install Poetry if you haven't already:
|
|
```bash
|
|
curl -sSL https://install.python-poetry.org | python3 -
|
|
```
|
|
|
|
2. Install dependencies:
|
|
```bash
|
|
poetry install
|
|
```
|
|
|
|
3. Activate the virtual environment:
|
|
```bash
|
|
poetry shell
|
|
```
|
|
|
|
## Development
|
|
|
|
### Code Quality Tools
|
|
|
|
This project uses the following tools configured in `pyproject.toml`:
|
|
|
|
- **Ruff**: Fast Python linter
|
|
- **Black**: Code formatter
|
|
- **Mypy**: Static type checker
|
|
|
|
Run code quality checks:
|
|
|
|
```bash
|
|
# Format code
|
|
poetry run black .
|
|
|
|
# Lint code
|
|
poetry run ruff check .
|
|
|
|
# Type check
|
|
poetry run mypy .
|
|
```
|
|
|
|
### Running Applications
|
|
|
|
#### Port Configuration
|
|
|
|
See `PORTS.md` for detailed port allocation.
|
|
|
|
- **API Server**: http://localhost:8001
|
|
- **UI Server**: http://localhost:8002
|
|
|
|
#### API Server
|
|
|
|
Start the FastAPI server with auto-reload:
|
|
|
|
```bash
|
|
# Using uvicorn directly (port 8001)
|
|
poetry run uvicorn apps.api.main:app --reload --port 8001
|
|
|
|
# Or using the main function
|
|
poetry run python -m apps.api.main
|
|
```
|
|
|
|
The API will be available at:
|
|
- API Base: http://localhost:8001
|
|
- Interactive Docs: http://localhost:8001/docs
|
|
- OpenAPI Schema: http://localhost:8001/openapi.json
|
|
|
|
Available endpoints:
|
|
- `GET /health` - Health check endpoint
|
|
- `GET /spec` - Capabilities specification
|
|
|
|
#### UI Server
|
|
|
|
Start the web interface:
|
|
|
|
```bash
|
|
# Using uvicorn directly (port 8002)
|
|
poetry run uvicorn apps.ui.main:app --reload --port 8002
|
|
|
|
# Or using the main function
|
|
poetry run python -m apps.ui.main
|
|
```
|
|
|
|
The UI will be available at:
|
|
- Main page: http://localhost:8002
|
|
- `GET /spec` - Capabilities specification
|
|
|
|
#### Other Applications
|
|
|
|
```bash
|
|
# Abstraction
|
|
poetry run python -m apps.abstraction.main
|
|
|
|
# Rules
|
|
poetry run python -m apps.rules.main
|
|
|
|
# UI
|
|
poetry run python -m apps.ui.main
|
|
```
|
|
|
|
## License
|
|
|
|
TBD
|