← Back to Notes

How to Build an App Like Uber or Zomato — Architecture & Real Costs

·8 min read

The real architecture and costs behind building an on-demand app like Uber or Zomato — what you actually need for an MVP vs what agencies will try to sell you.

build app like uber costbuild app like zomatoon demand app developmentapp architecture uber clone

Let's Kill the Fantasy First

"I want to build an app like Uber" is the most common request freelance developers get. And it's the most misunderstood.

Uber has 5,000+ engineers. Their tech stack includes custom-built infrastructure that cost billions to develop. When you say "build an app like Uber," what you actually mean is: "build an on-demand marketplace MVP that connects providers with customers."

That's a very different thing. And it's very buildable.

Agencies will quote you $200K-500K for "an app like Uber." That's because they're selling you the fantasy of replicating Uber's entire platform. What you actually need for an MVP is 10% of that — and it can be built for $8K-15K.

Let me break down what you actually need.

The Real Architecture (MVP)

Every on-demand app has the same core components:

1. Three user types: - Customer (orders/books) - Provider (driver/restaurant/service provider) - Admin (manages the platform)

2. Core features per user type:

| Feature | Customer App | Provider App | Admin Panel | |---------|-------------|-------------|-------------| | Auth | Sign up, login, OTP | Sign up, login, OTP | Email + password | | Discovery | Search, browse, filters | N/A | N/A | | Booking/Order | Place order, track status | Accept/reject, update status | View all orders | | Payments | Pay via UPI/card | View earnings, request payout | Revenue dashboard | | Ratings | Rate provider | Rate customer | View all ratings | | Location | Map view, live tracking | Share location | N/A | | Notifications | Order updates | New order alerts | System alerts |

Tech stack I'd use: - Mobile: React Native (Expo) — one codebase for iOS + Android - Backend: Spring Boot or Node.js with Express - Database: PostgreSQL via Supabase - Maps: Google Maps API (₹14,000 free credit/month) - Payments: Razorpay (India) or Stripe (global) - Push notifications: Firebase Cloud Messaging (free) - Real-time: Supabase Realtime or Socket.io

What you DON'T need for MVP: - Microservices architecture (monolith is fine for <10K users) - Machine learning for matching/pricing (simple algorithms work) - Custom map rendering (Google Maps API handles everything) - Multi-region deployment (single region is fine until you scale)

Real Cost Breakdown

Here's what it actually costs to build an on-demand MVP with a freelance developer in India:

Development costs: | Component | Time | Cost | |-----------|------|------| | Customer mobile app | 3-4 weeks | ₹2,50,000-4,00,000 | | Provider mobile app | 2-3 weeks | ₹1,50,000-2,50,000 | | Backend API + database | 3-4 weeks | ₹2,50,000-4,00,000 | | Admin dashboard (web) | 1-2 weeks | ₹1,00,000-1,50,000 | | Payments integration | 1 week | ₹50,000-1,00,000 | | Maps + location tracking | 1 week | ₹50,000-1,00,000 | | Total | 10-14 weeks | ₹8,50,000-14,00,000 ($10K-17K) |

Monthly running costs (first 1,000 users): | Service | Monthly Cost | |---------|-------------| | Hosting (Amplify/Vercel) | ₹0-2,000 | | Database (Supabase Pro) | ₹2,000 | | Google Maps API | ₹0 (free tier covers it) | | Firebase (notifications) | ₹0 (free tier) | | Razorpay | 2% per transaction (no fixed cost) | | Total | ₹2,000-4,000/month (~$25-50) |

Compare this to agency quotes of ₹20-40 lakhs and monthly infrastructure costs of ₹50K+. The difference is scope discipline — building what you need, not what sounds impressive.

The Live Tracking Problem

Real-time location tracking is the feature that makes on-demand apps expensive. Here's how to handle it without overengineering:

MVP approach (works for <5K concurrent users): 1. Provider app sends location updates every 10 seconds via WebSocket 2. Server stores the latest position in PostgreSQL (or Redis for lower latency) 3. Customer app polls or subscribes via Supabase Realtime

Why 10-second updates are fine: Uber updates every 4 seconds. You don't need that. For food delivery, a pizza doesn't move that fast. For ride-sharing with 50 drivers, 10-second updates are smooth enough.

What Uber does differently: They use a custom-built system called Ringpop for distributed location processing across regions. You don't need this. You need a WebSocket that sends coordinates every 10 seconds. Don't let anyone tell you otherwise.

Google Maps API costs: Google gives you $200 free credit/month (~₹14,000). That's roughly: - 28,000 map loads - 40,000 geocoding requests - 10,000 directions requests

For an MVP, this free tier is more than enough. You start paying only when you have thousands of daily active users — which is a good problem to have.

Start Small, Prove Demand, Then Scale

The biggest mistake with on-demand apps is building the full platform before proving demand. Here's a better approach:

Phase 1 — Validate (2-4 weeks, ₹0-50K): - Build a WhatsApp-based order system. Customer orders via WhatsApp, you manually match with providers. - If you can't get 50 orders in a month with a manual process, an app won't save you.

Phase 2 — MVP (10-14 weeks, ₹8-14L): - Build the customer app, provider app, and admin panel - Launch in ONE city, ONE category - Target 100 daily orders

Phase 3 — Scale (ongoing): - Add features based on user feedback - Expand to new cities only after dominance in the first one - Now consider: caching, CDN, read replicas, maybe microservices

I've seen founders skip Phase 1 and go straight to building a full-featured app. Six months and ₹15 lakhs later, they have 12 users. Don't be that founder.

The apps that win aren't the ones with the best technology — they're the ones that solve a real problem in a specific market. Build the smallest thing that connects supply and demand. If it works on WhatsApp, it'll work as an app.

Building an on-demand app? I can help with architecture.

Let's Talk →

Read Next

Using RAG for SQL Generation — Why Embeddings Beat Prompt Stuffing

How pgvector embeddings improve LLM-to-SQL accuracy by providing schema context instead of dumping e...

Building an MCP Server with Spring Boot — A Practical Guide

Implementing the Model Context Protocol for AI assistant tool integration using Spring Boot and Spri...