Case study
Aara Trips
Multi-Tenant Fleet SaaS
- A three-sided marketplace connecting travelers, fleet partners, and platform operators.
- Discover vehicles, taxi rates, and tour packages — then convert enquiries into dispatched trips.
- Fleet partners manage drivers, odometer billing, and GST invoicing from one tenant workspace.
- Multi-tenant SaaS with Razorpay subscriptions, enquiry dedupe, and real-time trip updates.

- Industry
- Travel & Fleet
- Duration
- 1.5 Months
- Platform
- Multi-Tenant SaaS
- Users
- Fleet operators
- Stack
- NestJS · Prisma · PostgreSQL · Razorpay
What was built and why it matters
Executive Summary
Travelers need a trustworthy way to compare fleet vehicles, taxi rates, and tour packages across operators. Fleet owners need one system for listings, enquiries, trip and tour dispatch, driver assignment, odometer-based billing, and subscription billing — without spreadsheets and phone-only coordination.
Aara Trips runs a three-sided marketplace SaaS: consumers discover and enquire, fleet partners convert leads into trips and tours on a tenant workspace, and platform operators onboard, verify, and monetize fleet tenants.
The platform ships as three deployable applications — a Next.js customer app for marketplace discovery and fleet portal operations, a Next.js admin console, and a NestJS API — with Razorpay billing, GST invoices, Socket.IO realtime, and Firebase push notifications.
What problem existed before this project
The Business Challenge
Fleet operators and travelers were stuck in phone-only coordination — no shared system for discovery, enquiry tracking, dispatch, or billing.
Status quo
Before the platform
- Travelers comparing fleet options through unstructured phone calls and WhatsApp forwards
- Fleet partners managing enquiries in notebooks with no status pipeline
- Duplicate enquiries from repeat clicks cluttering fleet CRM
- Trip dispatch and driver assignment coordinated verbally
- Odometer-based billing calculated manually after each trip
- No subscription model for fleet partners to monetize platform access
What it cost
Business consequences
- Lost bookings when enquiry follow-up is slow or inconsistent
- Fleet revenue leakage from untracked trips and manual fare errors
- Consumer trust issues without verified fleet partner profiles
- Driver coordination failures when assignments are not recorded
- Platform unable to scale beyond manual onboarding per city
- Billing disputes when fare components are not captured at booking time
Previous workflow
How work happened before
A disconnected chain of manual steps — each handoff added delay, errors, and lost visibility.
- 01Step
Phone enquiry
Traveler calls or messages fleet operators directly with travel intent
- 02Step
Manual quote
Rate discussed verbally; no structured record of fare components
- 03Step
Verbal confirmation
Booking confirmed by phone with no dedupe or availability check
- 04Step
Driver assigned by call
Fleet owner calls driver separately; no portal record
- 05Step
Trip completed
Odometer readings noted on paper; fare calculated manually
- 06Step
Payment & invoice offline
GST invoice prepared separately; no subscription billing for platform access
What the client needed to achieve
Project Objectives
Engagement scope
8 objectives
Build a public marketplace for vehicle search, taxi rates, and tour package discovery
Provide fleet partners with a tenant workspace for vehicles, drivers, and operations
Implement an enquiry pipeline with dedupe rules and status workflow
Support trip and tour dispatch with odometer-based billing and fare component tracking
Enable driver provisioning with limited portal access via email invitations
Deliver Razorpay subscription billing with GST invoices for fleet tenants
Verify fleet partners through an admin workflow before marketplace visibility
Push real-time updates for enquiries, trips, and operational events
How the platform addresses the challenge
The Solution
Aara Trips ships as three deployable applications sharing one domain model: a Next.js customer app for marketplace discovery and fleet portal operations, a Next.js admin console for platform governance, and a NestJS API handling versioned REST endpoints and a real-time gateway.
Each fleet partner is an isolated tenant workspace with vehicles, drivers, rates, packages, enquiries, trips, tours, and analytics scoped by tenant. Consumers search and discover publicly, submit enquiries with dedupe protection, and track status — while authenticated users save wishlists and compare options side-by-side.
External integrations include DigitalOcean Spaces for media, Razorpay for payments, Resend for email, Firebase for push, and Puppeteer for GST invoice PDF generation.
Platform architecture
6 components
Consumer discovery app
Public search, taxi rates, tour packages, and branded partner storefronts
Fleet partner portal
Vehicles, drivers, enquiries, trips, tours, analytics, and billing
Enquiry & conversion pipeline
Dedupe-protected leads flowing from discovery to confirmed trips or tours
Central API & realtime
NestJS backend with Socket.IO events for enquiry and trip updates
Platform admin console
Fleet verification, tenant lifecycle, plans, and user management
Razorpay billing
Subscription checkout, webhooks, and GST invoice PDF generation
How users move through the system
Product Workflow
User journey
9 steps
- 01Step
Discover vehicles & packages
Consumer searches marketplace by segment, type, route, or fleet partner storefront
- 02Step
Compare & wishlist
Authenticated users save options and compare vehicles, rates, and packages side-by-side
- 03Step
Submit enquiry
Lead captured with availability check, contact validation, and dedupe fingerprinting
- 04Step
Fleet follow-up
Partner progresses enquiry through contacted, quoted, confirmed, or rejected statuses
- 05Step
Convert to trip or tour
Confirmed enquiry links to a trip or tour record with rate card copied at booking time
- 06Step
Assign driver
Fleet partner assigns driver via portal; driver accesses limited fleet view via invite
- 07Step
Execute & bill
Odometer readings captured; distance, per-km pricing, allowances, and charges calculated
- 08Step
Complete & invoice
Trip marked complete; GST invoice generated; fleet analytics updated
- 09Step
Subscription renewal
Fleet tenant billing managed through Razorpay with entitlement sync on plan change
What the platform delivers
Core Features
Platform capabilities
14 features
Public Vehicle Search
Unauthenticated marketplace browsing with discover facets on vehicle segment and type for fast filtering.
Taxi Rates & Tour Packages
Public rate cards by trip type and tour package listings with top routes for consumer discovery.
Partner Storefronts
Branded fleet partner pages by slug so operators can share a direct link to their catalog.
Wishlist & Compare
Authenticated consumers save vehicles, rates, and packages to wishlist and side-by-side compare views.
Enquiry Pipeline
Status workflow from new through contacted, quoted, and confirmed to closed or rejected.
Enquiry Dedupe
Location-normalized fingerprint prevents duplicate active enquiries and blocks re-enquiry during active jobs.
Trip & Tour Operations
Local, drop, round trip, outstation, and airport transfer jobs with distinct fare rules per type.
Odometer Billing
Start and end readings with distance, per-km pricing, driver allowance, night charges, and waiting charges.
Driver Provisioning
Fleet partners invite drivers to the tenant portal with email invitations and scoped permissions.
Fleet Analytics
Revenue, conversion rates, driver summaries, and utilization charts for operational insight.
Razorpay Billing
Subscription checkout, payment webhooks, and GST invoice PDFs with entitlement-driven feature gates.
Fleet Verification
Admin workflow from draft through pending review to approved before marketplace visibility.
Real-Time Updates
Live enquiry, trip, and admin events pushed via Socket.IO to user, tenant, and admin channels.
Push & Email Notifications
Firebase push and transactional email for verification, invitations, and operational alerts.
Dashboard, workflows, and portals
Product Screenshots
Product UI
1 screenshot
One platform, many independent businesses
Multi-Tenant Fleet SaaS
Each fleet partner operates in an isolated tenant workspace with its own vehicles, drivers, rates, enquiries, trips, tours, and billing data. Platform operators verify fleet partners, manage subscription plans, and govern tenant lifecycle from a dedicated admin console.
Consumers interact with a unified marketplace catalog aggregated across verified tenants — while fleet operational data remains strictly scoped to the partner workspace.
Tenant lifecycle
6 steps
- 01Step
Fleet partner registration
New tenant workspace created with draft profile and vehicle listings
- 02Step
Admin verification
Platform operator reviews and approves fleet partner for marketplace visibility
- 03Step
Subscription activation
Razorpay checkout assigns plan with feature caps and trial support
- 04Step
Isolated fleet operations
Vehicles, drivers, trips, and analytics scoped to tenant boundary
- 05Step
Marketplace discovery
Approved fleet listings surface in public search and partner storefronts
- 06Step
Entitlement sync
Features update on plan change with expiry and past-due handling
Platform safeguards
6 controls
Tenant-scoped fleet data with no cross-tenant joins
Fleet verification workflow before public catalog visibility
Razorpay subscription billing with GST invoice generation
Entitlement-driven feature gates on fleet operations
Distinct portals for consumer, fleet partner, driver, and admin
Real-time events scoped to user, tenant, and admin channels
How the system is structured
Technical Architecture
Three deployable applications share one domain model on NestJS with Express, Prisma on PostgreSQL, Redis with BullMQ infrastructure, and Socket.IO for real-time updates. Customer and admin frontends proxy API requests same-origin in production.
External integrations include DigitalOcean Spaces for presigned media uploads, Razorpay for payments, Resend for email, Firebase for push notifications, and Puppeteer for GST invoice PDF generation. Portal-scoped registration guards and webhook signature verification protect tenant data.
System layers
5 layers
Customer & fleet frontend
Next.js app for marketplace discovery and fleet portal
Platform admin frontend
Separate Next.js console for operator governance
NestJS API
Versioned REST endpoints with tenant scoping and role guards
PostgreSQL + Prisma
Relational fleet data with denormalized search facets
Redis + realtime gateway
BullMQ queue infrastructure and Socket.IO event fan-out
Infrastructure components
10 services
Next.js customer app with TanStack Query and Recharts analytics
Next.js platform admin console
NestJS API on Express with portal-scoped registration guards
Prisma ORM on PostgreSQL with tenant-scoped queries
Socket.IO real-time gateway for enquiry and trip events
Razorpay checkout, webhook verification, and subscription lifecycle
Puppeteer GST invoice PDF rendering
DigitalOcean Spaces presigned media uploads
Firebase Cloud Messaging for operational push alerts
Resend for verification and driver invitation emails
Hard problems and how they were solved
Engineering Challenges
Challenge 1
Duplicate enquiries from repeat clicks
Solution
Location-normalized fingerprint with status-aware blocking rules per enquiry and active job state.
Challenge 2
Taxi vs tour product shapes
Solution
Separate trip and tour models with shared enquiry conversion paths and distinct fare fields.
Challenge 3
Fleet partner trust on marketplace
Solution
Verification workflow from draft through pending review to approved with admin audit events.
Challenge 4
Multi-portal auth confusion
Solution
Portal registration guards and distinct roles for customer, fleet partner, and driver access.
Challenge 5
Driver access without full fleet admin
Solution
Driver provisioning invites that link portal users to driver records with scoped permissions.
Challenge 6
Payment webhook tampering
Solution
Signature verification on payment webhook payloads before subscription state changes.
Production technologies
Technology Stack
Frontend
- Next.js
- React.js
- TypeScript
- TanStack Query
- Recharts
Backend
- NestJS
- Express
- Prisma
- Socket.IO
Data & messaging
- PostgreSQL
- Redis
- Firebase Cloud Messaging
Infrastructure
- Docker
- Shared platform edge TLS
- DigitalOcean Spaces
- Razorpay
Built for production load
Performance & Scalability
Production readiness
8 optimizations
Denormalized vehicle facets avoid parsing type strings at query time on public search
Presigned cloud storage URLs offload image and document serving from the API
Stateless API scales horizontally behind shared platform edge Nginx
Tenant-scoped queries isolate fleet data with no cross-tenant joins
TanStack Query cache on customer and admin apps with targeted invalidation on mutations
Background job queue infrastructure ready for async mail, notifications, and payments
Pagination and period filters on fleet list and analytics endpoints
Health checks and scheduled database backups with Asia/Kolkata timezone defaults
Operational and commercial outcomes
Business Impact
Aara Trips replaced phone-and-spreadsheet fleet coordination with an end-to-end marketplace — from consumer discovery through enquiry conversion, trip dispatch, and GST billing.
Outcomes delivered
8 outcomes
Public marketplace giving travelers structured vehicle and package discovery
Enquiry pipeline with dedupe reducing junk leads for fleet partners
Trip and tour dispatch with odometer billing replacing manual fare calculation
Driver provisioning via portal invites eliminating verbal assignment gaps
Fleet verification building consumer trust in marketplace listings
Razorpay subscription billing monetizing platform access for fleet tenants
Real-time enquiry and trip updates across consumer and fleet portals
Fleet analytics surfacing revenue, conversion, and utilization insight
Technology choices explained
Why This Architecture Works
Design rationale
6 decisions
Why this choice
Three-sided marketplace model
Consumers, fleet partners, and platform operators have distinct workflows that require separate portals on one shared data model.
Why this choice
Enquiry dedupe fingerprint
Repeat clicks and re-enquiries during active jobs are the primary source of fleet CRM noise in travel marketplaces.
Why this choice
Separate trip and tour models
Taxi dispatch and tour packages have different fare shapes but share enquiry conversion — a single model would force compromises.
Why this choice
Denormalized vehicle facets
Public search must stay fast as the marketplace catalog grows across verified fleet tenants.
Why this choice
Razorpay + Puppeteer GST invoices
Fleet partners need compliant billing integrated with subscription lifecycle — not a separate invoicing tool.
Why this choice
Socket.IO realtime gateway
Enquiry and trip status changes need immediate visibility for both consumers waiting on quotes and fleet ops teams dispatching drivers.
What this project reinforced
Lessons Learned
Key takeaways
5 lessons
Enquiry dedupe is essential in travel marketplaces — consumers naturally submit multiple times when response is slow.
Copying rate cards at booking time prevents billing disputes when fleet partners update pricing after confirmation.
Driver provisioning with scoped portal access is safer than giving every driver full fleet admin credentials.
Fleet verification before marketplace visibility protects consumer trust more than post-hoc moderation.
Separate trip and tour models pay off when fare components diverge — shared enquiry conversion keeps the pipeline unified.
Explore related work
Similar Projects & Services
Common questions about the Aara Trips project
Case Study FAQ
Aara Trips is a multi-tenant fleet SaaS for taxi and tour operators managing enquiries, trip dispatch, and billing.
NestJS, Prisma, PostgreSQL, Razorpay, and Socket.IO power marketplace discovery, trip operations, and realtime updates.
Phone and spreadsheet coordination for enquiries, driver provisioning, and GST billing were replaced with one operations platform.
About the author

Next step
Next step
Looking to Build Something Similar?
Whether you're building a multi-tenant SaaS, marketplace, CRM, ERP, or AI platform — let's discuss your project and how a dedicated development partnership can deliver it.