Overview
A white-label driver bidding taxi booking platform for modern mobility
A white-label driver bidding taxi booking platform for modern mobility
Customer Website (React/Vite), Driver Application (React Native), and Admin Panel (Laravel/Filament) — all included with the driver bidding system.
Bid4Cab is a white-label driver bidding-based taxi booking platform — a modern alternative to traditional dispatch systems. Instead of auto-assigning drivers, customers post trip requests and nearby drivers bid competitively for the ride. Customers can view all bids and select the best driver based on price, rating, and vehicle type.
Bid4Cab empowers customers to choose from multiple driver bids, creating a transparent and competitive marketplace. This drives better pricing and service quality.
Customer creates trip with pickup/drop. System broadcasts to eligible nearby drivers.
Drivers receive request and place bids. Configurable bidding window (default: 60s).
Customer reviews bids sorted by price/rating. Smart recommendation highlights best value.
Winning driver notified. Other bids cancelled. Trip begins with real-time tracking.
Ensure the following software versions are installed before proceeding:
| Tool/Software | Min Version | Recommended | Purpose |
|---|---|---|---|
| Node.js | v18.x LTS | v20.x or v22.x | React Native & npm |
| npm | v9.x | v10.x+ | Package management |
| PHP | 8.1 | 8.2 or 8.3 | Laravel backend |
| Composer | 2.5 | 2.7+ | PHP dependencies |
| MySQL | 5.7 | 8.0 / MariaDB 10.11+ | Database |
| Redis | 6.2 | 7.x | Queue & caching |
| Android Studio | 2023.1 | 2024.1 (Ladybug) | Android build |
| Java JDK | 11 | 17 or 21 | Android compilation |
| Xcode (macOS) | 15.0 | 16.0+ | iOS build |
| CocoaPods | 1.12 | 1.15+ | iOS dependencies |
| Git | 2.30 | Latest | Version control |
| VS Code | 1.80 | Latest | Code editor |
| Supervisor | 4.x | Latest | Process mgmt (prod) |
Bid4Cab uses Laravel Reverb for real-time bidding. This is the most critical component — it enables live bid updates between customers and drivers.
# Install Laravel Reverb
composer require laravel/reverb
# Publish configuration
php artisan reverb:install
# Start the Reverb server
php artisan reverb:start
node --version # Should show v20.x or higher
npm --version # Should show 10.x or higher
php --version # Should show 8.2 or higher
composer --version # Should show 2.5 or higher
mysql --version # Should show 8.0 or higher
java --version # Should show 17 or higher
redis-cli ping # Should return PONG
Bid4Cab is built using modern, scalable technologies optimized for real-time bidding.
| Category | Technology | Version | Purpose |
|---|---|---|---|
| Frontend (Customer Website) | |||
| Framework | React | 19.x | UI Library |
| Build Tool | Vite | 8.x | Fast builds & HMR |
| Styling | Tailwind CSS | 3.4.x | Utility-first CSS |
| Routing | React Router DOM | 7.x | Page navigation |
| HTTP Client | Axios | 1.7.x | API calls |
| Real-time | Laravel Echo + Reverb | Latest | Live bidding updates |
| Backend (Admin Panel & API) | |||
| Framework | Laravel | 11.x | PHP Framework |
| Admin Panel | Filament | 3.x | Admin Dashboard |
| Database | MySQL / MariaDB | 8.0+ / 10.6+ | Relational Database |
| Auth | Laravel Sanctum | 4.x | API Token Auth |
| Broadcasting | Laravel Reverb | 1.x | WebSocket for bidding |
| Queue | Laravel Horizon | Latest | Job queue (Redis) |
| Cache | Redis | 7.x | Caching & sessions |
| Mobile App (Driver) | |||
| Framework | React Native | 0.76.x | Cross-platform mobile |
| Navigation | React Navigation | 7.x | Screen navigation |
| Maps | MapLibre GL | Latest | Map rendering |
| WebSocket | RN WebSocket | Built-in | Real-time bidding |
| Third-Party Services | |||
| Payment | Razorpay / Stripe | Latest | Online payments |
| SMS | Twilio / MSG91 | Latest | OTP verification |
| Push | Firebase FCM | Latest | Real-time alerts |
| Maps | RouteMappy | Latest | Custom map tiles |
| Places | Google Places API | Latest | Autocomplete |
Run npm install to install all dependencies. For real-time bidding, ensure Laravel Echo and Reverb are properly configured.
Bid4Cab's driver bidding system enables a transparent marketplace where multiple drivers can bid on a single trip request. This section explains the complete architecture, flow, and configuration.
The bidding system uses Laravel Reverb (WebSocket) for real-time communication. When a customer posts a trip request:
Each bid goes through these states:
Channel: trip-request.{requestId}
.trip_request_created // New trip request posted
.bid_placed // New bid received
.bid_updated // Bid price updated
.bid_withdrawn // Driver withdrew bid
.bid_selected // Customer selected winning bid
.trip_confirmed // Trip confirmed, bidding closed
The bidding system requires Laravel Reverb with Redis. For production, use Supervisor to keep the Reverb server running. Ensure your hosting provider supports persistent WebSocket connections.
Extract the downloaded source files to your working directory.
Copy admin folder to XAMPP → htdocs. Rename folder (e.g., Bid4Cab_admin).
Navigate to project:
cd C:\xampp\htdocs\Bid4Cab_admincomposer installVerify vendor folder exists.Open http://localhost/phpmyadmin → Create new database (e.g., bid4cab_db).
Copy .env.example to .env and update:
DB_DATABASE=bid4cab_db
DB_USERNAME=root
DB_PASSWORD=
# Reverb (WebSocket for bidding)
REVERB_APP_ID=your-app-id
REVERB_APP_KEY=your-app-key
REVERB_APP_SECRET=your-app-secret
REVERB_HOST=localhost
REVERB_PORT=8080
REVERB_SCHEME=http
BROADCAST_DRIVER=reverb
QUEUE_CONNECTION=redisphp artisan key:generate
php artisan migrate --seed
php artisan storage:linkcomposer require laravel/reverb
php artisan reverb:install
php artisan reverb:startOpen 3 terminals:
# Terminal 1: Laravel
php artisan serve
# Terminal 2: Reverb (WebSocket)
php artisan reverb:start
# Terminal 3: Queue Worker
php artisan queue:workVisit http://localhost:8000/admin
| Email: | admin@bid4cab.com |
| Password: | password |
cd Bid4Cab_websitenpm installCopy .env.example to .env:
VITE_API_URL=http://localhost:8000/api
VITE_REVERB_APP_KEY=your-app-key
VITE_REVERB_HOST=localhost
VITE_REVERB_PORT=8080
VITE_REVERB_SCHEME=http
VITE_MAP_PROVIDER=routemappynpm run devcd Bid4Cab_drivernpm installcd ios && pod install && cd ..Edit src/config/Constants.js:
export const api_url = 'http://localhost:8000/api';
export const wss_url = 'ws://localhost:8080';# Android
npx react-native run-android
# iOS
npx react-native run-iosThis guide walks through the complete customer journey — from registration to booking, bid selection, and trip completion.
This guide covers everything drivers need — from logging in to bidding on trips and managing earnings.
This guide covers the complete admin workflow — managing drivers, configuring bidding rules, monitoring trips, and generating reports.
http://yourdomain.com/adminadmin@bid4cab.com / passwordAndroid: Update android/app/src/main/res/values/strings.xml — change <string name="app_name">Bid4Cab Driver</string>
iOS: Update ios/Bid4CabDriver/Info.plist — change CFBundleDisplayName
Android: Replace icons in android/app/src/main/res/mipmap-* folders
iOS: Replace images in Images.xcassets/AppIcon.appiconset
android/app/build.gradle: applicationId "com.yourcompany.bid4cabdriver"android/app/src/main/AndroidManifest.xml: package="com.yourcompany.bid4cabdriver"Modify default bid amounts in src/config/Constants.js:
export const BID_PRESETS = [5, 10, 15, 20, 25];
export const MIN_BID = 3;
export const MAX_BID = 100;
export const BID_INCREMENT = 1;
For custom development, contact sales@menpanitech.com
google-services.json → place in android/app/GoogleService-Info.plist → add to XcodeFCM notifies drivers about new trip requests and bid status changes even when backgrounded.
android/app/build.gradle → applicationIdcom.yourcompany.bid4cabkeytool -genkey -v -keystore bid4cab-release.keystore \
-alias bid4cab-key \
-keyalg RSA -keysize 2048 -validity 10000
Place in android/app/ and configure build.gradle signing config.
cd android
./gradlew assembleRelease
Output: app/build/outputs/apk/release/app-release.apk
cd android
./gradlew bundleRelease
Output: app/build/outputs/bundle/release/app-release.aab
sudo gem install cocoapods
cd ios && pod installAlways open .xcworkspace file in Xcode.
Add iOS app in Firebase Console → download GoogleService-Info.plist → add to Xcode root.
Xcode → Target → General → Bundle Identifier: com.yourcompany.bid4cabdriver
Replace icons in Images.xcassets/AppIcon.appiconset with all required sizes.
npx react-native run-iosXcode → Product → Archive → Distribute App → App Store Connect.
# Website (.env)
VITE_API_URL=http://localhost:8000/api
VITE_WS_URL=ws://localhost:8080
# Driver App (Constants.js)
export const api_url = 'http://localhost:8000/api';
export const wss_url = 'ws://localhost:8080';
POST /api/trip-request # Post new trip for bidding
POST /api/place-bid # Place bid on trip
GET /api/bids/{id} # Get all bids for trip
POST /api/select-bid/{id} # Select winning bid
POST /api/cancel-trip # Cancel trip request
npm run build
# Deploy /dist to Vercel, Netlify, etc.
APP_ENV=production and APP_DEBUG=falsephp artisan optimizeexport const ROUTEMAPPY_KEY = 'your-routemappy-key';
export const ROUTEMAPPY_STYLE = 'https://tiles.routemappy.com/styles/default/style.json';
RAZORPAY_KEY_ID=your_key_id
RAZORPAY_KEY_SECRET=your_key_secret
STRIPE_KEY=pk_live_your_publishable_key
STRIPE_SECRET=sk_live_your_secret_key
FCM_SERVER_KEY=your_fcm_server_key
FCM_SENDER_ID=your_sender_idFCM is used for: trip request alerts, bid status notifications, trip updates.
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your@gmail.com
MAIL_PASSWORD=your_app_password
MAIL_ENCRYPTION=tls
Use an App Password from Google Account → Security → 2-Step Verification.
ngrok to expose local server for mobile testing:ngrok http 8000
ngrok http 8080 # WebSocket
Support Hours: Mon–Fri, 9:00 AM – 6:00 PM (IST)