Customer Application, Driver Application, and Admin Panel — all included.
Welcome to Cabazzo, a React Native–based mobile application designed for taxi and ride-hailing services. The platform supports multiple ride services and integrates with backend systems for real-time operations.
The application is built as a white-label solution, allowing customization of branding, configuration, and backend services for each client.
Cabazzo integrates with various third-party services to provide enhanced functionality. Please note that third-party services are not included in the base package and require separate paid subscriptions or licenses. These include but are not limited to:
Important: Clients are responsible for procuring and managing their own third-party service accounts and subscriptions. Cabazzo provides the integration framework only; service credentials, API keys, and associated costs are the client's responsibility.
Note: It's necessary to have a basic knowledge in both server side and mobile app
development.
Basic knowledge in mobile application and installation
Basic knowledge about Google Cloud and Firebase
Cabazzo integrates with several third-party services to provide functionality such as maps, notifications, authentication, email delivery, and payment processing. These services are not included with the purchase package and must be configured using your own accounts and credentials where applicable.
| Service | Purpose | Required |
|---|---|---|
| RouteMappy Maps | Maps, Routing, Address Search & Location Services | Yes |
| Firebase Cloud Messaging (FCM) | Push Notifications & Trip Alerts | Yes |
| Firebase Authentication | OTP Verification & Authentication (optional) | Optional |
| SMTP Mail Service | Email Notifications, Password Reset & Verification | Yes |
| Twilio SMS | SMS Notifications & OTP Delivery | Optional |
| Razorpay | Online Payment Processing | Optional |
Cabazzo utilizes RouteMappy as its mapping and location service provider. RouteMappy offers customizable mapping capabilities including route calculation, address search, navigation support, service area management, and location-based functionality.
If you require RouteMappy Maps for your application, please contact the RouteMappy team directly.
Cabazzo uses Google Firebase for push notifications (FCM), authentication, and real-time database features. A Firebase project is required to enable these features.
Cabazzo supports multiple payment gateways for online payments. Choose one or more based on your business requirements and region.
API keys, payment gateway accounts, SMS credits, email service providers, hosting services, domain registration, SSL certificates, and RouteMappy subscriptions or licensing fees are not included with the purchase package. Buyers are responsible for creating and maintaining their own third-party service accounts and subscriptions where applicable.
Ensure the following software versions are installed before proceeding:
| Tool | Version | Notes |
|---|---|---|
| Node.js | v22.x(LTS) | Required to run React and npm scripts |
| npm | v8.x or later | Comes with Node.js |
| Git | Optional | Recommended for version control and some setups |
| Code Editor | VS Code (recommended) | For editing and running code |
| Browser | Latest Chrome, Firefox, or Edge | For testing the app |
Run these commands in your terminal/command prompt to confirm all required tools are properly installed:
# Check Node.js version
node --version # Should show v22.x
# Check npm version
npm --version # Should show 8.x or higher
# Check PHP version
php --version # Should show 8.1 or higher
# Check Composer version
composer --version # Should show 2.5 or higher
# Check MySQL version
mysql --version # Should show 5.7 or higher
If all commands show the correct versions (or higher), your environment is ready for installation.
If any command returns "not found" or shows an older version, please install or update the corresponding software before proceeding.
Cabazzo is built using modern and scalable technologies to power customer applications, driver applications, and administrative operations.
Before installing and running the application, ensure the following technologies and tools are installed with the recommended versions.
| Category | Technology | Version | Purpose |
|---|---|---|---|
| Mobile Applications (Customer & Driver) | |||
| Framework | React Native | 0.84.1 | Cross-Platform Mobile Development |
| UI Library | React | 18.3.1 | Application User Interface |
| Navigation | React Navigation | Latest | Screen Navigation |
| State Management | Redux Toolkit | Latest | Application State Management |
| HTTP Client | Axios | Latest | API Communication |
| JavaScript Engine | Hermes | Latest | Performance Optimization |
| Filament Admin Panel | |||
| Framework | Laravel Filament | 3.x | Admin Dashboard & Panel |
| Backend | Laravel | 10.x or 11.x | Server-Side Framework |
| PHP | PHP | 8.1 or higher | Server-Side Language |
| Database | MySQL | 5.7 or higher | Data Storage |
| Dependency Manager | Composer | 2.x+ | PHP Package Management |
| HTTP Client | Guzzle HTTP | Latest | External API Communication |
| Firebase SDK | Kreait Firebase PHP | Latest | Firebase Services Integration |
| SMS Gateway | Twilio SDK | Latest | SMS & OTP Services |
| Android Development Environment | |||
| Node.js | Node.js | 22 | JavaScript Runtime |
| Android SDK | Android SDK | 35 | Android Development Platform |
| Build Tools | Android Build Tools | 35.0.0 | Application Compilation |
| Minimum SDK | Android SDK | 24 | Minimum Supported Android Version |
| Target SDK | Android SDK | 35 | Target Android Version |
| Gradle | Gradle | 8.7.2 | Build Automation |
| Kotlin | Kotlin | 2.0.21 | Android Native Support |
| Android NDK | NDK | 27.1.12297006 | Native Library Support |
| Java | JDK | 17 (Recommended) | Android Development Environment |
| iOS Development Environment | |||
| iOS Deployment Target | iOS | 13+ | Minimum Supported iOS Version |
| Xcode | Xcode | Latest | iOS Development Environment |
| CocoaPods | CocoaPods | Latest | iOS Dependency Management |
| Third-Party Integrations | |||
| Push Notifications | Firebase Cloud Messaging | Latest | Real-Time Notifications |
| Authentication | Firebase Authentication | Latest | OTP Verification |
| Storage | Firebase Storage | Latest | Image & Document Uploads |
| Payment Gateway | Razorpay | Latest | Online Payment Processing |
| Maps & Location | RouteMappy | Latest | Location Services & Navigation |
Cabazzo integrates with various third-party services that require separate paid subscriptions. These include:
Important: Clients are responsible for procuring and managing their own third-party service accounts, API keys, and subscriptions.
Install all required SDKs, development tools, and dependencies using the recommended versions before beginning the installation process. Version mismatches may result in build or runtime issues.
Pro Tip: Use Node Version Manager (NVM) for Node.js version management and Android Studio SDK Manager for maintaining Android SDK compatibility.
Cabazzo consists of two mobile applications:
For end-users to book taxi rides
For drivers to accept and manage trips
Common Base Version: React Native 0.84.1 with React 19.2.3
Node Engine: >= 22.11.0
These libraries provide the core framework functionality and handle state management, API communication, and date processing.
| Package | Version | Customer | Driver | Purpose |
|---|---|---|---|---|
| react | 19.2.3 | check_circle | check_circle | UI Library |
| react-native | 0.84.1 | check_circle | check_circle | Cross-platform mobile framework |
| axios | ^1.13.6 | check_circle | check_circle | HTTP client for API calls |
| zustand | ^5.0.11 | check_circle | check_circle | State management |
| moment | ^2.30.1 | check_circle | check_circle | Date and time formatting |
| i18next | ^25.8.13 | check_circle | check_circle | Internationalization |
| react-i18next | ^16.5.4 | check_circle | check_circle | React i18next integration |
| libphonenumber-js | ^1.12.38 | check_circle | check_circle | Phone number validation |
These libraries handle screen navigation, routing, and tab management within the applications.
| Package | Version | Customer | Driver | Purpose |
|---|---|---|---|---|
| @react-navigation/native | ^7.1.31 | check_circle | check_circle | Core navigation library |
| @react-navigation/native-stack | ^7.14.2 | check_circle | check_circle | Stack navigation |
| @react-navigation/bottom-tabs | ^7.15.3 | check_circle | check_circle | Bottom tab navigation |
| react-native-screens | ^4.15.0 | check_circle | check_circle | Native screen optimization |
| react-native-safe-area-context | ^5.5.2 | check_circle | check_circle | Safe area handling |
| react-native-gesture-handler | ^2.30.0 | check_circle | check_circle | Gesture-based interactions |
These libraries enable map rendering and location tracking within the application.
| Package | Version | Customer | Driver | Purpose |
|---|---|---|---|---|
| @maplibre/maplibre-react-native | ^11.2.1 | check_circle | check_circle | Map rendering (MapLibre GL) |
| react-native-maps | ^1.26.1 | check_circle | cancel | Alternative map component (Customer only) |
| @react-native-community/geolocation | ^3.4.0 | check_circle | check_circle | GPS location services |
| @turf/invariant | ^7.3.4 | check_circle | cancel | Geospatial utilities (Customer only) |
| geofire-common | ^6.0.0 | check_circle | cancel | Geo-location queries (Customer only) |
Firebase is integrated to support real-time notifications, trip alerts, and data synchronization.
| Package | Version | Customer | Driver | Purpose |
|---|---|---|---|---|
| @react-native-firebase/app | ^23.8.6 | check_circle | check_circle | Firebase core |
| @react-native-firebase/database | ^23.8.6 | check_circle | check_circle | Real-time database |
| @react-native-firebase/messaging | ^23.8.6 | check_circle | check_circle | Push notifications (FCM) |
| @notifee/react-native | ^9.1.8 | check_circle | check_circle | Enhanced local notifications |
These libraries enhance the user interface and animation experience.
| Package | Version | Customer | Driver | Purpose |
|---|---|---|---|---|
| lottie-react-native | ^7.3.6 | check_circle | check_circle | Animated illustrations |
| react-native-haptic-feedback | ^2.3.3 | check_circle | check_circle | Device vibration/haptic feedback |
| react-native-toast-message | ^2.3.3 | check_circle | check_circle | Toast notification messages |
| react-native-svg | ^15.15.3 | cancel | check_circle | SVG rendering (Driver only) |
| react-native-countdown-circle-timer | ^3.2.1 | cancel | check_circle | Countdown timer (Driver only) |
| react-native-chart-kit | ^6.12.0 | cancel | check_circle | Charts for earnings (Driver only) |
| react-native-video | ^6.11.0 | cancel | check_circle | Video playback (Driver only) |
| react-native-video-controls | ^2.8.1 | cancel | check_circle | Video controls (Driver only) |
Icon libraries used across the applications.
| Package | Version | Customer | Driver | Purpose |
|---|---|---|---|---|
| @react-native-vector-icons/fontawesome | ^12.4.1 | check_circle | check_circle | FontAwesome icons |
| @react-native-vector-icons/ionicons | ^12.4.1 | check_circle | check_circle | Ionicons |
| @react-native-vector-icons/material-icons | ^12.4.1 | check_circle | check_circle | Material icons |
These libraries enable the application to interact with native device capabilities.
| Package | Version | Customer | Driver | Purpose |
|---|---|---|---|---|
| react-native-image-picker | ^8.2.1 | check_circle | check_circle | Image selection from camera/gallery |
| react-native-fs | ^2.20.0 | check_circle | check_circle | File system access |
| react-native-device-info | ^15.0.2 | check_circle | cancel | Device information (Customer only) |
| react-native-sound | ^0.13.0 | check_circle | check_circle | Audio playback |
| @react-native-async-storage/async-storage | ^2.2.0 | check_circle | check_circle | Local data persistence |
| @react-native-community/netinfo | ^12.0.1 | check_circle | check_circle | Network connectivity monitoring |
| react-native-restart | ^0.0.27 | check_circle | check_circle | App restart functionality |
| react-native-webview | ^13.16.1 | check_circle | check_circle | Web content rendering |
| react-native-contacts | ^8.0.10 | check_circle | cancel | Contacts access (Customer only) |
| react-native-eject | ^1.0.2 | check_circle | check_circle | Eject utility |
These libraries handle date/time selection and calendar functionality.
| Package | Version | Customer | Driver | Purpose |
|---|---|---|---|---|
| react-native-date-picker | ^5.0.13 | check_circle | check_circle | Date/time picker component |
| react-native-calendars | ^1.1311.0 | cancel | check_circle | Calendar component (Driver only) |
The application integrates payment gateways to support secure online transactions.
| Package | Version | Customer | Driver | Purpose |
|---|---|---|---|---|
| react-native-razorpay | ^2.3.1 | check_circle | check_circle | Razorpay payment gateway |
These libraries enable background processing and timer functionality.
| Package | Version | Customer | Driver | Purpose |
|---|---|---|---|---|
| react-native-background-timer | ^2.4.1 | cancel | check_circle | Background timer for trip tracking (Driver only) |
These libraries are specific to the Customer application.
| Package | Version | Purpose |
|---|---|---|
| @react-native-community/template | ^0.84.1 | React Native template |
| @react-native/new-app-screen | 0.84.1 | New app screen component |
| @turf/invariant | ^7.3.4 | Geospatial utilities |
| geofire-common | ^6.0.0 | Geo-location queries |
| react-native-contacts | ^8.0.10 | Contacts access |
| react-native-device-info | ^15.0.2 | Device information |
| react-native-maps | ^1.26.1 | Alternative map component |
These libraries are specific to the Driver application.
| Package | Version | Purpose |
|---|---|---|
| react-native-background-timer | ^2.4.1 | Background timer for trip tracking |
| react-native-calendars | ^1.1311.0 | Calendar component for scheduling |
| react-native-chart-kit | ^6.12.0 | Charts for earnings analytics |
| react-native-countdown-circle-timer | ^3.2.1 | Countdown timer for trip waiting |
| react-native-svg | ^15.15.3 | SVG rendering |
| react-native-video | ^6.11.0 | Video playback |
| react-native-video-controls | ^2.8.1 | Video controls |
The Cabazzo Admin Panel provides complete control over the platform. Below is the detailed menu structure and functionality.
| Menu Section | Sub-Menu Items | Fields / Functionality |
|---|---|---|
| Dashboard | ||
| Dashboard | - | Overview of platform analytics, active trips, revenue, and key metrics |
| Driver Subscriptions | ||
| Driver Subscriptions | Search, New | ID, Driver, Subscription Plan, Purchase Date, End Date, Price, Status |
| Subscription Plans | Search, New | ID, Plan Name, Days Count, Price, Status |
| Bookings / Trips | ||
| Trips | Search | ID, Trip ID, Customer Name, Driver Name, Vehicle Number, Payment Method, Promo Code, Surge, Sub Total, Discount, Total Fare, Cancellation Reason, Status |
| Trip Requests | Search | ID, Customer Name, Distance, Vehicle Type, Pickup Address, Drop Address, Payment Method, Surge, Total, Sub Total, Promo, Discount, Tax, Status |
| Trip Types | Search, New | ID, Active Icon, Inactive Icon, Name, Vehicle Mode, Status |
| Trip Sub Types | Search, New | ID, Trip Type, Trip Sub Type |
| Booking Statuses | Search | ID, Status Name, Customer Status Name |
| Trip Request Statuses | Search | ID, Status |
| Stops | Search | ID, Trip Request ID, Trip ID, Address, Latitude, Longitude, Status |
| Cancellation Reasons | Search, New | ID, Reason, Type |
| Customers | ||
| Customers | Search, New | ID, First Name, Last Name, Country Code, Phone Number, Email Address, Profile Picture, Gender, Status |
| Customer Sos Contacts | Search | ID, Customers, Name, Phone Number, Status |
| Customer Wallet Histories | Search | ID, Customers, Type, Message, Amount, Transaction Type |
| Customer Favourites | Search | ID, Customers, Address, Latitude, Longitude |
| Drivers | ||
| Driver Trip Requests | Search | ID, Driver, Trip Request ID, Status |
| Drivers | Search, New | ID, First Name, Last Name, Phone Number, Phone With Code, Email Address, Profile Picture, Date of Birth, GTH Location, GTH Status, Address, Licence Number, ID Proof Status, Online Status, Wallet, Overall Ratings, Number of Ratings, Shared Ride Status, Daily Ride Status, Rental Ride Status, Outstation Ride Status, Driver Hiring Status, Status |
| Driver Vehicles | Search, New | ID, Driver, Vehicle Type, Brand, Color, Vehicle Name, Vehicle Number, Vehicle Image, Vehicle Image Status, Vehicle Certificate Status, Vehicle Insurance Status, Vehicle Insurance, Status |
| Driver Tips | Search | ID, Customers, Driver, Trip ID, Tip Mode, Tip |
| Driver Earnings | Search | ID, Trip ID, Driver Name, Amount |
| Driver Recharges | Search | ID, Driver, Amount |
| Driver Withdrawals | Search | ID, Driver, Amount, Reference Proof, Reference No, Status |
| Driver Bank Kyc Details | Search, New | ID, Driver, Bank Name, Bank Account Number, IFSC Code, Aadhar Number, PAN Number, Status |
| Driver Tutorials | Search, New | ID, Title, Description, Thumbnail Image, Status, File |
| Services | ||
| Our Services | Search, New | ID, Title, Icon |
| Zones | Search, New | ID, Zone, Zone (Arabic), Polygon, View Polygon |
| Fares / Packages | ||
| Daily Fare Managements | Search, New | ID, Vehicle Type, Base Fare, Price Per Km, Status |
| Packages | Search, New | ID, Package Name, Hours, Kilometers |
| Rental Fare Managements | Search, New | ID, Vehicle Type, Package, Price Per Km, Price Per Hour, Package Price, Status |
| Outstation Fare Managements | Search, New | ID, Vehicle Type, Trip Sub Type, Base Fare, Price Per Km, Driver Allowance, Status |
| Delivery Fare Managements | Search, New | ID, Vehicle Type, Trip Sub Type, Base Fare, Price Per Km, Driver Allowance, Status |
| Shared Fare Managements | Search, New | ID, Vehicle Type, Base Fare, Price Per Km, Status |
| Complaints | ||
| Complaint Categories | Search, New | ID, Complaint Category, Status |
| Complaints | Search | ID, Trip ID, Customer, Driver, Complaint Category, Complaint Sub Category, Subject, Status |
| Complaint Sub Categories | Search, New | ID, Complaint Category, Complaint Sub Category, Short Description, Status |
| Payment Methods | ||
| Payment Methods | Search, New | ID, Payment, Payment Type, Icon, Status |
| Payment Types | Search | ID, Payment Type, Status |
| Payment Histories | Search | ID, Trip ID, Mode, Amount |
| Vehicle Management | ||
| Vehicle Categories | Search, New | ID, Vehicle Type, Vehicle Mode, Vehicle Slug, Active Icon, InActive Icon, Status |
| Vehicle Slugs | Search | ID, Slug |
| Tax Lists | Search, New | ID, Tax Name, Percent, Status |
| Settings | ||
| Map Settings | View, Edit | Map Provider Settings, Map Tiles, Routing, Places, Geocode, Reverse Geocode |
| App Versions | Search, New | ID, Platform, Version Number, Version Code |
| App Settings | View, Edit | App Name, App Version, Driver App Version, Default Currency, Default Currency Symbol, Currency Short Code, Default Country, Phone Code, Logo, Referral Amount, Driver Referral Amount, Language Status, Default Language, Subscription Status, Polyline Status, Driver Trip Time, Capital Latitude, Capital Longitude, About Us |
| Trip Settings | Edit | Commission Settings, Maximum Searching Time, Booking Searching Radius, GTH Searching Radius, Admin Commission (%), Waiting Min Timing, Night Fare Start Time, Night Fare End Time |
| Contact Settings | Edit | Phone Number, Email Address, Latitude, Longitude, Address |
| Shared Trip Settings | Edit | Pickup Radius, Drop Radius, Maximum Bookings |
| Operations | ||
| Notification Messages | Search, New | ID, Type, Title, Status |
| User Types | Search | ID, Type Name |
| Filament Shield | ||
| Roles | Search, New Role | Name, Guard Name, Permissions |
| Roles & Permissions | - | Assign granular permissions to each role |
| Users | Search, New User | Name, Email Address, Email Verified At |
| Promotions / Policies | ||
| Promo Codes | Search, New | ID, Customer, Promo Name, Promo Code, Promo Type, Discount, Min Fare, Max Discount Value, Redemptions, Status |
| Statuses | Search | ID, Status Type, Status Name |
| Privacy Policies | Search, New | ID, Slug, Title, Type, Status |
| Term Conditions | Search, New | ID, Title, Status |
| Testimonials | Search, New | ID, Name, Avatar, Role |
http://yourdomain.com/admin
Default Credentials: admin@gmail.com / admin
File Location: android/build.gradle
| Configuration | Value |
|---|---|
| Build Tools Version | 35.0.0 |
| Minimum SDK Version | 24 |
| Compile SDK Version | 35 |
| Target SDK Version | 35 |
| Android NDK Version | 27.1.12297006 |
| Kotlin Version | 2.0.21 |
classpath("com.android.tools.build:gradle:8.7.2")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
classpath 'com.google.gms:google-services:4.4.2'
This admin panel requires PHP 8.4. Please ensure you have the correct version installed before proceeding.
php --version # Should show PHP 8.4.x
Extract the downloaded source files to your working directory.
Copy the admin folder and paste it inside XAMPP → htdocs. Rename your project folder (e.g., cabazzo_admin).
Navigate to your project folder:
cd C:\xampp\htdocs\cabazzo_admin
Run the following command to install all PHP dependencies:
composer install
When finished, verify the vendor
folder has been created in your project.
Follow these steps in phpMyAdmin:
http://localhost/phpmyadmin in your browser
cabazzo_admin)Import the SQL file located at admin/db_file/cabazzo_admin.sql using phpMyAdmin:
cabazzo_admin.sql file from your project
Run the following command to generate a unique application key:
php artisan key:generate
If .env file is not visible,
enable "show hidden files" in your system settings. Update the .env file in your project root with the following
settings:
APP_URL=ENTER_YOUR_URL_HERE
APP_ASSET_URL=ENTER_YOUR_URL_HERE/public/upload
APP_ENV=production
APP_DEBUG=false
DB_DATABASE=your_database_name
DB_USERNAME=your_db_username
DB_PASSWORD=your_db_password
TWILIO_SID=your_twilio_sid
TWILIO_TOKEN=your_twilio_token
TWILIO_FROM=your_twilio_number
RAZORPAY_KEY=your_razorpay_key
RAZORPAY_SECRET=your_razorpay_secret
Firebase is required for push notifications, real-time database features, and other Firebase services. Before using the application, configure your own Firebase project.
your-app-name-firebase-adminsdk.json).Copy the downloaded Firebase JSON file into the following directory:
Admin/config/your-app-name.json
FIREBASE_FILE=your-app-name.json
FIREBASE_DB=https://your-project.firebaseio.com
FCM_SERVER_KEY=your_fcm_server_key
FCM_SENDER_ID=your_fcm_sender_id
Firebase Connected
Once the JSON file is uploaded and the .env values are
updated,
the application will automatically connect to your Firebase project.
Security Notice
Never share your Firebase Service Account JSON file or upload it to a public Git repository. This file contains sensitive credentials with administrative access to your Firebase project.
Important: Replace all placeholder values with your actual credentials before running the application.
Run the following command to create the database tables:
php artisan migrate
Run the following command to seed the database with default data:
php artisan db:seed --force
--force flag is used to run the seeder in
production environments. For local development, you can omit it.
Run the following command to generate all Shield permissions:
php artisan shield:generate --all --option=permissions --panel=admin
After generating permissions, run this command to assign the super admin role to your admin user:
php artisan tinker --execute="
\$role = DB::table('roles')->where('name','super_admin')->first();
\$perms = DB::table('permissions')->pluck('id')->toArray();
\$rows = array_map(fn(\$id) => ['permission_id'=>\$id,'role_id'=>\$role->id], \$perms);
DB::table('role_has_permissions')->insertOrIgnore(\$rows);
DB::table('model_has_roles')->insertOrIgnore(['role_id'=>1,'model_type'=>'App\\\Models\\\User','model_id'=>1]);
echo 'Done: Admin assigned to super_admin role';
"
Run the following command to optimize the application for production:
php artisan optimize
php artisan serve
The application will be available at http://127.0.0.1:8000
Open http://127.0.0.1:8000
in your browser.
APP_ENV=production
and APP_DEBUG=false in your .env file.
Run these commands in sequence to set up your admin panel:
# Step 1: Install dependencies
composer install
# Step 2: Generate application key
php artisan key:generate
# Step 3: Run migrations
php artisan migrate
# Step 4: Seed the database
php artisan db:seed --force
# Step 5: Optimize the application
php artisan optimize
# Step 6: Generate Shield permissions
php artisan shield:generate --all --option=permissions --panel=admin
# Step 7: Assign super admin role to admin user
php artisan tinker --execute="
\$role = DB::table('roles')->where('name','super_admin')->first();
\$perms = DB::table('permissions')->pluck('id')->toArray();
\$rows = array_map(fn(\$id) => ['permission_id'=>\$id,'role_id'=>\$role->id], \$perms);
DB::table('role_has_permissions')->insertOrIgnore(\$rows);
DB::table('model_has_roles')->insertOrIgnore(['role_id'=>1,'model_type'=>'App\\\Models\\\User','model_id'=>1]);
echo 'Done: Admin assigned to super_admin role';
"
# Step 8: Start the server
php artisan serve
Use these default credentials to log in to the admin panel:
| Email: | admin@gmail.com |
| Password: | admin |
| Access Level: | Super Administrator |
Security Alert: Change these credentials immediately after first login.
Download and install Node.js from your browser by visiting the official website: https://nodejs.org/en/download
# Verify Node.js installation
node -v
npm -v
Download and install Android Studio on your system from: https://developer.android.com/studio
Copy the customer folder and paste it into your desired
location.
Note: If you rename the app folder, you must update the bundle ID.
For Android, open:
folder_open Cabazzo_customer/android/app/src/main/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Cabazzo.customer">
...
</manifest>
Change the package attribute to your new bundle ID, for
example:
package="com.mycompany.mycustomerapp"
For iOS, open:
folder_open ios/CustomerApp.xcodeproj
Update the Bundle Identifier under the app's target settings in Xcode.
The bundle ID for the Cabazzo Customer app has been successfully updated in your system. Follow the same process for other applications.
folder_open Cabazzo/android/app/src/main/res/values/strings.xml
<!-- In strings.xml -->
<string name="app_name">Your App Name</string>
res/mipmap-* directoriesres/mipmap-anydpi-v26folder_open Cabazzo/android/app/build.gradle
// In app/build.gradle
android {
defaultConfig {
applicationId "com.yourcompany.yourapp"
}
}
Warning: Changing package name after release will be treated as a new app by Google Play.
If you need additional features, modifications, or integrations in this application, we offer custom development services to tailor the app to your specific needs.
For any custom work requests, please get in touch with us:
Note: Custom work may involve additional costs and development time depending on the complexity of the requested changes.
Track the evolution of the Cabazzo platform through major releases, feature additions, improvements, and optimizations.
FIREBASE_CREDENTIALS=firebase.json
FIREBASE_DATABASE_URL=https://your-project-id.firebaseio.com
Place the JSON file in:
/admin/config/firebase.json
google-services.json fileCabazzo_customer/android/app
If you haven't created a Firebase project yet, follow the Admin Configuration steps above first.
Clients must update the bundle identifier to match their application package.
Example: com.clientname.Cabazzo
Update in:
folder_open android/app/build.gradle
applicationId "com.clientname.Cabazzo"
Rename the Java package directory:
folder_open android/app/src/main/java/com/clientname/Cabazzo
keytool -genkey -v \
-keystore Cabazzo.keystore \
-alias Cabazzo \
-keyalg RSA \
-keysize 2048 \
-validity 10000
Place the keystore file inside:
folder_open android/app/
Update the signing configuration in:
folder_open android/gradle.properties
MYAPP_UPLOAD_STORE_FILE=Cabazzo.keystore
MYAPP_UPLOAD_KEY_ALIAS=Cabazzo
MYAPP_UPLOAD_STORE_PASSWORD=yourpassword
MYAPP_UPLOAD_KEY_PASSWORD=yourpassword
cd android
./gradlew assembleReleaseAPK location:
android/app/build/outputs/apk/release/app-release.apk
cd android
./gradlew bundleReleaseOutput: android/app/build/outputs/bundle/release/app-release.aab
iOS development requires a macOS system with Apple Xcode installed. Xcode provides all necessary tools, simulators, and SDKs required to build and run the application on iOS devices.
Ensure that you have the latest version of Xcode installed from the Mac App Store and have accepted all license agreements before proceeding.
The iOS project uses CocoaPods to manage native dependencies. You must install all required pods before running the application.
Follow the steps below:
cd ios && pod install && cd ..
This command installs all required native libraries and links them with your iOS project.
Note: The iOS project is named
cabazzo_customer. If you rename the Xcode target and the target line in
ios/Podfile, you must re-run pod install.
The Bundle Identifier uniquely identifies your application in the Apple ecosystem. It must match the identifier configured in Firebase and Apple Developer account.
Current Default:
org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)
ios/cabazzo_customer.xcworkspaceapplicationId.Example: com.clientname.cabazzocustomer
Ensure that the Bundle Identifier matches exactly with the one used in the Firebase configuration file, otherwise services may not work correctly.
Firebase is used for push notifications and other backend services. You need to download and configure the Firebase iOS configuration file.
GoogleService-Info.plist.Drag the downloaded GoogleService-Info.plist into Xcode:
ios/cabazzo_customer.xcworkspaceOpen ios/cabazzo_customer/AppDelegate.swift and add the following:
import Firebase // at the top// inside application(_:didFinishLaunchingWithOptions:), before the returnFirebaseApp.configure()
warning Critical: Without step 3, Firebase silently fails on iOS. Push notifications and other Firebase services will not work.
iOS requires usage description strings for all permissions your app requests. Missing descriptions crash the app instantly when that permission is requested.
File: ios/cabazzo_customer/Info.plist
Add the following keys with appropriate descriptions:
<key>NSLocationWhenInUseUsageDescription</key><string>We use your location to find nearby drivers and set your pickup point.</string><key>NSCameraUsageDescription</key><string>Used to take a profile photo.</string><key>NSPhotoLibraryUsageDescription</key><string>Used to choose a profile photo.</string><key>NSContactsUsageDescription</key><string>Used to select a contact when booking a ride for someone else.</string><key>UIBackgroundModes</key><array> <string>remote-notification</string></array>
warning ⚠️ Critical: On iOS, a missing usage-description string crashes the app instantly when that permission is requested. This is not optional.
Application icons are used across the app, App Store, and device home screen. You need to replace the default icons with your branding assets.
folder_open ios/cabazzo_customer/Images.xcassets/AppIcon.appiconset
Replace all icon sizes inside this folder with your custom icons while maintaining the required dimensions.
Replace the main logo used inside the application UI:
folder_open src/assets/logo.png
Recommended size: 500 × 500 PNG (transparent background preferred)
Before running the application, make sure the Metro bundler is running and all dependencies are installed.
cd ios && pod install && cd ..
npm start
npm run ios
This command will build the app and launch it in the iOS Simulator. Alternatively, you can open the project in Xcode and run it directly on a simulator or a physical device.
Alternative: Open ios/cabazzo_customer.xcworkspace in Xcode and click the Run button.
To publish your application to the App Store, you must generate a release build using Xcode.
ios/cabazzo_customer.xcworkspaceAfter uploading, you can manage your app release from App Store Connect.
Use this checklist to verify your iOS setup is complete:
Application API configuration is located in:
folder_open src/config/const.js
Update the following values with client server details:
export const BASE_URL = "https://api.clientdomain.com"
export const API_URL = "https://api.clientdomain.com/v1"
export const IMG_URL = "https://cdn.clientdomain.com"
Replace the logo file located at:
folder_open src/assets/logo.png
Recommended format: 500 × 500 PNG
Replace launcher icons in:
folder_open android/app/src/main/res/
Folders:
Replace icons in:
folder_open ios/Cabazzo/Images.xcassets/AppIcon.appiconset
The application uses MapLibre for map rendering and location-based services.
These features enable the application to display driver locations, trip routes, and navigation paths within the app.
RouteMappy is a paid maps service and is not included with the Cabazzo purchase package. You must obtain your own API key from RouteMappy. All subscription costs, licensing fees, and setup are the responsibility of the buyer.
In the place of enter_map_key in your .env
file, add your RouteMappy API key as shown below:
MAP_KEY=enter_map_key
If you need RouteMappy Maps for your application, feel free to contact us. It functions as a customizable map solution, available for purchase.
Edit the following file:
folder_open Cabazzo/src/config/Constants.js
export const ROUTEMAPPY_API_KEY = 'enter_your_routemappy_key';
If you need RouteMappy Maps for your application, feel free to contact us. It functions as a customizable map solution, available for purchase.
Payment credentials must be configured on the backend server to enable transaction processing.
Required credentials typically include:
These credentials are used by the backend API to securely communicate with the payment gateway.
Sensitive credentials such as secret keys must never be stored in the mobile application. All payment validation and transaction verification should be handled securely through the backend server.
This guide covers the modern Firebase Cloud Messaging v1 API. It uses OAuth 2.0 for secure authentication and provides more features than the deprecated legacy API.
Important
The legacy FCM HTTP API (using Server Keys) is deprecated and will be removed. Always use the Firebase Cloud Messaging HTTP v1 API for all new implementations.
Go to Firebase Console and select your project.
Navigate to Project Settings (gear icon) → Service accounts tab.
Click "Generate new private key" in the Firebase Admin SDK section.
Confirm by clicking "Generate key" in the popup.
A JSON file (your-project-id-firebase-adminsdk.json) will be
downloaded automatically. This file contains your service account credentials.
shield Security Keep this file secure. It contains sensitive credentials that provide full access to your Firebase services. Never commit this file to a public repository or share it with unauthorized users.
Copy the downloaded JSON file to your project's secure configuration directory:
Recommended Location:
/admin/config/firebase-service-account.json
Update your backend .env file with the following
configuration:
# Firebase Cloud Messaging v1 Configuration
FIREBASE_PROJECT_ID=your-project-id
FCM_DRIVE_PATH=/path/to/firebase-service-account.json
info
Note
The FCM_DRIVE_PATH points to your Firebase Service Account JSON file, and
FIREBASE_PROJECT_ID is your Firebase project identifier, which can be found in the
Firebase Console.
Here's a secure implementation example for sending push notifications using the FCM v1 API with OAuth 2.0 authentication:
// FCM v1 API Notification Sender
// Uses OAuth 2.0 authentication with service account
use Google\Cloud\Firestore\FirestoreClient;
use Google\Cloud\Core\ServiceBuilder;
// Initialize Firebase with service account
$firestore = new FirestoreClient([
'keyFilePath' => env('FCM_DRIVE_PATH'),
'projectId' => env('FIREBASE_PROJECT_ID')
]);
// Construct the FCM v1 endpoint
$url = "https://fcm.googleapis.com/v1/projects/" . env('FIREBASE_PROJECT_ID') . "/messages:send";
// Get OAuth 2.0 access token
$token = $firestore->getCredentialsFetcher()?->fetchAuthToken();
$accessToken = $token['access_token'];
// Construct the notification payload (v1 format)
$data = [
"message" => [
"token" => "device_registration_token_here",
"notification" => [
"title" => "Notification Title",
"body" => "Notification Message Body"
],
"data" => [
"key1" => "value1",
"key2" => "value2"
],
"android" => [
"priority" => "high"
],
"apns" => [
"headers" => [
"apns-priority" => "10"
]
]
]
];
// Send the notification
$options = [
'http' => [
'header' => "Authorization: Bearer $accessToken\r\n" .
"Content-Type: application/json\r\n",
'method' => 'POST',
'content' => json_encode($data)
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
Verify the service account JSON file path is correct and the file has proper read permissions. Ensure the project ID matches.
The device registration token may be invalid or expired. Request a new token from the client app.
The service account needs the "Firebase Cloud Messaging Admin" role in IAM settings.
Success
The modern FCM HTTP v1 API provides enhanced security, improved reliability, and supports all the latest Firebase Cloud Messaging features.
Log in to your Gmail account and click on your profile picture in the top right corner. Select "Manage your Google Account" from the dropdown menu.
Navigate to the "Security" tab in the left sidebar.
Under "Signing in to Google," enable 2-Step Verification if not already active.
Note: You must have 2-Step Verification enabled to generate an App Password.
While still in the Security section:
Find the "App passwords" option (under 2-Step Verification)
Click "create"
Copy the 16-character password shown
Add these configurations to your .env file:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=youremail@gmail.com
MAIL_PASSWORD=your_generated_app_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=youremail@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
Verify 2-Step Verification is enabled and you're using an App Password.
Check if your server/firewall allows outbound connections on port 587.
Gmail has sending limits (500 emails/day for free accounts).
Advisable: Copy the source files to D: or E: drive rather than C: drive.
adb devicesConfirm the device appears in the list.
cd D:\Cabazzo_customernpm installnpx react-native run-androidnpm install)Cause: Incorrect Node.js version, network issues, or corrupted cache.
Solution:
npm installrm -rf node_modules package-lock.json
npm cache clean --force
npm install
Cause: Missing packages or incorrect import paths after an update.
Solution:
npm install.npx react-native start --reset-cacheCause: Firebase project not properly linked or config files missing.
Solution:
google-services.json (Android) and
GoogleService-Info.plist (iOS) from your Firebase console.android/app/Cause: The .env file is missing or
contains wrong values.
Solution:
.env.example to .env and fill in
database, mail, map, and payment keys.Example (Admin .env):
APP_URL=http://your-server-url
DB_DATABASE=cabazzo_db
FCM_SERVER_KEY=your_key
Cause: USB debugging disabled or missing drivers.
Solution:
adb devices in a terminal and accept the authorization prompt on the
phone.adb devicesCause: Invalid, expired, or incorrectly entered purchase code.
Solution:
Cause: Backend URL misconfigured, invalid JSON response, or network restrictions.
Solution:
php artisan serve).Cause: Incorrect database credentials or large SQL file timeout.
Solution:
.sql file using phpMyAdmin’s Import tab or via command
line:mysql -u root -p cabazzo_db < cabazzo_admin.sql
.env with correct DB credentials and restart the backend.Cause: FCM server key missing, or notification channels not set up.
Solution:
@react-native-firebase/messaging is correctly linked.Cause: Map provider (RouteMappy/Google) API key invalid, or location permissions denied.
Solution:
Cause: The admin has not yet reviewed the driver’s documents.
Solution:
Cause: API keys are incorrect or set to live mode without proper activation.
Solution:
RAZORPAY_KEY, RAZORPAY_SECRET in the .env file.Cause: SMS gateway (Twilio) misconfiguration or insufficient balance.
Solution:
.env file.Cause: Wrong credentials, account deactivated, or network error.
Solution:
Cause: File size too large, unsupported format,
or permission issues on the uploads folder.
Solution:
storage folder has write permissions and
php artisan storage:link has been executed.APP_ASSET_URL is set correctly.Cause: Driver is offline, vehicle type mismatch, or zone restrictions.
Solution:
If you encounter any issues not covered here, our support team is ready to assist.
Monday – Friday
Response Time: Within 24–48 Business Hours
This information helps us resolve your problem faster.
If you encounter an error that is not listed above, please feel free to contact our support team for further assistance. We’re here to help.
If you need any custom work, additional features, or modifications to this application, our team is ready to help you build and scale your project efficiently.
Custom feature development based on your business needs
UI/UX design improvements and branding customization
Third-party API integrations (payment, SMS, maps, etc.)
Performance optimization and scalability improvements
Full project setup and deployment assistance
Building large-scale applications from scratch
You can hire our development team for complete project development, from idea to deployment, including frontend, backend, and server setup.
+91 9150 441 443
sales@menpanitech.com
Custom development services may involve additional cost and timeline depending on the scope and complexity of the project.
We’re happy to collaborate and bring your ideas to life