A modern, full-featured Doctor Appointment Booking App built with Flutter. This project enables users to browse doctors by specialty, view doctor profiles, book appointments, and manage their medical interactions efficiently. It combines a sleek UI with essential functionalities that are ideal for telemedicine startups, hospitals, or independent healthcare professionals.
The project demonstrates best practices in Flutter development, including modular architecture, state management with BLoC and Cubit, REST API integration with Dio and Retrofit, dependency injection using GetIt, and support for localization and theming. With persistent storage, real-time updates, and rich UI elements such as shimmer effects and SVG graphics, the app delivers a seamless user experience across Android, iOS, and web platforms.
| Splash | On Boarding | Login | Booking |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Home | Doctor List | Profile | Booking |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- Book appointments with doctors
- User authentication and secure storage
- Beautiful, responsive UI
- Localization (multi-language support)
- Persistent storage and caching
- Splash screens, shimmer effects, and SVG support
- Clean code with BLoC/Cubit state management
- REST API integration using Dio & Retrofit
- Dependency injection with GetIt
- Ready for Android, iOS, Web, macOS, Linux
- Flutter (Dart 3.8+)
- State Management: flutter_bloc, freezed
- Networking: dio, retrofit, pretty_dio_logger
- Dependency Injection: get_it
- Localization: intl, easy_localization
- Persistence: shared_preferences, flutter_secure_storage, cached_network_image
- UI: shimmer, shimmer_animation, flutter_svg, flutter_screenutil
- Firebase: firebase_core
- Flutter SDK 3.8.1 or higher
- Dart SDK
- Android Studio/Xcode/VS Code
- (Optional) Firebase project setup for cloud features
-
Clone the repository:
git clone https://github.com/TareqAlKushari/Flutter-Doctor-Appointment-App.git cd Flutter-Doctor-Appointment-App -
Install dependencies:
flutter pub get
-
Run code generation (if needed):
flutter pub run build_runner build --delete-conflicting-outputs
-
Configure assets:
- Place your images in
assets/images/ - Place your SVGs in
assets/svgs/ - Update
pubspec.yamlif you add other asset folders
- Place your images in
-
Run the app:
flutter run
lib/main.dartβ App entry pointlib/doc_app.dartβ Main app widget and routinglib/core/β Core utilities, themes, shared componentslib/features/β Feature modules (authentication, booking, profile, etc.)assets/β Images and SVGs- Platform folders:
android/,ios/,web/,macos/,linux/
- Localization: Edit assets under the localization section in
pubspec.yaml. - Splash Screen: Edit
flutter_native_splash.yamland runflutter pub run flutter_native_splash:create.
- Test:
flutter test - Lint:
flutter analyze
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
This project is open-source and available under the MIT License.
Tareq Al-Kushari GitHub β’ LinkedIn β’ Facebook β’ Instagram β’ X β’ Email β’ Portfolio Website
If you found this helpful, don't forget to star the repo and share it with others! β







