Android Repository - Feature Inventory

Repository: Psyter Android Client
Analysis Date: November 6, 2025
Version: 2.0.15 (Build 50)
Analyst: Development Team


Table of Contents

  1. Executive Summary
  2. Feature Matrix
  3. Detailed Feature Analysis
  4. Dependency Inventory
  5. Technical Debt Register
  6. Incomplete Features Assessment
  7. Feature Prioritization

Executive Summary

Feature Statistics

  • Total Features: 28 major features
  • Fully Implemented: 23 (82%)
  • Partially Implemented: 4 (14%)
  • Incomplete/Disabled: 1 (4%)
  • Total Dependencies: 73 libraries
  • Outdated Dependencies: 18 (25%)
  • TODO Comments: 100+ (mostly auto-generated stubs)
  • Technical Debt Items: 25+ significant issues

Implementation Status

✅ Fully Implemented: ████████████████░░░░ 82%
⚠️ Partially Implemented: ███░░░░░░░░░░░░░░░░░ 14%
❌ Incomplete: █░░░░░░░░░░░░░░░░░░░░░ 4%

Critical Findings

  1. Core features operational - Authentication, booking, video calls working
  2. Security vulnerabilities - Hardcoded credentials, unencrypted storage
  3. Outdated dependencies - 18 libraries need updates (security risk)
  4. Technical debt - Large classes, god objects, tight coupling
  5. Legacy code - CareProvider features in Client app (confusion)

Feature Matrix

# Feature Status Implementation % Priority Risk
Authentication & Onboarding
1 Email/Phone Login ✅ Complete 100% Critical Medium
2 Google Sign-In ✅ Complete 100% High Low
3 Apple Sign-In ✅ Complete 100% High Low
4 Registration (Multi-step) ✅ Complete 100% Critical Medium
5 Password Recovery ✅ Complete 100% High Low
6 Onboarding Slides ✅ Complete 100% Medium Low
7 Screening Questionnaire ✅ Complete 100% Critical Low
Provider Discovery & Booking
8 Search Providers ✅ Complete 100% Critical Low
9 Filter Providers ⚠️ Partial 80% High Medium
10 View Provider Profile ✅ Complete 100% Critical Low
11 Calendar Availability ✅ Complete 100% Critical Medium
12 Time Slot Selection ✅ Complete 100% Critical Low
13 Appointment Booking ✅ Complete 100% Critical High
Payments
14 Payment Gateway Integration ✅ Complete 100% Critical High
15 Wallet System ⚠️ Partial 75% High Medium
16 Promo Codes ⚠️ Partial 60% Low Low
Video Calls (Telemedicine)
17 WebRTC Video Calls ✅ Complete 95% Critical High
18 Incoming Call Notifications ✅ Complete 100% Critical Medium
19 Call Controls (Mute, Camera) ✅ Complete 100% Critical Low
20 WebSocket Signaling ✅ Complete 100% Critical High
Client Features
21 Mental Health Diary ✅ Complete 100% High Low
22 Homework Assignments ✅ Complete 100% High Low
23 Questionnaires ✅ Complete 100% High Low
24 Referrals Management ✅ Complete 90% Medium Low
25 Medical Resources/Blogs ✅ Complete 100% Low Low
Notifications & Chat
26 Push Notifications (FCM) ✅ Complete 100% Critical Medium
27 Chat/Messaging ⚠️ Partial 50% Medium Medium
Settings & Profile
28 User Profile Management ✅ Complete 100% High Low
29 Language Switching (EN/AR) ✅ Complete 100% High Low
30 App Settings ✅ Complete 95% Medium Low

Legend:
- ✅ Complete: Feature fully functional with no known issues
- ⚠️ Partial: Feature working but incomplete or has limitations
- ❌ Incomplete: Feature started but not functional


Detailed Feature Analysis

1. Authentication & Onboarding

1.1 Email/Phone Login ✅

Status: Fully Implemented
Location: LoginActivity.java (~980 lines)

Functionality:
- ✅ Email-based authentication
- ✅ Phone number authentication
- ✅ Password validation
- ✅ “Remember Me” functionality
- ✅ FCM token registration
- ✅ RTL support for Arabic

API Endpoints:

POST /Authenticate
Body: { Username, Password, DeviceId, DeviceType, FcmToken }

Security Issues:
- ⚠️ Password stored in plain text (MySharedPreferences)
- ⚠️ No password complexity requirements enforced
- ⚠️ No rate limiting on failed attempts (client-side)

Technical Debt:
- Large activity (980 lines) - should split
- Mixed UI and business logic
- No ViewModel (state management issues)


1.2 Google Sign-In ✅

Status: Fully Implemented
Location: LoginActivity.java

Functionality:
- ✅ Google OAuth2 integration
- ✅ Firebase Auth with Google
- ✅ ActivityResultLauncher pattern (modern approach)
- ✅ Error handling

Dependencies:

implementation 'com.google.android.gms:play-services-auth:20.4.0'
implementation 'com.google.firebase:firebase-auth:22.1.1'

