Ali Mansour
Ali Mansour
Ali Mansour
Ali Mansour
Ali Mansour

Senior Software Engineer

Senior Mobile Engineer

Content Creator

Tech Speaker

ICare

  • Created By: Ali Mansour, Mohamed Ahmed,Thoraya Mahfouz, Saber Farouk, Mohamed Galal
  • Date: 01/06/2025
  • Client: Open Source
  • Categories: Android App

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.

🚀 Features

  • 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

🧩 Architecture

  • MVI (Model-View-Intent)
  • Clean Architecture
    • Presentation: ViewModels + Composables
    • Domain: UseCases + Models
    • Data: Repositories + Room DB + Remote APIs

🧪 Use Cases Implemented

Each ViewModel corresponds to domain-specific use cases, such as:

  • AddNewClinicUpdateClinicListClinics
  • AddNewDoctorUpdateDoctorGetDoctorSchedule
  • SignInWithGoogleRegisterDeleteAccount
  • AddNewPharmacistListPharmaciesUpdatePharmacy
  • etc.

Activity diagrams and PlantUML files for use cases are available in /docs/diagrams.


🗂️ ViewModels Covered

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.


📊 Diagrams

  • ✅ UML Class Diagrams (Models + ViewModels)
  • ✅ Activity Diagrams for Use Cases
  • ✅ Component Diagram of the System
  • PlantUML files are maintained under /docs/diagrams/.

🛠️ Technologies

  • 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

📌 Non-Functional Requirements

  • 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.
Verified by MonsterInsights