Kamerplanter is a self-hosted, multi-tenant plant lifecycle management system (Python/FastAPI backend, React frontend, a RAG knowledge service, ArangoDB + PostgreSQL/pgvector + TimescaleDB + Redis, deployed via Docker / Kubernetes / Helm / Skaffold) covering seed-to-harvest grow management plus a Home Assistant integration.
Inside the boundary
- The backend, frontend, and knowledge service under
src/ - The deployment stack (
docker-compose*.yml,helm/,skaffold.yaml) - The Home-Assistant-facing API contract consumed by
kamerplanter-ha - The data adapters (GBIF, Perenual, CSV/iCal)
Outside the boundary
- The
kamerplanter-hacustom integration itself (separate repo; consumes this API) - External botanical data providers and LLM backends (integrated, not owned)
- The operator's own hardware / cluster
Each entry: label, relationship category, interaction surface, expectation,
documentation track (user-docs or developer-docs per
spec/project/docs-audience-tracks/), confirmed/assumed, criticality.
-
Home grower / hobby gardener / houseplant owner — category: direct-consumer · surface: the web UI, adaptive care reminders, the knowledge assistant · expects: guidance scaled to skill level (beginner/intermediate/expert), reliable season- and hemisphere-aware reminders, accurate plant and nutrient data · track:
user-docs· status:assumed· criticality: primary -
Community-garden administrator — category: direct-consumer · surface: the web UI with role-based access (admin/grower/viewer), shared gardens, the invitation system · expects: tenant isolation, role management, shared-responsibility workflows · track:
user-docs· status:assumed· criticality: primary
-
Self-hoster — category: operator · surface: Docker Compose / Kubernetes / Helm / Skaffold,
.envconfiguration, the multi-service data stack (ArangoDB, PostgreSQL/pgvector, TimescaleDB, Redis) · expects: reproducible deploy, an upgrade path, backup and retention controls, resource guidance · track:developer-docs· status:assumed· criticality: primary -
Home Assistant integrator — category: operator · surface: the Home-Assistant-facing API for sensor-data import and actuator control (consumed by
kamerplanter-ha) · expects: a stable API contract for sensors and actuators · track:developer-docs· status:assumed· criticality: secondary
-
Maintainer (
nolte) — category: contributor · surface: the monorepo (backend / frontend / knowledge service), CI, the specs underspec/· expects: green CI and spec-grounded changes · track:developer-docs· status:assumed· criticality: primary -
Claude Code as co-author — category: contributor · surface:
CLAUDE.md,.claude/,spec/, the Taskfile · expects: deterministic task targets and readable conventions · track:developer-docs· status:assumed· criticality: secondary
- GDPR / data-protection — category: governing ·
surface: personal-data handling, retention policies, the self-hosted-private
design · expects: lawful processing, retention enforcement, data-subject
rights · track:
developer-docs· status:assumed· criticality: secondary
- External botanical / data providers (GBIF, Perenual) — category: indirect ·
surface: the enrichment adapters that call their APIs ·
expects (without knowing): correct API usage, attribution, rate-limit respect ·
track:
developer-docs· status:assumed· criticality: peripheral
Re-run audience-identify revisit when any of the following changes:
- A hosted / SaaS offering is introduced (the self-hosted-only assumption breaks).
- A new external integration surface appears (a public API, a second smart-home platform, a mobile app).
- A regulated data class enters scope beyond today's personal-data handling.
- An external contributor pattern emerges (guest contributors, plugins).