Issues:
- ⚠️ Firebase Auth version (22.1.1) - Latest is 23.0.0
- ⚠️ No token validation on backend


1.3 Apple Sign-In ✅

Status: Fully Implemented
Location: LoginActivity.java

Functionality:
- ✅ Apple OAuth2 integration
- ✅ Callback handling
- ✅ User info extraction

Notes:
- Minimal documentation
- Testing requires iOS device (cross-platform testing)


1.4 Registration (Multi-step) ✅

Status: Fully Implemented
Location: RegisterActivity.java, RegisterNumberOrEmail, RegisterVerification, RegisterVerificationConfirm, RegisterBasicInfo

Flow:

Step 1: RegisterNumberOrEmail      - Enter email or phone
Step 2: RegisterVerification        - Receive OTP
Step 3: RegisterVerificationConfirm - Confirm OTP
Step 4: RegisterBasicInfo           - Enter personal info
Step 5: QuestionaireActivity        - Screening assessment

Functionality:
- ✅ Multi-step wizard with ViewPager
- ✅ OTP verification
- ✅ Form validation
- ✅ Progress indicator
- ✅ Back navigation

Issues:
- ⚠️ OTP timeout not clearly shown
- ⚠️ No offline capability (network required for each step)
- ⚠️ Large fragments (RegisterBasicInfo ~664 lines)

User Experience Issues:
- Long registration process (5 steps)
- No progress saving (starts over if app crashes)
- Screening questionnaire takes 10-15 minutes

Recommended Improvements:
- Implement progress saving to SharedPreferences
- Add “Skip for now” option for screening
- Reduce required fields in Step 4


1.5 Password Recovery ✅

Status: Fully Implemented
Location: ForgotPasswordActivity.java, ResetPasswordActivity.java

Functionality:
- ✅ Email-based password reset
- ✅ OTP verification
- ✅ New password entry
- ✅ Password strength meter (using nu.aaro.gustav:passwordstrengthmeter:0.4)

API Endpoints:

POST /ForgotPassword
POST /ResetPassword


1.6 Onboarding Slides ✅

Status: Fully Implemented
Location: OnboardingActivity.java, OnboardingFragmentA/B/C

Functionality:
- ✅ 3 slides introducing app features
- ✅ ViewPager with page indicators
- ✅ Skip option
- ✅ First launch detection

Technical Implementation:

// Fragments in ViewPager
OnboardingFragmentA - Welcome & Introduction
OnboardingFragmentB - Features overview
OnboardingFragmentC - Get started CTA


2. Provider Discovery & Booking

2.1 Search Providers ✅

Status: Fully Implemented
Location: FindCPFragment.java (~800 lines), CarePListActivity.java (~600 lines)

Functionality:
- ✅ Text search by provider name
- ✅ Category filter (Psychologist, Psychiatrist, etc.)
- ✅ Specialty filter
- ✅ Language filter
- ✅ Gender filter
- ✅ Rating display
- ✅ Price display
- ✅ Availability indicator

API Endpoints:

GET /ServiceProvider/GetServiceProviderListByCatalogueFilter
Query params: searchText, categoryId, specialtyId, languageId, gender, minPrice, maxPrice

UI Components:
- RecyclerView with CarePListAdapter
- Pull-to-refresh (SwipeRefreshLayout)
- Grid/List view toggle

Issues:
- ⚠️ No pagination (loads all providers at once - performance issue)
- ⚠️ No loading indicator during search
- ⚠️ Search triggers on every character (no debounce)

Recommended Improvements:
- Implement pagination (20 items per page)
- Add search debounce (500ms delay)
- Cache search results


2.2 Filter Providers ⚠️

Status: Partially Implemented (80%)
Location: CarePListingFiltersActivity.java

Working Filters:
- ✅ Category (Dropdown)
- ✅ Specialty (Multi-select)
- ✅ Language (Multi-select)
- ✅ Gender (Radio buttons)
- ✅ Price Range (RangeSeekBar)

Missing/Incomplete Filters:
- ❌ Distance/Location filter (UI exists but not functional)
- ❌ Availability filter (next 7 days, next month, etc.)
- ⚠️ Experience years (UI exists but no API support)

Technical Debt:
- Filter state not persisted (resets on back navigation)
- No “Clear All” button
- No active filter count indicator

Recommended Improvements:
- Persist filter state to SharedPreferences
- Implement distance filter (requires location permission)
- Add active filter badge


2.3 View Provider Profile ✅

Status: Fully Implemented
Location: CarePDetailActivity.java (~900 lines)

Information Displayed:
- ✅ Profile photo
- ✅ Name, title, specialty
- ✅ Rating and reviews count
- ✅ Languages spoken
- ✅ Education & certifications
- ✅ Experience
- ✅ Session price
- ✅ About/Bio
- ✅ Video introduction
- ✅ Availability calendar preview

