Mobile Developer Intern — A2SV Foundation · Jul–Aug 2026 (module ownership)
AfyaMind — Clinical History & Appointments
Read-only clinical history, encounter timeline, and appointments for a Flutter patient app built under Clean Architecture with a six-person mobile team.
AfyaMind was built by a six-person mobile team. I owned features/clinical_history. Auth, medication adherence, vitals sync, access requests, and core scaffolding were owned by teammates.

Problem
Patients needed a chronological, trustworthy view of clinic visits — evaluations, labs, diagnoses, prescriptions — and standalone appointments, without any ability to mutate clinical records.
Contribution
I owned the clinical_history feature end to end: domain entities and use cases, data-layer models and repositories against the versioned API, Bloc/Cubit presentation, timeline and detail screens, and unit/widget tests.
Outcome
Delivered a reviewed, merged vertical slice covering encounters timeline, aggregated encounter detail, and standalone appointments, integrated with the shared design system and Dio session client.
Technical decisions
- Strict Clean Architecture layering so domain logic stayed free of Flutter and networking dependencies.
- Separate condensed medical-history summaries from full encounter detail payloads to keep the timeline responsive.
- Read-only UX by design — no edit or delete paths for clinical records on the patient client.
Architecture
Each feature follows data → domain → presentation. My domain layer exposes entities and single-purpose use cases; repositories hide Dio/JSON details; Blocs consume domain entities only. This let unit tests exercise clinical history logic without the network or UI.
User-facing functionality
Patients see a chronological encounters feed, open condensed summaries or full visit detail (evaluation, vitals, labs with flags, diagnoses, prescriptions), and browse standalone appointments — all read-only.
API contract
The module consumes versioned /api/v1 encounter and appointment endpoints, including medical-history summaries and aggregated encounter detail. Condensed vs full payloads were an explicit performance decision for mobile rendering.
Project gallery

The encounter API contract used for clinical history integration.