Skip to content

massil30/AppointMed

Repository files navigation

πŸ₯ AppointMed

A comprehensive Flutter application for managing medical appointments with doctors.

AppointMed allows users to browse doctors, schedule appointments, manage favorites, and handle payments seamlessly across multiple platforms with responsive design.

πŸ“± Screenshots

Clone Ui https://www.figma.com/design/2l2BSiGAfFSttceZ85OahL/Medical-Health-Mobile-App-Dermatology-App-Ui-Kit-Doctor-Mobile-App--Community-?node-id=21-455&t=nDSd7j3qa53S9lb1-0 Coming soon - Screenshots of the app in action

Splash Screen

SplashScreen LoginPage HomePage Chat Appointment PaymentMethod PaymentMethod Profile Schedule

✨ Features

πŸ” Authentication

  • Login/Signup - Secure user authentication
  • Social Login - Google/Facebook integration
  • Password Recovery - Forgot password functionality

πŸ‘¨β€βš•οΈ Doctor Management

  • Browse Doctors - View available doctors by specialty
  • Doctor Details - Detailed doctor profiles with ratings and reviews
  • Search & Filter - Find doctors by name, specialty, or location
  • Favorite Doctors - Save preferred doctors for quick access

πŸ“… Appointment System

  • Schedule Appointments - Book appointments with available doctors
  • Appointment History - View past, upcoming, and cancelled appointments
  • Appointment Management - Cancel or reschedule appointments
  • Calendar Integration - Visual appointment scheduling

πŸ’¬ Communication

  • In-App Chat - Direct messaging with doctors
  • Chat History - Persistent conversation storage
  • Notification System - Real-time appointment and chat notifications

πŸ’³ Payment Integration

  • Multiple Payment Methods - Credit cards, digital wallets
  • Secure Payment Processing - Encrypted payment handling
  • Payment History - Track all payment transactions
  • Receipt Generation - Digital payment receipts

πŸ‘€ User Profile

  • Profile Management - Edit personal information
  • Settings - App preferences and configurations
  • Help Center - Support and FAQ section
  • Privacy Policy - Data protection information

πŸŒ™ Advanced Features

  • Dark Mode - Toggle between light and dark themes
  • Multi-language Support - English and French localization
  • Responsive Design - Optimized for phones, tablets, and desktops
  • Offline Support - Basic functionality without internet
  • Device Preview - Test on different device sizes during development

πŸ—οΈ Technical Architecture

State Management

  • BLoC Pattern - Business Logic Component for state management
  • Cubit - Lightweight state management for simple use cases
  • Hydrated BLoC - Persistent state storage

Navigation

  • Go Router - Declarative routing with type-safe navigation
  • Named Routes - Organized route management

Responsive Design

  • ScreenUtil - Responsive sizing across different screen sizes
  • Responsive Framework - Adaptive layouts for various devices
  • Media Queries - Dynamic UI adjustments based on screen size

πŸ“¦ Dependencies

Core Dependencies

# State Management
flutter_bloc: ^8.1.6
hydrated_bloc: ^9.1.5
equatable: ^2.0.7

# Navigation
go_router: ^16.2.4

# Responsive Design
flutter_screenutil: ^5.9.3
responsive_framework: ^1.5.1



# UI Components
cached_network_image: ^3.4.1
google_fonts: ^6.3.2

# Utilities
connectivity_plus: ^7.0.0
fluttertoast: ^9.0.0

# Development
device_preview: ^1.3.1

Feature-Specific Dependencies

# Chat System
chat_package: ^2.0.1

# Payment Processing
u_credit_card: ^1.4.0

# Ratings & Reviews
flutter_rating: ^2.0.2

πŸš€ Getting Started

Prerequisites

  • Flutter SDK (3.8.1 or higher)
  • Dart SDK
  • Android Studio / VS Code
  • Git

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/appointmed.git
    cd appointmed
  2. Install dependencies

    flutter pub get
  3. Generate native splash screen

    flutter pub run flutter_native_splash:create
  4. Run the app

    flutter run

Development Setup

  1. Enable device preview (for development)

    // In main.dart
    DevicePreview(enabled: true) // Set to false in production
  2. Configure design size

    // In main.dart - ScreenUtilInit
    designSize: const Size(360, 690)

πŸ“ Project Structure