Actions:
- ✅ Book Appointment button
- ✅ Rate Provider button (post-session only)
- ✅ Share Profile
- ✅ Add to Favorites (My Providers)

Issues:
- ⚠️ Large activity (900 lines) - complex layout
- ⚠️ Video player initialization slow
- ⚠️ No offline caching of profile data


2.4 Calendar Availability ✅

Status: Fully Implemented
Location: MonthViewClient.java, CalendarClientView.java

Functionality:
- ✅ Month view calendar
- ✅ Available dates highlighted (green)
- ✅ Unavailable dates grayed out
- ✅ Selected date highlighted
- ✅ Date selection

API Endpoints:

POST /ServiceProvider/GetServiceProviderAvailableDates
Body: { ServiceProviderId, StartDate, EndDate }

Technical Details:
- Custom calendar view (CalendarCustomView.java - 2200 lines!)
- Date calculation logic
- Timezone handling

Issues:
- ⚠️ Custom calendar view is massive (2200 lines)
- ⚠️ Performance issues with date calculations
- ⚠️ No caching of availability data

Recommended Refactoring:
- Use Material Date Picker (MaterialDatePicker)
- Or use CalendarView from AndroidX
- Split CalendarCustomView into smaller components


2.5 Time Slot Selection ✅

Status: Fully Implemented
Location: SelectSlotActivity.java

Functionality:
- ✅ Grid view of available time slots
- ✅ Selected slot highlighting
- ✅ Duration display (30min, 60min, etc.)
- ✅ Price display per slot
- ✅ Real-time availability checking

API Endpoints:

POST /Scheduling/GetAvailableSlots
Body: { ServiceProviderId, Date, SessionDuration }

UI Components:
- GridView with SlotsGridAdapter
- 15-minute slot intervals
- Color coding (green = available, gray = booked)


2.6 Appointment Booking ✅

Status: Fully Implemented
Location: SlotPaymentSuggestActivity.java, Payment flow

Functionality:
- ✅ Booking confirmation screen
- ✅ Provider info summary
- ✅ Date & time display
- ✅ Price breakdown
- ✅ Payment method selection (Wallet or Card)
- ✅ Terms & conditions acceptance

Payment Options:
1. Wallet - If sufficient balance, direct booking
2. Card - Opens PaymentWebActivity (WebView with STS Payment gateway)

API Endpoints:

POST /Scheduling/ReserveSlot (holds slot for 10 minutes)
POST /Payment/InsertPayForData (processes payment)
POST /Scheduling/ConfirmBooking (finalizes booking)

Issues:
- ⚠️ No payment retry mechanism
- ⚠️ Slot reservation timeout not clearly communicated (10 min)
- ⚠️ No booking confirmation email/SMS sent from app
- ⚠️ Payment WebView can be clunky

Critical Security Issue:
- ⚠️ Payment data passed via URL query string (potential leakage)

Recommended Improvements:
- Implement payment retry
- Show countdown timer for reservation (10 minutes)
- Send confirmation notification
- Use native payment SDK instead of WebView


3. Payments

3.1 Payment Gateway Integration ✅

Status: Fully Implemented
Location: PaymentWebActivity.java

Provider: STS Payment (Saudi payment gateway)

Functionality:
- ✅ WebView-based payment
- ✅ Success/Failure callback handling
- ✅ Transaction ID capture
- ✅ Error handling

Payment URL:

https://dev2.innotech-sa.com/Psyter/Master/Web/Client/BookingPaymentFromMobile?dataString={encrypted_data}

Issues:
- ⚠️ Payment gateway URL hardcoded (Utils.BaseURLPayment)
- ⚠️ No support for multiple payment gateways
- ⚠️ WebView approach (not native SDK)
- ⚠️ Data passed via URL (security concern)

Recommended Improvements:
- Use native payment SDK (HyperPay, Moyasar, etc.)
- Implement payment tokenization
- Add 3D Secure verification


3.2 Wallet System ⚠️

Status: Partially Implemented (75%)
Location: Wallet fragments, Payment activities

Functionality:
- ✅ View wallet balance
- ✅ Add funds to wallet (via payment gateway)
- ✅ Use wallet for booking payments
- ⚠️ Wallet transaction history (limited)
- ❌ Wallet-to-wallet transfers (not implemented)
- ❌ Wallet refund processing (manual backend process)

API Endpoints:

GET /Wallet/GetBalance
POST /Wallet/AddFunds
POST /Wallet/DeductAmount

Issues:
- No transaction filtering (date range, type)
- No export transaction history
- Refunds require contacting support

Recommended Improvements:
- Full transaction history with filters
- Automatic refund processing
- Wallet withdrawal option


3.3 Promo Codes ⚠️

Status: Partially Implemented (60%)
Location: PromoCodeFragment.java, Booking flow

Functionality:
- ✅ Enter promo code during booking
- ✅ Validate promo code
- ✅ Apply discount
- ⚠️ View available promo codes (UI only, no API)
- ❌ Promo code expiration not checked on client
- ❌ No usage limit enforcement

