Overview
Fusion Link is a multi-vendor driver marketplace that connects chauffeur drivers with transport vendors. One platform for every chauffeur job — drivers browse jobs from multiple vendors in a single feed, while vendors manage drivers, create jobs, and track completion effortlessly.
Drivers browse jobs from multiple vendors in a single feed — no more switching between apps or manual coordination.
Vendors post overflow jobs to a shared pool. Any qualified driver can bid, replacing ad-hoc manual coordination.
Vendors connect with supplier companies to access their driver fleets, enabling cross-company job fulfillment.
Runs as a Progressive Web App — installable on any device, no app store required. Google Play distribution via PWABuilder.
Multi-currency support, local phone validation, configurable document requirements, and timezone-aware dispatch for operators worldwide.
Vendors have wallets for tracking platform fees and payouts within the platform.
Architecture
Tech Stack
| Category | Technologies |
|---|---|
| Framework | Next.js 15 (App Router), React 19, TypeScript |
| Styling | Tailwind CSS, shadcn/ui, Radix UI primitives |
| Auth | Firebase Authentication (email/password, custom claims) |
| Database | Cloud Firestore (NoSQL, real-time listeners) |
| Storage | Cloudflare R2 (S3-compatible, media & documents) |
| AI | Vercel AI SDK with Moonshot AI (licence verification, extra-charge detection) |
| SMS/OTP | Twilio Verify (phone number verification) |
| Push | Web Push API (VAPID, service worker) |
| Rate Limiting | Upstash Redis (sliding window) |
| Hosting | Vercel (serverless functions, edge) |
Infrastructure
Deployed on Vercel as a Next.js application.
API routes run as serverless functions.
Static assets served via Vercel CDN.
Firebase Auth for identity and custom claims (roles).
Cloud Firestore for all application data.
Cloudflare R2 for document and media storage.
Upstash Redis for rate limiting.
Data Flow
┌──────────┐ ┌──────────────┐ ┌─────────────┐
│ Browser │────▶│ Next.js API │────▶│ Firestore │
│ (PWA) │◀────│ (Vercel) │◀────│ (Database) │
└──────────┘ └──────────────┘ └─────────────┘
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Firebase Auth│ │
│ │ (Identity) │ │
│ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ ┌─────────────┐
│ │ Cloudflare │ │ Upstash │
│ │ R2 (S3) │ │ Redis │
│ └─────────────┘ └─────────────┘
│
▼
┌──────────────┐ ┌─────────────┐
│ Twilio SMS │ │ Web Push │
│ (OTP) │ │ (VAPID) │
└──────────────┘ └─────────────┘User Roles
Fusion Link has two completely independent role systems: vendor membership roles (stored in Firestore) and platform admin roles (stored in Firebase custom claims). A user can be a vendor admin and a platform admin simultaneously — the systems do not interact.
Individual chauffeur drivers who browse and accept jobs. Drivers sign up, complete onboarding (profile, vehicle, phone verification, documents), then apply to join vendors.
- •Browse open jobs from joined vendors
- •Bid on global pool jobs
- •Manage profile, vehicle, and documents
- •Track completed jobs and earnings
- •Receive push notifications for new jobs
Operators who manage a transport vendor company. They create jobs, manage their driver fleet, configure vendor settings, and handle billing.
- •Create and assign jobs (direct or pool)
- •Approve/reject driver applications
- •Manage vendor settings and vehicle types
- •Track completions and financials
- •Connect with supplier companies
- •Publish overflow jobs to global pool
Platform-level administrators who oversee the entire marketplace. This is a completely separate role system from vendor admins — they are unrelated.
- •Manage all vendors and users
- •Manage platform configuration
- •View platform-wide statistics
- •Manage admin team members
- •Access audit log
- •Manage driver accounts
Drivers who belong to a supplier company connected to a vendor. They receive jobs through the supplier relationship rather than applying directly.
- •Receive jobs through supplier connection
- •Override supplier pricing per job
- •Same driver features as regular drivers
User Flows
End-to-end journey from sign-up to earning on the platform.
Sign Up
Create account with email and password via Firebase Auth.
Onboarding
Complete profile: name, phone, vehicle details (make, model, color, plate, year).
Phone Verification
Verify phone number via Twilio OTP (SMS code).
Documents
Upload required documents (license, insurance, etc.) to Cloudflare R2.
Browse Vendors
Search and browse available vendors.
Apply to Vendor
Submit membership application to one or more vendors.
Accept Jobs
Once approved, browse open jobs and accept or bid on assignments.
Complete Jobs
Fulfill assignments and mark as completed with required checkpoints.
Earnings
Track completed jobs and earnings history.
How a vendor operator sets up and manages their transport business.
Register Vendor
Create a vendor company with name, slug, and initial settings.
Configure
Set up vehicle types, message templates, commission rates, and wallet.
Manage Drivers
Review and approve driver applications, manage active fleet.
Connect Suppliers
Link to supplier companies to access additional driver capacity.
Create Jobs
Create jobs via form, AI text extraction, or bulk upload. Choose direct assignment or pool.
Assign or Pool
Directly assign to a driver, or publish to global pool for bidding.
Track Completion
Monitor active jobs and review completed job records.
Billing
Manage vendor wallet and track platform fees.
How platform administrators oversee and manage the marketplace.
Access Admin Panel
Platform admins access /platform/admin with Firebase custom claims.
Manage Vendors
Create, view, and manage all vendors across the marketplace.
Manage Users
View all users, recover custom claims, manage driver accounts.
Configure Platform
Manage fees, complaints, and platform settings.
Monitor Activity
View platform stats, audit logs, and system health.
Manage Admins
Add or remove platform admin and superadmin team members.
API Reference
All endpoints require Firebase Auth bearer tokens unless marked as Public. The auth level indicates the minimum role required to access the endpoint.
/api/driver/profile/api/driver/profile/api/driver/documents/api/driver/documents/api/driver/documents/api/driver/phone/send-otp/api/driver/phone/verify-otp/api/driver/message-templates/api/driver/message-templates/api/driver/message-templates/:templateId/api/driver/message-templates/:templateId/api/jobs/open/api/jobs/assigned/api/jobs/completed/api/jobs/bid/api/jobs/direct/api/jobs/direct/:jobId/api/jobs/direct/:jobId/api/jobs/pool/api/jobs/pool/publish/api/jobs/pool/unpublish/api/jobs/pool/bid/api/jobs/supplier/:jobId/override/api/jobs/supplier/:jobId/override/api/jobs/supplier/:jobId/override/api/vendors/register/api/vendors/browse/api/vendors/stats/api/vendors/:vendorId/jobs/api/vendors/:vendorId/jobs/sync/api/vendors/:vendorId/jobs/:jobId/assign/api/vendors/:vendorId/drivers/api/vendors/:vendorId/drivers/api/vendors/:vendorId/drivers/api/vendors/:vendorId/drivers/pending/api/vendors/:vendorId/drivers/supplier/api/vendors/:vendorId/completed-jobs/api/vendors/:vendorId/completed-jobs/api/vendors/:vendorId/settings/api/vendors/:vendorId/settings/api/vendors/:vendorId/wallet/api/vendors/:vendorId/wallet/api/vendors/:vendorId/upload/api/vendors/:vendorId/upload/api/vendors/:vendorId/suppliers/api/vendors/:vendorId/suppliers/api/vendors/:vendorId/suppliers/:supplierId/api/vendors/:vendorId/suppliers/:supplierId/api/vendors/:vendorId/suppliers/:supplierId/driver/api/vendors/:vendorId/message-templates/api/vendors/:vendorId/message-templates/api/vendors/:vendorId/message-templates/:templateId/api/vendors/:vendorId/message-templates/:templateId/api/platform/me/api/platform/admins/api/platform/admins/api/platform/admins/api/platform/users/api/platform/vendors/api/platform/vendors/api/platform/vendors/check-slug/api/platform/stats/api/platform/audit-log/api/platform/drivers/:driverUid/region/api/memberships/apply/api/memberships/:membershipId/approve/api/memberships/:membershipId/reject/api/notifications/api/notifications/api/push/subscribe/api/push/subscribe/api/push/subscribe/api/push/test/api/suppliers/test-connection