QueueCare is an Android healthcare queue and appointment management app built with Java, Firebase, and Material Design. It supports two user roles:
- Patients can book appointments, track upcoming visits, chat with medical staff, and view announcements.
- Medical workers can monitor queue volume, scan appointment QR codes, and mark appointments as processed.
- Dual-role experience (patient and medical worker) based on role data in Firebase.
- Authentication with email/password and Google Sign-In.
- Appointment booking with date/time validation and service selection by weekday.
- Appointment list tabs for upcoming and past states.
- QR code generation for patient appointment records.
- QR scanning workflow for medical workers to verify and complete appointments.
- In-app one-to-one chat backed by Firebase Realtime Database.
- Announcement feed with summary and detail screens.
- Profile management including personal details and profile image updates.
- Loading skeletons (Shimmer) in key list-based screens.
- Language: Java 11
- Platform: Android (minSdk 24, targetSdk 35, compileSdk 36)
- Build: Gradle Kotlin DSL + Android Gradle Plugin 9.0.1
- UI: AndroidX + Material Components
- Backend: Firebase
- Authentication
- Realtime Database
- Storage
- Analytics
- Auth integrations: Google Play Services Auth
- QR/Barcode: ZXing core + JourneyApps embedded scanner
- Media and UI utilities:
- Glide
- CanHub Android Image Cropper
- Facebook Shimmer
- Firebase BoM:
34.12.0 com.google.android.gms:play-services-auth:21.3.0com.github.CanHub:Android-Image-Cropper:4.5.0com.google.zxing:core:3.5.4com.journeyapps:zxing-android-embedded:4.3.0com.github.bumptech.glide:glide:4.16.0com.facebook.shimmer:shimmer:0.5.0
- Android Studio (latest stable recommended)
- JDK 11
- Android SDK for API 35/36
- A Firebase project configured for Android
- Clone the repository.
- Open the project in Android Studio.
- Ensure
local.propertiespoints to your Android SDK path. - Place a valid
google-services.jsoninapp/. - Sync Gradle.
- Build and run on an emulator or physical device.
On Windows:
gradlew.bat assembleDebugOn macOS/Linux:
./gradlew assembleDebug- Launch the app.
- Sign in with email/password or Google.
- If you are a patient:
- Use the action button to create a booking.
- View appointments and open an appointment item to display its QR code.
- Use Messages to contact medical staff.
- If you are a medical worker:
- Open dashboard queue stats.
- Use the action button to scan a patient QR and mark an appointment as done.
- Appointment booking is limited to weekdays and clinic hours (8:00 AM to 5:00 PM).
- Service options are determined by selected weekday.
- Some screens still include seed/demo behavior (for example, static entries in history view).
QueueCare/
app/
src/main/
AndroidManifest.xml
java/com/stratex/queuecare/
auth/ # Login, signup, profile completion, forgot password
adapters/ # RecyclerView adapters
models/ # User, Appointment, Announcement
*.java # Activities, fragments, chat, booking, scanner
res/ # Layouts, drawables, values, animations
google-services.json
build.gradle.kts
gradle/libs.versions.toml
build.gradle.kts
settings.gradle.kts
- Firebase:
- Google Services plugin is enabled in the app module.
- Firebase BoM and services are declared in app dependencies.
- Roles:
- User role values are stored in Realtime Database (for example
user,medical_worker). - Dashboard behavior and primary action button change according to role.
- User role values are stored in Realtime Database (for example
- Gradle settings:
- AndroidX enabled
- Non-transitive R class enabled
- Unit test scaffold exists (
ExampleUnitTest). - Instrumentation test scaffold exists (
ExampleInstrumentedTest). - Additional functional and integration tests should be added for production readiness.
- Fork the repository.
- Create a feature branch.
- Make focused, testable changes.
- Run unit/instrumentation tests.
- Open a pull request with a clear description of behavior changes.
Recommended contribution practices:
- Follow existing Java and Android resource naming conventions.
- Keep UI behavior role-aware (patient vs medical worker).
- Validate Firebase read/write paths for any new feature.
No license file is currently included in the repository.
Until a license is added, treat the project as all rights reserved by default.