API Endpoints:

POST /PromoCode/ValidatePromoCode
Body: { PromoCode, UserId, Amount }

Issues:
- Promo code list UI exists but not connected to API
- No notification of new promo codes
- No promo code history


4. Video Calls (Telemedicine)

4.1 WebRTC Video Calls ✅

Status: Fully Implemented (95%)
Location: CollaborationMain.java (~3000 lines!), ManagePresenceeClient.java (~1500 lines)

Functionality:
- ✅ Peer-to-peer video calling
- ✅ Audio streaming
- ✅ Camera switching (front/back)
- ✅ Mute/unmute microphone
- ✅ Enable/disable camera
- ✅ Speaker on/off
- ✅ Call timer
- ✅ Network quality indicator (partial)
- ✅ Call recording (provider side - not in client app)

WebRTC Configuration:

// ICE Servers
STUN: stun:stun.l.google.com:19302
TURN: (if configured on backend)

// Signaling
WebSocket: wss://server:3333/
Protocol: Custom signaling messages

Signaling Messages:
- C_CREATE_COLLABORATION - Initiate call
- C_SDP - SDP Offer/Answer exchange
- C_ICECANDIDATE - ICE candidate exchange
- C_END_COLLABORATION - End call
- C_LEAVE_COLLABORATION - Leave call

Technical Implementation:

// Dependencies
implementation 'org.webrtc:google-webrtc:1.0.28513' // ⚠️ OUTDATED

// Components
- PeerConnectionFactory
- PeerConnection
- VideoCapturer (Camera2Capturer)
- AudioSource, VideoSource
- AudioTrack, VideoTrack
- SurfaceViewRenderer (Local & Remote video)
- EglBase (OpenGL context)

Critical Issues:
- ⚠️ WebRTC version OUTDATED (1.0.28513 from 2019)
Latest version: 1.0.32006 (2022)
- ⚠️ No automatic reconnection if network drops
- ⚠️ No call quality metrics (packet loss, bitrate, etc.)
- ⚠️ Memory leaks - PeerConnection not properly disposed
- ⚠️ God object - CollaborationMain is 3000 lines

Security Concerns:
- No end-to-end encryption verification UI
- No call permission verification
- No call recording consent UI

Recommended Improvements:
1. Update WebRTC library (CRITICAL)

implementation 'org.webrtc:google-webrtc:1.0.32006'

2. Refactor CollaborationMain - Split into smaller classes
3. Implement automatic reconnection - Network drop handling
4. Add call quality monitoring - Display metrics
5. Fix memory leaks - Proper cleanup in onDestroy()


4.2 Incoming Call Notifications ✅

Status: Fully Implemented
Location: IncomingCall.java, MyFirebaseMessagingService.java

Functionality:
- ✅ FCM push notification for incoming calls
- ✅ Full-screen incoming call activity
- ✅ Ringtone playback
- ✅ Vibration
- ✅ Accept/Reject buttons
- ✅ Caller information display

Notification Payload:

{
  "notification_type": "incoming_call",
  "collaboration_id": "12345",
  "caller_name": "Dr. John Smith",
  "caller_image": "https://..."
}

Issues:
- ⚠️ Ringtone doesn’t stop if notification dismissed
- ⚠️ No “Call Busy” response
- ⚠️ Android 10+ full-screen notification issues

Recommended Fixes:
- Proper ringtone lifecycle management
- Add “Busy” option
- Implement ConnectionService API for Android 10+


4.3 Call Controls ✅

Status: Fully Implemented
Location: CollaborationMain.java

Controls:
- ✅ Mute/Unmute microphone
- ✅ Enable/Disable camera
- ✅ Switch camera (front/back)
- ✅ Speaker on/off
- ✅ End call
- ⚠️ Screen sharing (not implemented)
- ⚠️ Chat during call (not implemented)

UI:
- Bottom sheet with control buttons
- Icons with state indication
- Floating action buttons


4.4 WebSocket Signaling ✅

Status: Fully Implemented
Location: ManagePresenceeClient.java (~1500 lines)

Functionality:
- ✅ WebSocket connection management
- ✅ Authentication
- ✅ Presence status (Online/Offline/Busy)
- ✅ Signaling message exchange
- ✅ Reconnection logic
- ✅ Heartbeat (ping/pong)

Dependencies:

implementation 'com.neovisionaries:nv-websocket-client:2.3' // ⚠️ Last updated 2016

Recommended Update:
- Consider migrating to OkHttp WebSocket (more actively maintained)
- Or use Socket.IO client

Issues:
- ⚠️ Library not maintained since 2016
- ⚠️ No automatic reconnection on network change
- ⚠️ Large class (1500 lines) - should split


5. Client Features

5.1 Mental Health Diary ✅

Status: Fully Implemented
Location: MyDiaryFragment.java, AddUpdateDiaryActivity.java

