🔧 Technical Summary
This document provides a general overview of the CareDeal application based
on code analysis.
CareDeal is a mobile application that connects patients needing
home nursing care with available healthcare professionals.
Target market: Belgium (evidenced by default +32 and INAMI number)
Main use case:
1. A patient (or their representative) creates a care request
2. Nurses in the area see the request
3. A nurse contacts the patient
4. Care is organized between the two parties
Three user types exist in the application:
1. Patient
- Creates care requests
- Account via simple phone verification
- Can track their requests
2. CAREGIVER (Nurse)
- Views available requests in their area
- Contacts patients
- Requires INAMI number and identity document
- Account pending validation (24h to 48h by care-support team)
3. Organization
- Represents a care company
- Can group multiple caregivers
- (Extended functionality)
Source: lib/core/domain/entities/user_type.dart
PATIENT (simple):
1. Select "Patient" role
2. Enter phone number
3. Confirm SMS code
4. Account active -> can create requests
CAREGIVER (complete):
1. Select "Caregiver" role
2. Choose type (Individual/Organization)
3. Enter INAMI number (11 digits)
4. Create profile (name, email, languages)
5. Define activity area (address + 3km radius)
6. Upload ID documents (front + back)
7. Verify phone number
8. Account created in "pendingVerification" status
9. Wait for care-support team validation (24h to 48h)
A care request contains:
- Care types: bathing, wounds, injections, bandages, insulin, infusion
- Daily frequency
- Patient address (geolocated)
- Patient information (name, date of birth, languages)
- Contact person (patient/family/friend/professional)
- Contact phone numbers
Possible statuses:
- In progress (active, not yet arranged)
- Arranged (caregiver found)
- Cancelled (cancelled by patient)
- Completed (care finished)
Two possible numbers per request:
- phoneNumber: primary contact (person making the request)
- patientPhoneNumber: patient's number if different (optional)
Handled scenarios:
- Patient for themselves -> their account number
- Family/Friend/Professional -> their number + patient's number (optional)
- Nurse creating request -> their caregiver number + patient's number
The status is determined by several fields:
- active: boolean (active or terminated)
- arrangedForPatient: boolean (organized for patient)
- arrangedForCareGiver: Map (which caregivers have arranged)
Only one status exists in the application: "arranged".
Who can mark as arranged:
- Patient: can mark their request as arranged
- Nurse: can mark that they have arranged a request
Current Test Period
The application is currently FREE during the test period.
All features are accessible at no cost.
After Test Period
An annual subscription will be offered.
Pricing details will be communicated before the end of the test period.
Free plan includes:
- 3 km activity radius
- Basic features
Framework: Flutter (Dart)
Architecture: Clean Architecture (domain/data/presentation)
State management: Riverpod with code generation
Navigation: GoRouter
Backend: Firebase (Auth, Firestore, Storage, Functions, Cloud Messaging)
Main modules:
- auth: authentication
- user: user management
- caregiver: caregiver features
- carerequest: care request management
- home: main screens
- onboarding: first use
Firebase Firestore collections:
- users: user accounts
- caregivers: caregiver profiles
- care_requests: care requests
Firebase Storage:
- ID documents (caregivers)
- Profile photos
- Phone authentication via Firebase Auth (OTP SMS)
- ID documents verified by the care-support team
- INAMI number required for caregivers
- Firestore security rules (role-based access)
- Push notifications via Firebase Cloud Messaging
- FCM tokens managed by user