Case study
DropTaxi
Multi-tenant taxi booking SaaS for Indian taxi operators. One deployment serves every tenant with branded websites, custom domains, and per-operator SEO.
164
tests passing
5
car types supported
0
deploys to add a tenant
The challenge
Taxi operators needed branded websites without per-tenant infrastructure costs
Small taxi operators across India run their businesses on phone calls and WhatsApp. They have no web presence. The ones who do pay for a custom-built site that costs thousands of rupees per month in hosting, and updating fares or adding cities means calling a developer.
The client wanted a platform where any operator could get a branded, SEO-optimized booking website by pointing a domain and filling out a form. No code changes. No redeployment. The booking sites had to calculate fares for one-way and round-trip routes across five car types, send booking notifications through Telegram, and rank on Google for each operator's target city.
The constraint: all of this had to run on a single deployment. One server. One codebase. Every tenant served from the same infrastructure.
What we built
A full SaaS platform, from booking engine to admin dashboard
Per-tenant branded websites
Each operator gets a website with their brand name, logo, theme colors, and custom domain. The SSR layer reads the Host header on every request, resolves the tenant from Turso, and renders the correct branding. Visitors see a complete booking site. They never know it shares infrastructure with dozens of other operators.
Shared fare engine
One fare calculation engine handles every tenant's pricing. It supports one-way and round-trip routes across five car types: Hatchback, Sedan, SUV, Innova, and Innova Crysta. Each tenant sets their own per-kilometer rates through the admin dashboard. The engine pulls the correct rates at request time and returns an instant fare breakdown to the user.
Super admin dashboard
The dashboard at taxi.savibm.com gives the platform owner full control. Create tenants, configure theme colors, set fare rates per car type, manage city routes, and view bookings across all operators. Every change takes effect on the live tenant site within seconds, with no deployment required.
Telegram notifications
Each tenant connects their Telegram bot. When a customer books a ride, the operator gets an instant notification with route details, car type, and fare. No app to install, no dashboard to monitor.
Per-tenant SEO
Every tenant site generates its own meta tags, Open Graph images, structured data, and sitemap. When someone searches "taxi booking [city name]," the operator's branded site appears, not a generic platform page.
Zero-deploy onboarding
Adding a new taxi operator takes three steps: create the tenant in the admin dashboard, configure their branding and rates, point their DNS. The platform picks up the new domain on the next request. No code changes, no CI pipeline.
Architecture
One deployment, many brands
The request flow
- 1 A customer visits svdroptaxi.com. The request hits a single Fly.io machine running Astro 5 in SSR mode.
- 2 Hono middleware extracts the Host header and queries Turso (via Drizzle ORM) to resolve the tenant by domain.
- 3 The tenant's configuration (brand name, colors, logo, fare rates, city routes) loads into the request context.
- 4 Astro renders the page with the tenant's branding. React components handle the fare calculator and booking form on the client side.
- 5 On booking submission, the API route validates with Zod, writes to Turso, and fires a Telegram notification to the operator's bot.
Turborepo monorepo
The codebase splits into packages: the tenant-facing Astro app, the admin dashboard, shared database schemas, and the fare calculation engine. Turborepo caches builds across packages, so a change to the fare engine only rebuilds what depends on it.
Turso at the edge
Turso provides embedded SQLite replicas close to users. Tenant resolution queries take single-digit milliseconds. Drizzle ORM gives us type-safe queries with Zod schema validation at the boundary, and 164 Vitest tests cover the fare engine, tenant resolution, and booking flow.
Tools
Results
164
tests covering fare engine, tenant resolution, and booking flow
0
deployments needed to onboard a new taxi operator
5
car types with independent per-tenant fare rates
1
Fly.io machine serving all tenants from a single deployment
Related reading
Multi-tenant SaaS architecture: what CTOs need to know
Database-per-tenant vs shared schema vs hybrid. How to pick the right multi-tenancy model and avoid the mistakes we see in production.
How much does custom software cost in 2026?
A transparent breakdown of what drives custom software pricing, from MVP to enterprise platform. Real numbers from projects we shipped.
CI/CD for startups: ship faster without breaking things
Manual deploys work at 2 engineers. They break at 5. Here's the minimum CI/CD pipeline every startup needs, with free tools and a setup that takes one afternoon.
Get in touch
Start a conversation
Tell us about your project. We'll respond within 24 hours with a clear plan, estimated timeline, and pricing range.
Based in
UAE & India
Message received
We'll review your project and get back to you within 24 hours.
You can also reach us at hello@savibm.com