BookingCore Flutter App

Complete Travel & Booking Mobile Application for Android & iOS — Built with Flutter & BookingCore Backend

Version 1.0.0 • Flutter 3.29 • Dart 3.7

Overview

BookingCore Flutter App is a full-featured, cross-platform travel and booking mobile application built with Flutter 3.29. It serves as the official mobile companion for BookingCore (Ultimate Booking System) Laravel backend, connecting seamlessly via RESTful APIs to provide a native mobile experience on both Android and iOS.

The app supports 7 service types — Hotel, Tour, Space, Car, Boat, Event, and Flight — with complete booking workflows including availability checking, cart management, checkout, and payment processing. It features Material 3 design, 17 languages with full RTL support, multi-currency with exchange rate conversion, Google Maps integration, and a clean Service-Provider-Screen architecture.

Note: This Flutter app requires a running BookingCore (v4.0.1+) backend instance with the REST API enabled.

Requirements

ToolVersionNotes
Flutter SDK3.29+Install Flutter
Dart SDK3.7+Included with Flutter
Android StudioLatestFor Android builds and emulator
Xcode15+For iOS builds (macOS only)
BookingCorev4.0.1+Backend with REST API enabled

Platform Requirements

PlatformMinimum Version
AndroidAPI 21 (Android 5.0 Lollipop)
iOSiOS 12.0+
Important: macOS is required for iOS builds. You can develop and build for Android on Windows, macOS, or Linux.

Installation

1

Extract the Package

Extract the downloaded ZIP file from CodeCanyon to your preferred location on your computer.

2

Install Flutter Dependencies

Open your terminal, navigate to the project folder, and run:

cd bookingcore_app
flutter pub get
3

Generate App Icons & Splash Screen

Run these commands to generate the native app icon and splash screen from your logo:

dart run flutter_launcher_icons
dart run flutter_native_splash:create
4

Verify Your Setup

Make sure all required tools are properly installed:

flutter doctor

Ensure all items show a green checkmark.

5

Run the App

Connect a device or start an emulator, then run:

flutter run

Configuration

1. API Configuration (Required)

Open lib/core/constants/api_constants.dart and update the following values:

