UX/UI And Design Links
Figma Sources
Not referenced in any repo's tracked docs, but confirmed via a direct Figma team API query (get-figma.py, --keyword c2fit), 2026-08-10:
| Project | File | Link |
|---|---|---|
| Product Discovery | C2Fit | Open in Figma ↗ |
| Project C2Fit | C2Fit Interview Summary | Open in Figma ↗ |
| Project C2Fit | C2Fit Old Version Development | Open in Figma ↗ |
| Project C2Fit | C2Fit Product | Open in Figma ↗ |
| Project C2Fit | CANTAB Review | Open in Figma ↗ |
| Team Data | Business data science Canvas — ASR for C2Fit Verbal Memory Test | Open in Figma ↗ |
| Team Design | C2FIT UT Report FJ | Open in Figma ↗ |
| Team Design | UT C2Fit | Open in Figma ↗ |
| Team Design | [C2FIT]-UT Report | Open in Figma ↗ |
| Team Design | [C2Fit]-C2FIT Screenshot | Open in Figma ↗ |
| Team Design | [C2Fit]-C2Fit 2.0 | Open in Figma ↗ |
| Team Design | [C2Fit]-Cognifit Screenshot | Open in Figma ↗ |
| Team Design | [C2Fit]-Cognitive Domain Design Board | Open in Figma ↗ |
| Team Design | [C2Fit]-Material 3 Design Screen Test | Open in Figma ↗ |
| Team Design | [C2Fit]-User Flow | Open in Figma ↗ |
| Team Design | วาดรูป C2Fit (VM word-list art assets) | Open in Figma ↗ |
| Team Dev | C2Fit Development | Open in Figma ↗ |
| Team Dev | C2Fit Frontend CI design | Open in Figma ↗ |
| Team Dev | C2Fit for sharing to Senior | Open in Figma ↗ |
For UI implementation specifics, open product surfaces → and open known UI/UX behaviors →. These Figma files are the design source of truth, so this page does not copy them.
Product Surfaces
| Surface | Primary Users | Notes |
|---|---|---|
Mobile app (c2fit-app-frontend) | Patients/end users | 3 build flavors (dev/prod/study) share one UI; guided assessment flow: intro → training → testing → result, per assessment. |
| Admin/backoffice | Staff | Unknown — c2fit-bff exposes /admin/v1/* routes (import users, change password) but no consuming frontend repo was found among AIMET siblings. |
Content authoring (c2fit-assessment-dashboard) | Internal content team | Local-only React tool for authoring/importing/exporting question pools and assessment paths — not a patient- or staff-facing surface. |
UX Principles Seen In Current Product
Derived from the frontend's feature-based module structure and per-assessment docs (c2fit-app-frontend/docs/06–12), not a design spec:
- Guided one-task-at-a-time flow per assessment: intro (tag/image carousel) → training (practice round) → testing (scored) → shared
AssessmentResultwidget. - Tutorial/demo overlays are common (
AnimatedHandTutorial,MovingHand,HandPathMover) — most assessments show an animated gesture demo before the first scored attempt. - Restart affordances mid-task on multi-step assessments (
ModifiedVisuospatialRestartModal,DrawingMemoryRestartModal), not present on the simpler assessments. - Countdown/waiting UI is used for delayed-recall gaps (
VerbalMemoryWaitingTimer,DrawingMemoryDelayedWaiting) rather than blocking the user with no feedback; Verbal Memory adds a local notification at the 60-second mark so the reminder fires even if the user backgrounds the app. - Live-caption feedback during audio recording (Digit Span Speak, Verbal Memory) via streaming/non-streaming recorder variants.
- Multi-step forms (
entry_questionnaire,medical_history_questionnaire) share one state machine: immutable form model + page index + computed progress, one page per question, gated "next" via a sharedValidator.
Known UI/UX Behaviors From Code
| Area | Behavior |
|---|---|
| API failure (401) | CommonErrorHandler refreshes the access token and retries automatically; logs out only if refresh also fails. |
| API failure (timeout/connection) | Shows a "no connection" modal/page and awaits the user's retry tap. |
| API failure (5xx/unhandled) | Shows a generic error modal via CommonErrorHandler.handleSomethingWrong(). |
| Streak fetch cancellation | Silently returns empty placeholder data (not shown as an error) if the user navigates away mid-fetch. |
| Journey resume after app restart | Disabled — resume_journey.dart's body is fully commented out pending a backend response-shape change (GetJourneyState doesn't return journeyPaths). |
| Digit Span Speak submission failure | Only debug-printed, no user-facing error surfaced (TODO to add Sentry capture). |
| Verbal Memory audio submission failure | Fails silently — retry call exists in code but is commented out. |
| Phase-skip (Modified Visuospatial / Drawing Memory) | Shared SkippingPage widget shown when PhaseSkipState.shouldSkip() applies, instead of rendering the phase. |
| Result-polling timeout (Attention Hold/Release) | RequestTimeoutWarning shown if the phase result fetch times out. |
Open UX Ownership
- Figma/design-file ownership and access — Not provided.
- UX/UI design ownership (team or individual) — Not provided.
- Admin/staff-facing UX — Unknown whether it exists at all. Open product surfaces →.
- Whether the "study" (research cohort) flavor has any UX differences beyond app identity/branding — Not provided, no flavor-conditional UI logic was found in the frontend docs reviewed.