Functionality:
- ✅ Create diary entries
- ✅ View diary history
- ✅ Edit existing entries
- ✅ Delete entries
- ✅ Mood tracking (Happy, Sad, Anxious, etc.)
- ✅ Date/time stamp
- ✅ Privacy (only user can see)

API Endpoints:

GET /Diary/GetClientDiaries
POST /Diary/AddDiaryEntry
PUT /Diary/UpdateDiaryEntry
DELETE /Diary/DeleteDiaryEntry

UI Components:
- RecyclerView with DiaryAdapter
- Floating Action Button (Add entry)
- Mood selection with icons

Enhancement Opportunities:
- Add rich text formatting
- Add photo attachments
- Add diary insights (mood trends)
- Export diary to PDF


5.2 Homework Assignments ✅

Status: Fully Implemented
Location: MyHomeWorkFragment.java, HomeWrokSubmitActivity.java

Functionality:
- ✅ View assigned homework
- ✅ Download homework files (PDF, images)
- ✅ Submit homework (text + file upload)
- ✅ View provider feedback
- ✅ Due date tracking
- ✅ Completion status

API Endpoints:

GET /Homework/GetClientHomeworks
POST /Homework/SubmitHomework
GET /Homework/GetHomeworkFeedback

File Handling:
- PDF viewer (AndroidPdfViewer library)
- Image viewer (Glide/Picasso)
- File picker for submissions

Issues:
- ⚠️ No offline capability (requires network to view)
- ⚠️ File size limit not enforced on client
- ⚠️ No notification for new homework


5.3 Questionnaires ✅

Status: Fully Implemented
Location: MyQyestionaireFragment.java (~1500 lines), QuestionnaireFragment.java, QuestionaireActivity.java

Functionality:
- ✅ View assigned questionnaires
- ✅ Multiple question types (MCQ, Text, Scale, Yes/No)
- ✅ Progress tracking
- ✅ Submit responses
- ✅ View results/scores
- ✅ Mandatory questionnaire screening during registration

Question Types:
- Single choice (Radio buttons)
- Multiple choice (Checkboxes)
- Text input
- Rating scale (1-10)
- Yes/No

API Endpoints:

GET /Questionnaire/GetClientQuestionnaires
GET /Questionnaire/GetQuestionnaireQuestions
POST /Questionnaire/SubmitQuestionnaireResponses

Issues:
- ⚠️ Typo in file name (MyQyestionaireFragment should be MyQuestionnaireFragment)
- ⚠️ Large fragment (1500 lines) - complex UI
- ⚠️ No save draft functionality (starts over if app closes)

Recommended Improvements:
- Fix typo in file name
- Implement draft saving
- Add progress bar within questionnaire
- Break down large fragment


5.4 Referrals Management ✅

Status: Fully Implemented (90%)
Location: ReferralsFragment.java, ReferralActivity.java

Functionality:
- ✅ View received referrals
- ✅ Referral details (referring provider, reason, notes)
- ✅ Accept/Decline referral
- ✅ Book appointment with referred provider

API Endpoints:

GET /Referral/GetClientReferrals
POST /Referral/AcceptReferral
POST /Referral/DeclineReferral

Issues:
- ⚠️ No notification for new referrals
- ⚠️ No referral history (only active referrals shown)


5.5 Medical Resources/Blogs ✅

Status: Fully Implemented
Location: BlogsActivity.java, BlogDetailsActivity.java

Functionality:
- ✅ View educational blog posts
- ✅ Categories (Anxiety, Depression, Stress, etc.)
- ✅ Search blogs
- ✅ Blog details with rich content
- ✅ Share blog
- ✅ External links to medical sources

API Endpoints:

GET /Blog/GetBlogs
GET /Blog/GetBlogDetails/{id}

UI Components:
- RecyclerView with BlogAdapter
- WebView for blog content (HTML)

Enhancement Opportunities:
- Add bookmark/favorite blogs
- Add reading progress tracking
- Add related blogs suggestions


6. Notifications & Chat

6.1 Push Notifications (FCM) ✅

Status: Fully Implemented
Location: MyFirebaseMessagingService.java, MyFirebaseInstanceIdService.java

Notification Types:
- ✅ Incoming call
- ✅ Appointment reminder (1 hour before, 24 hours before)
- ✅ Appointment cancellation
- ✅ New homework assigned
- ✅ New questionnaire assigned
- ✅ Provider response
- ✅ Payment confirmation
- ✅ Referral received

Dependencies:

implementation 'com.google.firebase:firebase-messaging:15.0.0' // ⚠️ VERY OUTDATED

Latest Version: 23.4.0

Critical Issue:
- ⚠️ Firebase Messaging library is 8 major versions behind!
- Security vulnerabilities
- Missing features (notification channels, etc.)

Recommended Update:

implementation 'com.google.firebase:firebase-messaging:23.4.0'


6.2 Chat/Messaging ⚠️

Status: Partially Implemented (50%)
Location: ChatMainActivity.java, ConversationActivity.java