abstract class ApiConstants {
  // Change this to your BookingCore backend URL
  static const String baseUrl = 'https://your-domain.com';
}
Critical: The baseUrl must point to your live BookingCore installation (e.g., https://example.com). The app connects to the /api/ endpoints automatically.

2. Google Maps API Key

To enable the map on service detail pages, add your Google Maps API key:

PlatformFileProperty
Androidandroid/app/src/main/AndroidManifest.xmlcom.google.android.geo.API_KEY
iOSios/Runner/AppDelegate.swiftGMSServices.provideAPIKey

3. App Name

PlatformFileProperty
Androidandroid/app/src/main/AndroidManifest.xmlandroid:label
iOSios/Runner/Info.plistCFBundleDisplayName & CFBundleName

4. Package Name / Bundle ID

PlatformFileProperty
Androidandroid/app/build.gradle.ktsapplicationId & namespace
iOSXcode project settingsPRODUCT_BUNDLE_IDENTIFIER

App Icon & Splash Screen

Custom App Icon

Replace assets/images/logo.png with your own logo image (recommended: 1024 x 1024 PNG), then regenerate:

dart run flutter_launcher_icons

Custom Splash Screen

The splash screen also uses assets/images/logo.png. Customize colors in pubspec.yaml under flutter_native_splash:, then regenerate:

dart run flutter_native_splash:create

Build & Run

Development

# Run on connected device or emulator
flutter run

# Run in release mode
flutter run --release

Android Production Build

# AAB for Google Play Store (recommended)
flutter build appbundle --release

# APK for direct distribution
flutter build apk --release

Output location: build/app/outputs/bundle/release/app-release.aab

Signing: For release builds, configure your keystore in android/app/build.gradle.kts. See the Flutter Android deployment guide.

iOS Production Build

flutter build ios --release

Then open ios/Runner.xcworkspace in Xcode to archive and submit to App Store Connect.

Project Structure

lib/
├── main.dart                  # App entry point
├── core/
│   ├── constants/             # API URLs, colors, spacing
│   ├── router/                # GoRouter navigation config
│   ├── theme/                 # Material 3 light/dark themes
│   └── utils/                 # Logger utility
├── models/                    # 23 data models
│   ├── booking.dart           # Booking with meta, gateway parsing
│   ├── hotel.dart / tour.dart # Service-specific models
│   ├── service_item.dart      # Unified service item
│   ├── app_config.dart        # Config, currencies, languages
│   └── ...
├── providers/                 # 14 state providers (ChangeNotifier)
│   ├── booking_provider.dart  # Booking flow, history, checkout
│   ├── config_provider.dart   # Global config, currency conversion
│   ├── detail_provider.dart   # Service detail & availability
│   ├── search_provider.dart   # Search with filters
│   └── ...
├── services/                  # 11 API service classes (Dio)
│   ├── api_service.dart       # Base HTTP client
│   ├── booking_service.dart   # Booking endpoints
│   ├── search_service.dart    # Search & filter endpoints
│   └── ...
├── screens/                   # 25 UI screens
│   ├── auth/                  # Login, Register, Forgot/Reset Password
│   ├── booking/               # Detail, History, Checkout, Payment, Confirmation
│   ├── detail/                # Service Detail (all 7 types)
│   ├── home/                  # Dashboard with featured services
│   ├── locations/             # Location list & detail with services
│   ├── news/                  # News list & detail
│   ├── onboarding/            # First-launch onboarding
│   ├── profile/               # Profile, Edit, Change Password
│   ├── search/                # Search with filters
│   ├── settings/              # Settings, Language, Currency
│   ├── splash/                # Splash screen
│   └── wishlist/              # Wishlist / Favorites
└── widgets/                   # Reusable UI components
    ├── cards/                 # Service cards (carousel, grid, list)
    ├── common/                # Shared widgets
    └── home/                  # Home screen sections

Architecture

The app uses a clean Service → Provider → Screen architecture:

LayerResponsibility
ServicesHandle HTTP requests via Dio — one service per API resource
ProvidersManage state with ChangeNotifier — one provider per domain
ScreensUI layer consuming providers — organized by feature
ModelsData classes with fromJson factory constructors
WidgetsReusable UI components shared across screens

Service Types

The app supports all 7 bookable service types from BookingCore:

TypeBooking FieldsFeatures
HotelCheck-in/out dates, rooms, guestsRoom selection, availability calendar
TourStart date, person types (adult/child)Included/excluded items, itinerary
SpaceCheck-in/out dates, guestsAvailability check, amenities
CarPickup/dropoff dates, quantityVehicle specs, rental duration
BoatStart/end dates, guestsBoat details, capacity
EventEvent date, ticket typeSeat selection, ticket categories
FlightDeparture date, seat typeFlight details, seat classes

Features

7 Service Types
17 Languages + RTL
Material 3 Design
Login & Register
Forgot/Reset Password
Real-Time Availability
Add to Cart & Checkout
In-App Payment Gateways
Booking History
Booking Status Timeline
Cancel Booking
Multi-Currency
Exchange Rate Conversion
Google Maps
Image Gallery & Zoom
Advanced Search Filters
Date & Guest Filters
Location Browsing
Reviews & Ratings
Wishlist / Favorites
News / Blog
User Profile
Guest Checkout
Onboarding Flow
Connectivity Monitoring
Native Splash Screen
Pull-to-Refresh
Infinite Scroll
Shimmer Loading
Carousel & Swiper
Config-Driven Settings
Currency Switcher
Native Invoice Screen
Native Payment Success/Decline
Coupon / Promo Code Support
Extra Services Pricing
Enquiry Form
Google Social Login
Wallet Balance Display
FCM Push Notifications
Price Breakdown (Fees, Discounts)

Localization

The app ships with 17 languages. Translation files are located in assets/translations/:

CodeLanguageCodeLanguage
enEnglisharArabic
frFrenchesSpanish
deGermanpt_BRPortuguese (Brazil)
itItalianruRussian
jaJapanesetrTurkish
viVietnamesefaPersian
nlDutchcsCzech
heHebrewidIndonesian
azAzerbaijani

Adding a New Language

1

Create a new JSON file in assets/translations/ (e.g., ko.json for Korean)

2

Copy all keys from en.json and translate the values

3

Add the locale to supportedLocales in lib/main.dart:

Locale('ko'),

API Reference

All API endpoints are defined in lib/core/constants/api_constants.dart. The app communicates with the following BookingCore REST API endpoints:

CategoryEndpoints
AuthenticationLogin, Register, Logout, Forgot/Reset Password, Social Login (Google)
ConfigurationConfigs (booking types, currencies, languages, countries)
ServicesSearch, Detail, Availability for Hotel/Tour/Space/Car/Boat/Event/Flight
BookingAdd to Cart, Checkout, Detail (enriched), Check Status, Cancel, Apply/Remove Coupon
PaymentGateways, Confirm, Cancel, In-App Status Polling
UserProfile (with wallet balance), Update, Booking History, Wishlist, Invoice
LocationsList, Detail, Search Services by Location
ReviewsList, Create Review
NewsList, Detail, Categories

Backend Modifications (BookingCore)

To fully support the mobile app's features, several modifications were made to the BookingCore backend. All changes are minimal, non-breaking additions to the existing API module. Below is a complete list of modified files and the features they enable.

Important: These modifications are included in the package. If you update BookingCore in the future, you will need to re-apply these changes. All edits are confined to the modules/Api/ and modules/Hotel/ directories.

1. BookingController.php

modules/Api/Controllers/BookingController.php

MethodChangePurpose
detail() Allow draft booking access for authenticated owner; return enriched service data with image URL via get_file_url(); include extra_price, buyer_fees_detail, adults, and children from booking meta Native invoice screen, checkout summary with service image, and guest count display
checkStatusCheckout() Rewritten to return status, is_paid, code, total, currency, gateway, gateway_name, and service_title In-app payment status polling — the app polls this endpoint every 5 seconds during payment to detect success/failure and navigate to native result screens

2. AuthController.php

modules/Api/Controllers/AuthController.php

MethodChangePurpose
socialLogin() New method — accepts provider (google/facebook/apple), token, and device_name; validates the OAuth token via Laravel Socialite; creates or links the user; issues a Sanctum API token Google Sign-In from the Flutter app — the app sends the Google ID token and receives a Sanctum bearer token

3. UserController.php

modules/Api/Controllers/UserController.php

MethodChangePurpose
bookingInvoice() New method — returns booking detail, service info (with image URL), extra prices, buyer fees, and gateway data for a specific booking code; owner-only access Native in-app invoice screen with full price breakdown

4. API Routes

modules/Api/Routes/api.php

RouteMethodPurpose
POST /api/booking/{code}/apply-couponPOSTApply a coupon/promo code to a booking
POST /api/booking/{code}/remove-couponPOSTRemove an applied coupon from a booking
POST /api/auth/social-loginPOSTOAuth social login (Google, Facebook, Apple)

5. Hotel Model

modules/Hotel/Models/Hotel.php

MethodChangePurpose
dataForApi() Added rooms array to the single-detail API response — each room includes id, title, price, beds, size, adults, children, number, and image (URL via get_file_url()) Hotel detail screen now shows room cards with base prices immediately, before the user checks availability
getRoomsAvailability() Changed price fallback from $room->tmp_price ?? 0 to $room->tmp_price ?? $room->price ?? 0 Fixes room prices showing $0 on initial load when date-specific pricing hasn't been computed yet

Summary of All Modified Backend Files

modules/Api/Controllers/
    BookingController.php    — detail(), checkStatusCheckout()
    AuthController.php       — socialLogin() [new]
    UserController.php       — bookingInvoice() [new]

modules/Api/Routes/
    api.php                  — 3 new routes (coupon, social login)

modules/Hotel/Models/
    Hotel.php                — dataForApi(), getRoomsAvailability()

Customization

Theme Colors

Edit lib/core/constants/app_colors.dart:

abstract class AppColors {
  static const Color primary = Color(0xFF1565C0);     // Main brand color
  static const Color primaryLight = Color(0xFF5E92F3); // Lighter variant
  static const Color background = Color(0xFFF5F7FA);   // Background
  static const Color surface = Color(0xFFFFFFFF);       // Card/surface

  // Service type colors
  static const Color hotelColor = Color(0xFF1565C0);
  static const Color tourColor = Color(0xFF2E7D32);
  static const Color spaceColor = Color(0xFF6A1B9A);
  static const Color carColor = Color(0xFFE65100);
  static const Color boatColor = Color(0xFF0277BD);
  static const Color eventColor = Color(0xFFC62828);
  static const Color flightColor = Color(0xFF00838F);
}

Spacing & Sizing

Edit lib/core/constants/app_spacing.dart to adjust spacing values, border radii, and button heights.

Full Theme

Edit lib/core/theme/app_theme.dart for complete Material 3 theme customization including AppBar, Cards, Inputs, Buttons, Navigation Bar, and more.

Dependencies

PackagePurpose
providerState management
dioHTTP client for API calls
go_routerNavigation and routing
easy_localizationMulti-language support
flutter_secure_storageSecure token persistence
cached_network_imageImage caching & loading
google_maps_flutterInteractive maps on service detail
webview_flutterPayment gateway integration
carousel_sliderImage carousel on home & detail
flutter_rating_barStar rating display & input
shimmerSkeleton loading effects
flutter_htmlHTML content rendering
image_pickerCamera and gallery access
share_plusShare content to other apps
url_launcherOpen URLs, phone, email
intl_phone_fieldPhone input with country picker
connectivity_plusNetwork connectivity monitoring
photo_viewFull-screen image zoom gallery
lottieLottie animations
smooth_page_indicatorPage indicator for onboarding
flutter_card_swiperCard swipe animations
package_info_plusApp version information
font_awesome_flutterSocial media icons
intlDate/number formatting
google_sign_inGoogle OAuth social login
firebase_coreFirebase initialization
firebase_messagingFCM push notifications

Troubleshooting

API Connection Failed

  • Verify baseUrl in api_constants.dart is correct and reachable
  • Ensure your BookingCore backend has the API module enabled
  • Check that CORS is configured for mobile clients
  • For local development, ensure the device/emulator is on the same network as the server

Google Maps Not Showing

  • Ensure you have added a valid Google Maps API key in both Android and iOS configurations
  • Enable Maps SDK for Android and iOS in the Google Cloud Console
  • Check that billing is enabled on your Google Cloud project

Images Not Loading

  • Ensure your server's image URLs are publicly accessible
  • If using a local server, the device must be on the same network
  • Check that the URL scheme is https:// for production

Clean Build

flutter clean
flutter pub get
dart run flutter_launcher_icons
dart run flutter_native_splash:create
flutter run

iOS Specific

  • Run cd ios && pod install if dependencies fail
  • Ensure Xcode is updated to the latest version
  • Set iOS deployment target to 12.0 in Xcode
  • Add NSLocationWhenInUseUsageDescription to Info.plist for maps

Android Specific

  • Ensure minSdk is 21 or higher
  • Update Gradle wrapper if prompted
  • For release builds, configure signing keys in build.gradle.kts

Changelog

v1.0.0 — Initial Release

  • Full booking support for 7 service types: Hotel, Tour, Space, Car, Boat, Event, Flight
  • Complete booking flow: search, detail, availability, cart, checkout, payment
  • In-app payment processing — all payment gateways load inside the app (not in external browser)
  • Native payment result screens — dedicated Success and Declined screens with booking info
  • Payment status polling — automatic backend polling during payment for robust detection
  • Native invoice screen — full price breakdown with extra prices, fees, discounts, and totals
  • Coupon / promo code — apply and remove coupons during checkout
  • Extra services pricing — toggle extra services on service detail with dynamic price updates
  • Enquiry form — send enquiries from the service detail page
  • Google social login — sign in with Google via OAuth
  • Wallet balance — display user wallet balance on profile screen
  • FCM push notifications — Firebase Cloud Messaging integration with enable/disable toggle
  • Hotel room enhancements — base prices on initial load, guest count selectors, room images
  • Backend API enhancements — enriched booking detail, check-status, social login, invoice, coupon routes
  • Booking history with status timeline and cancellation
  • Multi-currency with exchange rate conversion from API config
  • Google Maps integration on service detail pages
  • Location browsing with service listings
  • Reviews and ratings system
  • News / blog section
  • Wishlist / favorites management
  • User authentication with profile management
  • 17 languages with full RTL support
  • Material 3 design with customizable theme
  • Native splash screen and adaptive app icons
  • Onboarding flow, connectivity monitoring, shimmer loading

Support

If you need help with this product, please use one of the following methods:

  • CodeCanyon Comments: Leave a comment on the item page
  • Email: Contact us at the email provided on our Envato profile
Tip: Before reaching out, please check the Troubleshooting section above. Most common issues are covered there.

© 2026 BookingCore Flutter App. All rights reserved.
This item is sold exclusively on CodeCanyon. Unauthorized distribution is prohibited.