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.
Requirements
| Tool | Version | Notes |
|---|---|---|
| Flutter SDK | 3.29+ | Install Flutter |
| Dart SDK | 3.7+ | Included with Flutter |
| Android Studio | Latest | For Android builds and emulator |
| Xcode | 15+ | For iOS builds (macOS only) |
| BookingCore | v4.0.1+ | Backend with REST API enabled |
Platform Requirements
| Platform | Minimum Version |
|---|---|
| Android | API 21 (Android 5.0 Lollipop) |
| iOS | iOS 12.0+ |
Installation
Extract the Package
Extract the downloaded ZIP file from CodeCanyon to your preferred location on your computer.
Install Flutter Dependencies
Open your terminal, navigate to the project folder, and run:
cd bookingcore_app
flutter pub get
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
Verify Your Setup
Make sure all required tools are properly installed:
flutter doctor
Ensure all items show a green checkmark.
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';
}
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:
| Platform | File | Property |
|---|---|---|
| Android | android/app/src/main/AndroidManifest.xml | com.google.android.geo.API_KEY |
| iOS | ios/Runner/AppDelegate.swift | GMSServices.provideAPIKey |
3. App Name
| Platform | File | Property |
|---|---|---|
| Android | android/app/src/main/AndroidManifest.xml | android:label |
| iOS | ios/Runner/Info.plist | CFBundleDisplayName & CFBundleName |
4. Package Name / Bundle ID
| Platform | File | Property |
|---|---|---|
| Android | android/app/build.gradle.kts | applicationId & namespace |
| iOS | Xcode project settings | PRODUCT_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
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:
| Layer | Responsibility |
|---|---|
| Services | Handle HTTP requests via Dio — one service per API resource |
| Providers | Manage state with ChangeNotifier — one provider per domain |
| Screens | UI layer consuming providers — organized by feature |
| Models | Data classes with fromJson factory constructors |
| Widgets | Reusable UI components shared across screens |
Service Types
The app supports all 7 bookable service types from BookingCore:
| Type | Booking Fields | Features |
|---|---|---|
| Hotel | Check-in/out dates, rooms, guests | Room selection, availability calendar |
| Tour | Start date, person types (adult/child) | Included/excluded items, itinerary |
| Space | Check-in/out dates, guests | Availability check, amenities |
| Car | Pickup/dropoff dates, quantity | Vehicle specs, rental duration |
| Boat | Start/end dates, guests | Boat details, capacity |
| Event | Event date, ticket type | Seat selection, ticket categories |
| Flight | Departure date, seat type | Flight details, seat classes |
Features
Localization
The app ships with 17 languages. Translation files are located in assets/translations/:
| Code | Language | Code | Language |
|---|---|---|---|
| en | English | ar | Arabic |
| fr | French | es | Spanish |
| de | German | pt_BR | Portuguese (Brazil) |
| it | Italian | ru | Russian |
| ja | Japanese | tr | Turkish |
| vi | Vietnamese | fa | Persian |
| nl | Dutch | cs | Czech |
| he | Hebrew | id | Indonesian |
| az | Azerbaijani |
Adding a New Language
Create a new JSON file in assets/translations/ (e.g., ko.json for Korean)
Copy all keys from en.json and translate the values
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:
| Category | Endpoints |
|---|---|
| Authentication | Login, Register, Logout, Forgot/Reset Password, Social Login (Google) |
| Configuration | Configs (booking types, currencies, languages, countries) |
| Services | Search, Detail, Availability for Hotel/Tour/Space/Car/Boat/Event/Flight |
| Booking | Add to Cart, Checkout, Detail (enriched), Check Status, Cancel, Apply/Remove Coupon |
| Payment | Gateways, Confirm, Cancel, In-App Status Polling |
| User | Profile (with wallet balance), Update, Booking History, Wishlist, Invoice |
| Locations | List, Detail, Search Services by Location |
| Reviews | List, Create Review |
| News | List, 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.
modules/Api/ and modules/Hotel/ directories.
1. BookingController.php
modules/Api/Controllers/BookingController.php
| Method | Change | Purpose |
|---|---|---|
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
| Method | Change | Purpose |
|---|---|---|
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
| Method | Change | Purpose |
|---|---|---|
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
| Route | Method | Purpose |
|---|---|---|
POST /api/booking/{code}/apply-coupon | POST | Apply a coupon/promo code to a booking |
POST /api/booking/{code}/remove-coupon | POST | Remove an applied coupon from a booking |
POST /api/auth/social-login | POST | OAuth social login (Google, Facebook, Apple) |
5. Hotel Model
modules/Hotel/Models/Hotel.php
| Method | Change | Purpose |
|---|---|---|
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
| Package | Purpose |
|---|---|
provider | State management |
dio | HTTP client for API calls |
go_router | Navigation and routing |
easy_localization | Multi-language support |
flutter_secure_storage | Secure token persistence |
cached_network_image | Image caching & loading |
google_maps_flutter | Interactive maps on service detail |
webview_flutter | Payment gateway integration |
carousel_slider | Image carousel on home & detail |
flutter_rating_bar | Star rating display & input |
shimmer | Skeleton loading effects |
flutter_html | HTML content rendering |
image_picker | Camera and gallery access |
share_plus | Share content to other apps |
url_launcher | Open URLs, phone, email |
intl_phone_field | Phone input with country picker |
connectivity_plus | Network connectivity monitoring |
photo_view | Full-screen image zoom gallery |
lottie | Lottie animations |
smooth_page_indicator | Page indicator for onboarding |
flutter_card_swiper | Card swipe animations |
package_info_plus | App version information |
font_awesome_flutter | Social media icons |
intl | Date/number formatting |
google_sign_in | Google OAuth social login |
firebase_core | Firebase initialization |
firebase_messaging | FCM push notifications |
Troubleshooting
API Connection Failed
- Verify
baseUrlinapi_constants.dartis 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 installif dependencies fail - Ensure Xcode is updated to the latest version
- Set iOS deployment target to 12.0 in Xcode
- Add
NSLocationWhenInUseUsageDescriptionto Info.plist for maps
Android Specific
- Ensure
minSdkis 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
© 2026 BookingCore Flutter App. All rights reserved.
This item is sold exclusively on CodeCanyon. Unauthorized distribution is prohibited.