Files
home-automation/README.md

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