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.mdnames 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 frommaterial_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.pymerges them intolib/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-srcfile. - 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
v2horizon; see ADR 0014.