Skip to content

[FEATURE] First vertical slice: Caregiver/Emergency Contacts + generic CRUD component #118

Description

@Jberma23

Description

Per 0008 — First representative vertical slice: build Caregiver/Emergency Contacts as the first full Phase 1 vertical slice — data model through a shipped, tested, accessible screen. Fields: name, relationship, phone, email. Add/edit/delete list.

Build the generic repeatable-entry CRUD component alongside this slice, not after it — Health Care Providers, Allergies, Chronic Conditions, Hospitalizations, Family History, and others are all variants of the same add/edit/delete list shape, and building Contacts without generalizing the pattern first would mean redoing the work on the next list screen.

Scope: Caregiver/Emergency Contacts screen plus the generic CRUD component it's built on. Does not cover Your Information or Medical Portals — those carry sensitive-field exclusion logic (0006) that's intentionally out of scope for this simplest-case slice. Does not include building the "Keep with me" emergency screen itself, though this data feeds into it later.

Acceptance Criteria

  • Generic repeatable-entry CRUD component built as a reusable pattern, not a one-off screen implementation
  • Caregiver/Emergency Contacts screen built on that component: fields = name, relationship, phone, email
  • Add, edit, and delete all work end-to-end against the encrypted local database
  • Screen sits behind the existing biometric-unlock app shell like the rest of Phase 1
  • Meets WCAG-aligned accessibility requirements (screen reader support, no reliance on color alone, adequate touch targets)
  • Screen follows the reduce-cognitive-load principle — one task per screen, next step obvious
  • The feature/s being implemented are covered by unit tests - If not, create tests for them on this ticket

Additional Info and Resources

  • Source: 0008-first-vertical-slice.md
  • This is intended as the first ticket handed to a new contributor — a "start here" onboarding story. Keep scope small and the CRUD pattern clean, since later Phase 1 screens will copy it directly.
  • No sensitive-field exclusion logic belongs in this ticket (contrast 0006, which governs Your Information and Medical Portals) — this slice is intentionally the lowest-complexity case.
  • Output feeds into the "Keep with me" emergency screen (0005) — not built here, but keep that downstream use in mind for the data shape.

QA

  • Add, edit, and delete a contact; confirm changes persist correctly in the encrypted local database
  • Confirm the CRUD component is genuinely reusable (not hardcoded to Contacts' specific fields)
  • Run the full add/edit/delete flow with a screen reader (VoiceOver/TalkBack)
  • Confirm the screen is only reachable behind biometric unlock

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions