Skip to main content

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.
Visit Live Platform
Aara Trips fleet operations and booking platform
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.

  1. 01Step

    Phone enquiry

    Traveler calls or messages fleet operators directly with travel intent

  2. 02Step

    Manual quote

    Rate discussed verbally; no structured record of fare components

  3. 03Step

    Verbal confirmation

    Booking confirmed by phone with no dedupe or availability check

  4. 04Step

    Driver assigned by call

    Fleet owner calls driver separately; no portal record

  5. 05Step

    Trip completed

    Odometer readings noted on paper; fare calculated manually

  6. 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

  1. Build a public marketplace for vehicle search, taxi rates, and tour package discovery

  2. Provide fleet partners with a tenant workspace for vehicles, drivers, and operations

  3. Implement an enquiry pipeline with dedupe rules and status workflow

  4. Support trip and tour dispatch with odometer-based billing and fare component tracking

  5. Enable driver provisioning with limited portal access via email invitations

  6. Deliver Razorpay subscription billing with GST invoices for fleet tenants

  7. Verify fleet partners through an admin workflow before marketplace visibility

  8. 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

  1. Consumer discovery app

    Public search, taxi rates, tour packages, and branded partner storefronts

  2. Fleet partner portal

    Vehicles, drivers, enquiries, trips, tours, analytics, and billing

  3. Enquiry & conversion pipeline

    Dedupe-protected leads flowing from discovery to confirmed trips or tours

  4. Central API & realtime

    NestJS backend with Socket.IO events for enquiry and trip updates

  5. Platform admin console

    Fleet verification, tenant lifecycle, plans, and user management

  6. Razorpay billing

    Subscription checkout, webhooks, and GST invoice PDF generation

How users move through the system

Product Workflow

User journey

9 steps

  1. 01Step

    Discover vehicles & packages

    Consumer searches marketplace by segment, type, route, or fleet partner storefront

  2. 02Step

    Compare & wishlist

    Authenticated users save options and compare vehicles, rates, and packages side-by-side

  3. 03Step

    Submit enquiry

    Lead captured with availability check, contact validation, and dedupe fingerprinting

  4. 04Step

    Fleet follow-up

    Partner progresses enquiry through contacted, quoted, confirmed, or rejected statuses

  5. 05Step

    Convert to trip or tour

    Confirmed enquiry links to a trip or tour record with rate card copied at booking time

  6. 06Step

    Assign driver

    Fleet partner assigns driver via portal; driver accesses limited fleet view via invite

  7. 07Step

    Execute & bill

    Odometer readings captured; distance, per-km pricing, allowances, and charges calculated

  8. 08Step

    Complete & invoice

    Trip marked complete; GST invoice generated; fleet analytics updated

  9. 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

  1. 01Step

    Fleet partner registration

    New tenant workspace created with draft profile and vehicle listings

  2. 02Step

    Admin verification

    Platform operator reviews and approves fleet partner for marketplace visibility

  3. 03Step

    Subscription activation

    Razorpay checkout assigns plan with feature caps and trial support

  4. 04Step

    Isolated fleet operations

    Vehicles, drivers, trips, and analytics scoped to tenant boundary

  5. 05Step

    Marketplace discovery

    Approved fleet listings surface in public search and partner storefronts

  6. 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

  1. Customer & fleet frontend

    Next.js app for marketplace discovery and fleet portal

  2. Platform admin frontend

    Separate Next.js console for operator governance

  3. NestJS API

    Versioned REST endpoints with tenant scoping and role guards

  4. PostgreSQL + Prisma

    Relational fleet data with denormalized search facets

  5. 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

About the author

Kennedy Chokkalingam — available for development partnerships

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.