Aller au contenu principal

ADR 0012 — Stitch visual parity

Status: accepted Date: 2026-10-27

Context​

ADR 0011 put the Stitch jobs in scope. The shipped screens do the jobs but do not look like the export. Each Stitch folder has a code.html and a screen.png. The export also carries a design system at stitch_afia_admin/afia_design_system/DESIGN.md inside stitch_afia_admin-1.zip. Several screens show fields the API does not return yet, such as a visit reason, a clinic name, a fee, a next slot, a vital unit, or an invoice reference.

Decision​

Every in-scope screen matches its Stitch screen.png. The export is the visual source. The task files list the in-scope folders per role.

  • The theme uses the Material 3 tokens from DESIGN.md. Primary is #003b5a. Primary container is #1a5276. Surface is #f7f9ff.
  • Headings use Manrope. Body uses Noto Sans. Arabic uses Noto Sans Arabic. DESIGN.md names Inter for body. We use Noto Sans so Latin and Arabic text share one family.
  • Radii are 8 and 12. Cards use a soft shadow 0 2px 8px rgba(0,0,0,.08).
  • Fonts are bundled under afia-app/assets/fonts/. Icons come from material_symbols_icons.
  • Shared widgets live in afia-app/lib/presentation/kit/. Screens use the kit. They do not restyle Material widgets one by one.
  • Each label is one language through AppLocalizations. The French and Arabic text side by side in Stitch is not copied.
  • New ARB keys are authored per role in afia-app/l10n-src/<role>.json. afia-app/tool/merge_l10n.py merges them into lib/l10n/app_*.arb.
  • The API gains the fields the screens show. Each field lands in its owner package with a Liquibase changeset and a controller test. New read projections are dashboards, a patient home, a worklist summary, and notifications.
  • The work is cut into WP-11 through WP-16 in group G4. WP-11 is the kit. WP-12 is the API. WP-13 to WP-16 are one role each.

The exclusions from ADR 0011 stay except NNI. ADR 0013 puts NNI (sign-up step 2 / profile field) in scope. Charts and the follow-up programme are out. Live video controls are out because the room is a link. Every AI, DICOM tool, PACS, voice, expert, hub, directory, audit, compliance, and settings screen is out.

Consequences​

  • Screen agents can run in parallel once WP-11 and WP-12 land. Each owns its own presentation folders and its own l10n-src file.
  • Health data stays in its owner package. Notifications and dashboards are read projections. They do not copy rows.
  • The FR+AR mock text in the export is not a spec. A reviewer compares layout, color, type, and spacing, not wording.
  • A screen with no Stitch folder still needs an export first, then WP-10 and a new ADR.
  • Parity exclusions (DICOM, PACS, voice, …) are not the Jira v2 horizon; see ADR 0014.