lib/
β”œβ”€β”€ πŸ“ components/              # Reusable UI components
β”‚   β”œβ”€β”€ appbar.dart            # Custom app bar
β”‚   β”œβ”€β”€ buttons.dart           # Button variants
β”‚   β”œβ”€β”€ dialogs.dart           # Modal dialogs
β”‚   β”œβ”€β”€ searchfield.dart       # Search input field
β”‚   β”œβ”€β”€ textfield.dart         # Custom text fields
β”‚   └── toast.dart             # Toast notifications
β”‚
β”œβ”€β”€ πŸ“ config/                 # App configuration
β”‚   β”œβ”€β”€ connectivity.dart      # Network connectivity
β”‚   β”œβ”€β”€ dependencies.dart      # Dependency injection
β”‚   β”œβ”€β”€ theme.dart             # App theming
β”‚   β”œβ”€β”€ urls.dart              # API endpoints
β”‚   β”œβ”€β”€ πŸ“ language/           # Internationalization
β”‚   β”‚   β”œβ”€β”€ language_cubit.dart
β”‚   β”‚   β”œβ”€β”€ translation.dart
β”‚   β”‚   └── shared_pref_language.dart
β”‚   └── πŸ“ routes/             # Navigation routes
β”‚       β”œβ”€β”€ routes.dart
β”‚       └── routesName.dart
β”‚
β”œβ”€β”€ πŸ“ features/               # Feature-based modules
β”‚   β”œβ”€β”€ πŸ“ auth/               # Authentication
β”‚   β”‚   β”œβ”€β”€ login.dart
β”‚   β”‚   β”œβ”€β”€ signup.dart
β”‚   β”‚   └── auth_widget.dart
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ appointment/        # Appointment management
β”‚   β”‚   β”œβ”€β”€ appointement.dart
β”‚   β”‚   β”œβ”€β”€ appointment_cards.dart
β”‚   β”‚   β”œβ”€β”€ cancelappointement.dart
β”‚   β”‚   β”œβ”€β”€ reviewappoi.dart
β”‚   β”‚   β”œβ”€β”€ data_appoin.dart
β”‚   β”‚   └── πŸ“ appoin_widget/
β”‚   β”‚       └── tab_button.dart
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ doctors/            # Doctor management
β”‚   β”‚   β”œβ”€β”€ doctors.dart
β”‚   β”‚   β”œβ”€β”€ doctor_details_page.dart
β”‚   β”‚   └── doctor_component.dart
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ favorite/           # Favorite doctors
β”‚   β”‚   β”œβ”€β”€ favorites_page.dart
β”‚   β”‚   β”œβ”€β”€ favorit_widget.dart
β”‚   β”‚   β”œβ”€β”€ doctor_model.dart
β”‚   β”‚   └── πŸ“ bloc/
β”‚   β”‚       β”œβ”€β”€ favorite_bloc.dart
β”‚   β”‚       β”œβ”€β”€ favorit_event.dart
β”‚   β”‚       └── favorit_state.dart
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ chat/               # Messaging system
β”‚   β”‚   β”œβ”€β”€ chatPage.dart
β”‚   β”‚   └── chat_people.dart
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ notification/       # Push notifications
β”‚   β”‚   β”œβ”€β”€ notification.dart
β”‚   β”‚   └── notification_widget.dart
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ payment/            # Payment processing
β”‚   β”‚   β”œβ”€β”€ paymentCard.dart
β”‚   β”‚   β”œβ”€β”€ paymentMethode.dart
β”‚   β”‚   β”œβ”€β”€ reviewPayment.dart
β”‚   β”‚   β”œβ”€β”€ sucessPayment.dart
β”‚   β”‚   └── πŸ“ review_card/
β”‚   β”‚       β”œβ”€β”€ review_C.dart
β”‚   β”‚       └── review_widget.dart
β”‚   β”‚
β”‚   β”œβ”€β”€ πŸ“ profile/            # User profile
β”‚   β”‚   β”œβ”€β”€ profile.dart
β”‚   β”‚   β”œβ”€β”€ editprofile.dart
β”‚   β”‚   └── πŸ“ profile_components/
β”‚   β”‚       └── logout.dart
β”‚   β”‚
β”‚   └── πŸ“ schedule/           # Scheduling system
β”‚       β”œβ”€β”€ schedule.dart
β”‚       β”œβ”€β”€ schedule_widget.dart
β”‚       └── shedule_data.dart
β”‚
β”œβ”€β”€ πŸ“ pages/                  # Main application pages
β”‚   β”œβ”€β”€ bottom_navigation_bar.dart
β”‚   β”œβ”€β”€ splashscreen.dart
β”‚   β”œβ”€β”€ welcomPage.dart
β”‚   β”œβ”€β”€ privacy_policy.dart
β”‚   β”œβ”€β”€ πŸ“ homepage/
β”‚   β”‚   β”œβ”€β”€ homepage.dart
β”‚   β”‚   └── πŸ“ home_widget/
β”‚   β”‚       β”œβ”€β”€ daily_list.dart
β”‚   β”‚       β”œβ”€β”€ doctor_card.dart
β”‚   β”‚       β”œβ”€β”€ home_appbar.dart
β”‚   β”‚       └── shcedule_card.dart
β”‚   └── πŸ“ helpCenter/
β”‚       β”œβ”€β”€ help_center.dart
β”‚       └── πŸ“ widgets/
β”‚           └── toggleC.dart
β”‚
β”œβ”€β”€ πŸ“ utils/                  # Utility functions
β”‚   β”œβ”€β”€ common.dart            # Common utilities
β”‚   β”œβ”€β”€ responsivity.dart      # Responsive helpers
β”‚   β”œβ”€β”€ theme_extention.dart   # Theme extensions
β”‚   β”œβ”€β”€ network_image_widget.dart
β”‚   └── nums.dart              # Numeric constants
β”‚
β”œβ”€β”€ main.dart                  # App entry point
└── test.dart                  # Widget tests

🎨 Design System

Color Palette

  • Primary: Blue (#2260FF)
  • Secondary: Light Blue (#E3F2FD)
  • Background: Light (#FBFBFE) / Dark (#121212)
  • Success: Green
  • Error: Red

Typography

  • Font Family: League Spartan (Google Fonts)
  • Responsive Text: Using ScreenUtil (.sp)

Components

  • Custom Buttons: Primary, Secondary, Icon variants
  • Cards: Doctor cards, Appointment cards
  • Dialogs: Loading, Success, Error, Confirmation
  • Forms: Text fields with validation

πŸ”§ Development Guidelines

Code Style

  • Follow Dart/Flutter linting rules
  • Use meaningful variable and function names
  • Implement proper error handling
  • Add comments for complex logic

Responsive Design

  • Use ScreenUtil for sizing (.w, .h, .sp, .r)
  • Test on multiple screen sizes
  • Implement adaptive layouts

State Management

  • Use BLoC for complex state
  • Use Cubit for simple state

πŸ“± Platform Support

  • βœ… Android (API 21+)

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

Made with ❀️ using Flutter

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors