Skip to content

Architecture overview

This page is a high-level orientation. Deeper dives live alongside it under the Architecture section as they are written.

rettX is intentionally small for a healthcare system. There are three runtime layers and two supporting libraries:

flowchart TD
    Caregivers(["👤 Caregivers"]):::actor
    Admins(["🏥 Admins / clinicians"]):::actor

    rettxweb["rettxweb<br/><small>Angular PWA · app.rettx.eu</small>"]:::surface
    rettxadmin["rettxadmin<br/><small>admin web app</small>"]:::surface

    rettxapi["rettxapi<br/><small>Python service · consent · access control</small>"]:::backend

    rettxmutation[["rettxmutation<br/><small>PyPI · HGVS parsing</small>"]]:::lib
    rettxid[["rettxid<br/><small>PyPI · pseudonymous IDs</small>"]]:::lib

    Caregivers --> rettxweb
    Admins --> rettxadmin
    rettxweb --> rettxapi
    rettxadmin --> rettxapi
    rettxapi --> rettxmutation
    rettxapi --> rettxid

    classDef actor fill:#f2f2f2,stroke:#8b4ea6,stroke-width:1.5px,color:#333
    classDef surface fill:#fdf0f7,stroke:#ed3385,stroke-width:1.5px,color:#333
    classDef backend fill:#f3e8f7,stroke:#8b4ea6,stroke-width:2px,color:#333
    classDef lib fill:#eaeaff,stroke:#4e4bbf,stroke-width:1.5px,color:#333
  • The caregiver app and the admin app never see another patient’s data. All authorisation is enforced server-side in rettxapi.
  • rettxapi is the only component that touches identifiable data at rest. Pseudonymous identifiers come from rettxid; mutation strings are normalised through rettxmutation.
  • The docs site (this site) and the WordPress landing site at rettx.eu are static and have no access to patient data.

For anything that crosses a trust boundary or affects more than one component, we write a specification in specs/ before any code is written. The spec must pass a constitution check (see governance) before tasks are fanned out to the relevant repositories.

See the ecosystem map for which repository holds what, and which are public versus private.

This section will grow as we publish ADRs and architecture deep dives. Watch the decisions section for newly-merged ADRs.