Architecture 02 Constraints - lukislp/mowdeck GitHub Wiki

2. Constraints

Technical constraints

Constraint Background
PyMammotion is the only mower protocol implementation The Mammotion protocol is unofficial; a firmware update can break features at any time. Pin the version and update firmware only after community feedback.
Bluetooth is the default link WLAN control is announced but not available. Bluetooth runs through an ESP32 bridge that connects outbound to the Device-Gateway.
Python 3.13 One language for services, PyMammotion (requires 3.13 or newer) and Home Assistant. See ADR 0010.
PostgreSQL only No SQLite (see ADR 0006).
Only portable open components PostgreSQL, S3-compatible storage, OIDC, NATS. No provider-specific cloud services.
Images for amd64 and arm64 Mini PC, Raspberry Pi 5 and cloud.

Organizational constraints

Constraint Background
Licensing AGPL-3.0 for services and apps, Apache-2.0 for libraries (ADR 0005).
Language All code, comments, commits and documentation are English; UI is German by default plus English.
Process One task at a time, each with tests and README; definition of done includes docs and ADRs.
Terms of use Uncritical for personal use; review before redistribution or commercial use.

Conventions

  • Twelve-factor style: configuration and secrets only via environment variables or secret files, never in images.
  • Stateless services, structured logs on stdout, health/readiness/liveness endpoints, graceful shutdown.
  • Database migrations (Alembic) run as a separate step before start and stay backward compatible.
  • Contracts only evolve backward compatibly; events are never reinterpreted, new versions are added instead.

Mirrored from docs/architecture/02-constraints.md at commit 6a87264c6123f07c8474e153053525dc1816feb7. Edit the file in the repository, not this wiki page.