Implemented:
- ✅ View conversation list
- ✅ Send text messages
- ✅ Receive messages
- ✅ Typing indicator
- ⚠️ Message delivery status (partial)

Not Implemented:
- ❌ Image/File attachments
- ❌ Voice messages
- ❌ Read receipts
- ❌ Message search
- ❌ Push notifications for new messages
- ❌ Message persistence (no local DB)

Technical Details:
- WebSocket-based real-time messaging
- No message encryption
- No offline message queue

Recommended Improvements:
- Implement Room database for message persistence
- Add E2E encryption (Signal Protocol)
- Add file attachment support
- Implement push notifications for messages


7. Settings & Profile

7.1 User Profile Management ✅

Status: Fully Implemented
Location: MyProfileFragmentClient.java, Profile edit activities

Functionality:
- ✅ View profile information
- ✅ Edit personal info (Name, DOB, Gender, etc.)
- ✅ Update profile photo
- ✅ Change password
- ✅ Update contact info (Email, Phone)
- ✅ Manage allergies
- ✅ Medical history

API Endpoints:

GET /Client/GetProfile
PUT /Client/UpdateProfile
POST /Client/UploadProfileImage
PUT /Client/ChangePassword

Image Upload:
- Glide for image loading
- Image cropper for profile photo
- Image compression before upload

Issues:
- ⚠️ Image upload slow (no progress indicator)
- ⚠️ No image size validation
- ⚠️ Password change requires re-authentication (should log out)


7.2 Language Switching (EN/AR) ✅

Status: Fully Implemented
Location: LocaleUtils.java, LangHelper.java

Functionality:
- ✅ English and Arabic support
- ✅ RTL layout for Arabic
- ✅ Dynamic language switching (no app restart required)
- ✅ Language preference persisted

Technical Implementation:

// Language codes
"0" = English
"1" = Arabic

// RTL support
if (lang.equals("1")) {
    // Apply RTL layout
    configuration.setLayoutDirection(Locale("ar"));
}

String Resources:
- values/strings.xml (English)
- values-ar/strings.xml (Arabic)

Issues:
- ⚠️ Some strings not translated (hardcoded English)
- ⚠️ Date formatting not localized
- ⚠️ Number formatting not localized


7.3 App Settings ✅

Status: Fully Implemented (95%)
Location: Settings fragments, Preferences

Settings:
- ✅ Language selection
- ✅ Notification preferences
- ✅ Privacy settings
- ✅ Terms & Conditions
- ✅ Privacy Policy
- ✅ About app (version, contact)
- ✅ Logout

Notification Settings:
- ✅ Enable/disable push notifications
- ✅ Enable/disable email notifications
- ⚠️ Granular notification control (not fully implemented)

Issues:
- ⚠️ No in-app notification sound selection
- ⚠️ No data usage settings (Wi-Fi only mode)


Dependency Inventory

Core Dependencies (73 total)

Category Library Current Version Latest Version Status Risk
UI & Material Design
1 androidx.appcompat 1.1.0 1.6.1 ⚠️ Outdated Medium
2 material 1.2.0-alpha06 1.11.0 ⚠️ Outdated Medium
3 constraintlayout 1.1.3 2.1.4 ⚠️ Outdated Low
4 legacy-support-v4 1.0.0 1.0.0 ✅ Current Low
Networking
5 android-networking 1.0.2 1.0.2 ⚠️ Archived High
6 async-http 1.4.9 1.4.11 ⚠️ Outdated Low
7 nv-websocket-client 2.3 2.14 ⚠️ Outdated Medium
Image Loading
8 glide 4.10.0 4.16.0 ⚠️ Outdated Low
9 picasso 2.4.0 2.8 ⚠️ Outdated Low
10 circleimageview 2.1.0 3.1.0 ⚠️ Outdated Low
WebRTC & Communication
11 google-webrtc 1.0.28513 1.0.32006 ⚠️ CRITICAL Critical
Firebase
12 firebase-messaging 15.0.0 23.4.0 ⚠️ CRITICAL Critical
13 firebase-auth 22.1.1 23.0.0 ⚠️ Minor Low
14 firebase-crashlytics 18.4.1 18.6.1 ⚠️ Minor Low
15 firebase-analytics 21.3.0 21.5.0 ⚠️ Minor Low
Google Services
16 play-services-auth 20.4.0 21.0.0 ⚠️ Minor Low
JSON & Data
17 gson 2.8.5 2.10.1 ⚠️ Outdated Low
PDF & Documents
18 android-pdf-viewer 2.8.2 3.2.0-beta.1 ⚠️ Outdated Low
UI Components
19 duo-navigation-drawer Local N/A ✅ Custom Low
20 slidetoact 0.7.0 0.10.0 ⚠️ Outdated Low
21 OtpView v1.1.2 v1.1.2 ✅ Current Low
22 password-strength-meter 0.4 0.4 ⚠️ Archived Low
WorkManager
23 work-runtime-ktx 2.7.0 2.9.0 ⚠️ Minor Low

Deprecated/Archived Libraries (Require Replacement)

