Architecture

HouseCairn is a Django application with HTMX for the interactive parts, in a single container. The main rules, each recorded in a decision:

  • One service layer holds the business rules; web views and API views call it and hold none of their own (ADR 0002).

  • Web and API parity: what the web interface does, the API does too, checked by a test (ADR 0003).

  • Every query is scoped to the homes of the user, or of the API token (ADR 0006).

  • Stable identifiers and addresses: UUIDs, soft deletion, addresses that do not change (ADR 0005, ADR 0010).

  • Background tasks with django-q2 and the database as broker (ADR 0008).

  • No external resource and a strict Content Security Policy (ADR 0011).

  • English source, French shipped, no hard-coded string (ADR 0013).

The code is in src/housecairn/, one Django application per domain (accounts, apitokens, core, events, homes, rooms).