ICare is a modular Android application built with Jetpack Compose and Kotlin Multiplatform principles, aimed at delivering an efficient, scalable, and user-friendly healthcare experience for patients, doctors, clinics, pharmacies, imaging/lab centers, and administrators.
- User Authentication
- Email/Password login
- Google Sign-In
- Secure registration with medical info
- Appointment Management
- Book, view, confirm, or cancel appointments
- View consultation history
- Consultation Handling
- Add/view consultations by doctors
- Manage patient prescriptions
- Medical Entities Management
- Clinics, Pharmacies, Imaging & Lab Centers
- Add/update by admin
- Doctor Scheduling
- Doctor availability and schedule management
- Modular Design
- Clean separation by feature for better scalability and maintainability
- MVI (Model-View-Intent)
- Clean Architecture
- Presentation:
ViewModels + Composables - Domain:
UseCases +Models - Data:
Repositories+ Room DB + Remote APIs
- Presentation:
Each ViewModel corresponds to domain-specific use cases, such as:
AddNewClinic,UpdateClinic,ListClinicsAddNewDoctor,UpdateDoctor,GetDoctorScheduleSignInWithGoogle,Register,DeleteAccountAddNewPharmacist,ListPharmacies,UpdatePharmacy- etc.
Activity diagrams and PlantUML files for use cases are available in /docs/diagrams.
Simplified UML class diagrams are created to focus on the interaction between ViewModels and Domain Models. These include:
AuthViewModel
AppointmentViewModel
ClinicViewModel
CenterViewModel
PharmacyViewModel
and more…
Each ViewModel exposes functions that interact with UseCases and hold UI state.
- ✅ UML Class Diagrams (Models + ViewModels)
- ✅ Activity Diagrams for Use Cases
- ✅ Component Diagram of the System
- PlantUML files are maintained under
/docs/diagrams/.
- Kotlin
- Jetpack Compose
- Koin for Dependency Injection
- Room for local persistence
- Coroutines & Flow
- Firebase Auth for secure login
- KSP/Annotation processing for compile-time wiring
- DrawIo for diagram modeling
- Security: Encrypted auth flow, input validation, and account deletion.
- Performance: Lazy UI loading, state caching, and coroutine-optimized async operations.
- Scalability: Modularization and clean architecture allow scaling across teams/features.
- Maintainability: Strict adherence to Clean Architecture and MVVM patterns.
- Availability: Offline support using local Room DB with remote fallback.