Library Status Recommendation
android-networking (1.0.2) ⚠️ Archived (2018) Migrate to Retrofit + OkHttp
nv-websocket-client (2.3) ⚠️ Not maintained Migrate to OkHttp WebSocket
picasso (2.4.0) ⚠️ Very old Standardize on Glide only
password-strength-meter (0.4) ⚠️ Archived Implement custom or use Passay

Critical Updates Required

1. WebRTC (CRITICAL)

Current: 1.0.28513 (2019)
Latest: 1.0.32006 (2022)
Issues:
- Security vulnerabilities
- Missing performance improvements
- Compatibility issues with newer Android versions

Update Command:

// implementation 'org.webrtc:google-webrtc:1.0.28513'
implementation 'org.webrtc:google-webrtc:1.0.32006'

Testing Required:
- Video call functionality
- Audio quality
- Camera switching
- Network recovery


2. Firebase Messaging (CRITICAL)

Current: 15.0.0 (2018)
Latest: 23.4.0 (2024)
Issues:
- Missing notification channels (Android 8+)
- No notification importance levels
- Security vulnerabilities
- Deprecated APIs

Update Command:

// implementation 'com.google.firebase:firebase-messaging:15.0.0'
implementation 'com.google.firebase:firebase-messaging:23.4.0'

API Changes:
- onMessageReceived() signature changed
- FirebaseInstanceId deprecated (use FirebaseMessaging.getToken())
- Notification channel creation required


3. AndroidNetworking → Retrofit Migration (HIGH PRIORITY)

Current: android-networking 1.0.2 (archived)
Recommended: Retrofit 2.9.0 + OkHttp 4.12.0

Reason:
- android-networking not maintained since 2018
- Missing modern features (coroutines, Flow, etc.)
- Security vulnerabilities
- No Kotlin support

Migration Steps:
1. Add Retrofit dependencies
2. Create API interfaces
3. Replace AndroidNetworking calls (100+ calls)
4. Test all network operations


Dependency Update Summary

Total Libraries: 73
Up-to-date: 12 (16%)
Minor Updates: 43 (59%)
Major Updates: 16 (22%)
Archived/Deprecated: 2 (3%)

Recommended Update Priority:
1. CRITICAL (Do Now - 1 week):
- WebRTC (1.0.32006)
- Firebase Messaging (23.4.0)

  1. HIGH (Do Next):
    - AndroidNetworking → Retrofit migration
    - WebSocket client upgrade
    - Material Design (1.11.0)
    - AndroidX libraries

  2. MEDIUM (Plan):
    - Image loading libraries
    - UI component libraries
    - Minor dependency updates


Technical Debt Register

Critical Technical Debt (Do Now)

ID Issue Location Impact
TD-001 Hardcoded credentials in source code Utils.java Security
TD-002 Unencrypted password storage MySharedPreferences.java Security
TD-003 WebRTC library outdated (1.0.28513) build.gradle Functionality
TD-004 Firebase Messaging outdated (15.0.0) build.gradle Functionality
TD-005 No SSL certificate pinning Network layer Security

High Priority Technical Debt (Do Next)

ID Issue Location Impact
TD-006 God object - Utils.java (2031 lines) Stats/Utils.java Maintainability
TD-007 Large activity - CollaborationMain (3000 lines) Collaboration/CollaborationMain.java Maintainability
TD-008 Large fragment - MyQyestionaireFragment (1500 lines) Client/Fragments/MyQyestionaireFragment.java Maintainability
TD-009 Custom calendar view (2200 lines) Stats/CalendarCustomView.java Maintainability
TD-010 AndroidNetworking library archived Network layer Maintainability
TD-011 No pagination in provider list FindCPFragment.java Performance
TD-012 Tight coupling to static Utils class Throughout codebase Testability
TD-013 No dependency injection Throughout codebase Testability
TD-014 Legacy CareProvider code in Client app CareProvider/ package Confusion
TD-015 No unit tests Test directory Quality

Medium Priority Technical Debt (Plan)

ID Issue Location Impact
TD-016 No MVVM architecture Throughout codebase Maintainability
TD-017 No Repository pattern Data layer Architecture
TD-018 Mixed responsibilities in Activities Throughout codebase Maintainability
TD-019 No offline data persistence (Room) Data layer UX
TD-020 Inconsistent image loading libraries (Glide + Picasso) Throughout codebase Performance
TD-021 No WebSocket reconnection on network change ManagePresenceeClient.java Reliability
TD-022 Payment data in URL query string PaymentWebActivity.java Security
TD-023 Typo in file names (Qyestionaire) Multiple files Code quality
TD-024 No analytics events Throughout codebase Insights
TD-025 No error tracking (Crashlytics not fully configured) Throughout codebase Debugging

Technical Debt Summary

Total Items: 25
Critical: 5 items
High: 10 items
Medium: 10 items

Recommended Approach:
- Focus on Critical items first (security)
- Tackle High items in parallel with new features
- Plan Medium items for long-term refactoring


