Monorepo for Roomdoo smart lock integration libraries. Each subdirectory contains an independent Python package that can be installed and versioned separately.
| Package | Description |
|---|---|
| roomdoo-locks-base | Abstract contract (interface, exceptions, return types) that all vendor libraries must implement |
Vendor-specific implementations (e.g. Tuya, Salto) will live as sibling directories following the same convention.
roomdoo-smartlocks/
├── roomdoo-locks-base/ # Abstract interface — no vendor dependencies
├── roomdoo-locks-tuya/ # (future) Tuya implementation
├── roomdoo-locks-salto/ # (future) Salto implementation
└── ...
The PMS (Roomdoo) depends only on roomdoo-locks-base at the interface level. Vendor packages are injected at runtime, keeping the PMS decoupled from any specific lock vendor.
- Python >= 3.10
- pre-commit
# Install a package in editable mode with dev dependencies
pip install -e "roomdoo-locks-base[dev]"
# Install pre-commit hooks
pre-commit installThis repo uses pre-commit with the following hooks:
- ruff — linting and formatting (replaces flake8, isort, black)
- mypy — static type checking
- General checks — trailing whitespace, EOF fixer, YAML/TOML validation, merge conflict detection, large file guard
Run all hooks manually against all files:
pre-commit run --all-filesThis project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).