Incomplete Features Assessment

1. Chat/Messaging (50% Complete)

Current State: Basic text messaging works, but missing key features

What’s Missing:
- ❌ Image/File attachments
- ❌ Voice messages
- ❌ Read receipts
- ❌ Message search
- ❌ Push notifications for messages
- ❌ Message persistence (local database)
- ❌ Message encryption

Business Impact: Medium - Users expect full-featured chat


2. Provider Filters (80% Complete)

Current State: Most filters work, location filter incomplete

What’s Missing:
- ❌ Distance/Location filter
- ❌ Availability filter (next 7 days, etc.)
- ⚠️ Experience years filter (no API support)

Business Impact: Low - Core filtering works


3. Wallet System (75% Complete)

Current State: Basic wallet functionality works

What’s Missing:
- ❌ Wallet-to-wallet transfers
- ❌ Automatic refund processing
- ⚠️ Transaction history filtering
- ❌ Wallet withdrawal

Business Impact: Low - Core wallet functionality works


4. Promo Codes (60% Complete)

Current State: Apply promo code works, but management missing

What’s Missing:
- ❌ View available promo codes list
- ❌ Promo code notifications
- ❌ Promo code history
- ⚠️ Client-side validation (expiration, usage limit)

Business Impact: Low - Core promo functionality works


5. Video Call Features (95% Complete)

Current State: Video calls work, but missing advanced features

What’s Missing:
- ❌ Screen sharing
- ❌ Chat during call
- ⚠️ Network quality metrics display
- ⚠️ Automatic reconnection on network drop
- ❌ Call recording (client-side UI)

Business Impact: Low - Core video calling works well


Incomplete Features Summary

Total Incomplete Features: 5
Business Impact: Medium

Prioritization:
1. Chat/Messaging (High)
2. Video Call Enhancements (Medium)
3. Wallet System (Low)
4. Provider Filters (Low)
5. Promo Codes (Low)


Feature Prioritization

Must Have (Core Features - Already Implemented ✅)

  • Authentication & Registration
  • Provider Search & Booking
  • Appointment Scheduling
  • Payment Processing
  • WebRTC Video Calls
  • Push Notifications
  • User Profile Management

Should Have (Enhance UX - Partially Implemented ⚠️)

  • Full-featured Chat (50% complete)
  • Wallet System enhancements (75% complete)
  • Provider Filters completion (80% complete)
  • Video call quality monitoring
  • Diary insights & analytics
  • Homework offline access

Could Have (Nice to Have - Not Started ❌)

  • Screen sharing during calls
  • Group video calls
  • Appointment reschedule (currently cancel + rebook)
  • Favorite providers
  • Provider recommendations (AI)
  • Mental health insights dashboard
  • Integration with wearables (fitness trackers)

Won’t Have (Out of Scope)

  • Provider-side features (separate app)
  • Admin panel (web-based)
  • Billing & invoicing (backend)

Recommendations

Immediate Actions (Do Now)

  1. Update WebRTC library (1.0.32006) - CRITICAL
  2. Update Firebase Messaging (23.4.0) - CRITICAL
  3. Implement EncryptedSharedPreferences - Security
  4. Move hardcoded credentials to secure storage
  5. Add SSL certificate pinning

Business Impact: Critical (Security & Stability)


Short-term Actions (Do Next)

  1. Refactor god objects (Utils.java, CollaborationMain.java)
  2. Migrate to Retrofit from AndroidNetworking
  3. Complete Chat/Messaging feature
  4. Implement pagination in provider list
  5. Add unit tests (at least 30% coverage)
  6. Remove legacy CareProvider code from Client app

Business Impact: High (Maintainability & UX)


Long-term Actions (Plan)

  1. Migrate to MVVM architecture
  2. Implement Room database for offline support
  3. Add dependency injection (Hilt)
  4. Complete incomplete features (Wallet, Filters, Promo Codes)
  5. Migrate to Kotlin (gradual migration)
  6. Implement CI/CD pipeline
  7. Add comprehensive testing (Unit + UI + Integration)

Business Impact: Medium (Long-term sustainability)


Conclusion

The Android client application is functionally complete for its core use case (telemedicine video consultations) with 82% of features fully implemented. However, it carries significant technical debt and security vulnerabilities that require immediate attention.

Key Strengths:
- ✅ Core features (auth, booking, video calls) work well
- ✅ Comprehensive feature set
- ✅ Bilingual support (EN/AR)

Key Weaknesses:
- ⚠️ Outdated dependencies (security risk)
- ⚠️ Poor code structure (god objects, large classes)
- ⚠️ Security vulnerabilities (hardcoded credentials, plain text passwords)
- ⚠️ Limited testability (no unit tests)

Recommended Approach:
- Phase 1: Security fixes
- Phase 2: Code quality & UX
- Phase 3: Architecture modernization


Document Version: 1.0
Last Updated: November 6, 2025
Next Review: After Phase 1 completion