Updated Sep 11, 2025

Step-by-Step Guide: Building a Lyft Clone with Adalo

Table of Contents
Text Link

This comprehensive tutorial will walk you through building a Lyft-style rideshare app using Adalo's no-code platform. While some features like real-time GPS tracking require workarounds, you'll create a functional app with driver-rider matching, payment processing, and trip booking capabilities.

Prerequisites and Initial Setup

Step 1: Create Your Adalo Account

  1. Go to Adalo.com and sign up
  2. Choose a paid plan — publishing to the app stores requires one. See Pricing
  3. Click "Create New App"
  4. Choose "Mobile App" (essential for location features)
  5. Name your app (e.g., "RideClone")
  6. Select "Start from Scratch"

Step 2: Configure App Settings

  1. Choose a primary color (pink for Lyft-style)
  2. Select modern, clean theme
  3. Pick professional font
  4. Enable location permissions in app settings
  5. Click "Continue" to enter editor

Setting Up the Database

Step 3: Enhance the Users Collection

  1. Click Database icon in left sidebar
  2. Select the default "Users" collection
  3. Add these properties (click "+ Add Property"):
    • Role (Text) - Values: "Driver", "Rider", "Both"
    • Driver Status (Text) - Values: "Available", "Busy", "Offline"
    • Current Location (Location)
    • Profile Picture (Image)
    • Phone Verified (True/False - default: false)
    • Driver License (Image)
    • Background Check (Text) - Values: "Pending", "Approved", "Rejected"
    • Rating Average (Number - default: 5.0)
    • Total Trips (Number - default: 0)
    • Stripe Account ID (Text)

Learn more about the Users collection

Step 4: Create Vehicles Collection

  1. Click "+ Add Collection"
  2. Name it "Vehicles"
  3. Add properties:
    • Make (Text)
    • Model (Text)
    • Year (Number)
    • Color (Text)
    • License Plate (Text)
    • Vehicle Type (Text) - Values: "Standard", "Premium", "Luxury"
    • Insurance Document (Image)
    • Is Active (True/False - default: true)

Step 5: Create Trips Collection

  1. Click "+ Add Collection"
  2. Name it "Trips"
  3. Add properties:
    • Pickup Location (Location)
    • Destination Location (Location)
    • Trip Status (Text) - Values: "Requested", "Accepted", "In Progress", "Completed", "Cancelled"
    • Fare Amount (Number)
    • Distance Miles (Number)
    • Trip Duration (Number) - in minutes
    • Pickup Time (Date & Time)
    • Start Time (Date & Time)
    • End Time (Date & Time)
    • Special Instructions (Text)
    • Payment Status (Text) - Values: "Pending", "Completed", "Failed"
    • Surge Multiplier (Number - default: 1.0)

Step 6: Create Ratings Collection

  1. Click "+ Add Collection"
  2. Name it "Ratings"
  3. Add properties:
    • Stars (Number - 1 to 5)
    • Comment (Text - check "Multiline")
    • Rating Type (Text) - Values: "Driver", "Rider"
    • Created At (Date & Time - Automatic)

Step 7: Create Messages Collection

  1. Click "+ Add Collection"
  2. Name it "Messages"
  3. Add properties:
    • Message Text (Text)
    • Sent At (Date & Time - Automatic)
    • Is Read (True/False - default: false)

Step 8: Set Up Relationships

  1. In Vehicles:
    • Add "Owner" → Users (Many to One)
  2. In Trips:
    • Add "Rider" → Users (Many to One)
    • Add "Driver" → Users (Many to One)
    • Add "Vehicle Used" → Vehicles (Many to One)
  3. In Ratings:
    • Add "Trip" → Trips (Many to One)
    • Add "Reviewer" → Users (Many to One)
    • Add "Reviewed User" → Users (Many to One)
  4. In Messages:
    • Add "Trip" → Trips (Many to One)
    • Add "Sender" → Users (Many to One)
    • Add "Recipient" → Users (Many to One)

Database documentation

Building User Authentication

Step 9: Create Role Selection Screen

  1. Add new screen "Choose Role"
  2. Make it appear after user signup
  3. Add two Button components:
    • "I want to drive" - Updates User → Role to "Driver"
    • "I need a ride" - Updates User → Role to "Rider"
  4. Add Toggle for "Both" option
  5. Navigate to appropriate home screen based on selection

Step 10: Build Phone Verification

  1. Add new screen "Phone Verification"
  2. Add Text Input for phone number
  3. Add Button "Send Code"
  4. Create a Custom Action to send & verify SMS codes (Adalo doesn’t natively verify phone numbers). See Custom Actions
  5. Add verification code input screen
  6. Update User → Phone Verified on success

Step 11: Create Driver Verification Screen

  1. Add new screen "Driver Verification"
  2. Add Form component with fields:
    • License upload (Image Picker)
    • Insurance document (Image Picker)
    • Vehicle information (Text Inputs)
  3. On form submit:
    • Create Vehicle record
    • Update User → Background Check to "Pending"
    • Send admin notification for review

Installing Essential Components

Step 12: Install Location Components

  1. Go to Component Marketplace
  2. Install free Maps component
  3. (Optional) Add PragmaFlow GeoLocation to improve on-screen GPS accuracy for pickup/ETA screens. Get it from the Marketplace
  4. Configure Google Maps API key in app settings
  5. Enable location permissions prompt

Step 13: Install Payment Components

  1. Install Stripe Connect (Marketplace) — rider-to-driver payouts require Connect. See Marketplace Payments
  2. Configure Connect in the Adalo component (per the guide above)
  3. Configure platform fee percentage (e.g., 20%)
  4. (If not yet added) Install Stripe Connect (Marketplace)

Step 14: Install Communication Components

  1. Install Chat component for messaging
  2. Use Adalo Push Notifications — native and maintained. See Push notifications
  3. Configure iOS/Android push credentials (per the Adalo guide)
  4. Set up notification triggers

Building the Rider Experience

Step 15: Create Rider Home Screen

  1. Add new screen "Rider Home"
  2. Add Maps component (full screen):
    • Set location to User → Current Location
    • Show nearby available drivers as markers
  3. Add "Where to?" search bar at bottom
  4. Add Button "Request Ride"

Step 16: Build Trip Request Flow

  1. Add new screen "Request Trip"
  2. Add Form with pickup/destination inputs:
    • Use Address Autocomplete for locations
    • Display pickup and destination on map
  3. Calculate distance using: MILES(Pickup Lat, Pickup Lon, Dest Lat, Dest Lon)
  4. Display fare estimate: Base_Fare + (Distance * Rate_Per_Mile) * Surge_Multiplier
  5. Add vehicle type selection (Standard, Premium, Luxury)

Step 17: Create Driver Selection Screen

  1. Add new screen "Choose Driver"
  2. Add Custom List filtered by:
    • Role = "Driver"
    • Driver Status = "Available"
    • Distance formula: MILES(Current Location, User Location) < 5
  3. Sort by distance from pickup location
  4. Display driver cards showing:
    • Profile picture and name
    • Vehicle information
    • Rating and total trips
    • Distance away and ETA

Step 18: Build Trip Tracking Screen

  1. Add new screen "Track Trip"
  2. Add Maps component with:
    • Driver location (refreshes while the screen is open; use a Timer ~15–30s)
    • Pickup and destination markers
    • Route line between points
  3. Add status indicators:
    • "Driver is X minutes away"
    • "Driver has arrived"
    • "Trip in progress"
  4. Add a Timer to trigger on-screen refresh (background updates aren’t native) 

Building the Driver Experience

Step 19: Create Driver Dashboard

  1. Add new screen "Driver Home"
  2. Add status toggle: Available/Offline
  3. Add Maps component showing driver's location
  4. Display daily earnings and trip count
  5. Add "Go Online" button that updates Driver Status

Step 20: Build Trip Request Notifications

  1. Add new screen "Incoming Request"
  2. Show trip details:
    • Pickup location and destination
    • Estimated fare and distance
    • Rider information and rating
  3. Add timer countdown (60 seconds to respond)
  4. Add "Accept" and "Decline" buttons:
    • Accept: Update Trip → Driver, change status to "Accepted"
    • Decline: Remove request from driver's queue

Step 21: Create Navigation to Rider

  1. Add new screen "Navigate to Pickup"
  2. Display Maps with route to pickup location
  3. Add "Arrived" button:
    • Updates Trip Status to "Driver Arrived"
    • Sends notification to rider
  4. Add "Start Trip" button (appears after arrival):
    • Records Start Time
    • Changes status to "In Progress"

Step 22: Build Trip Completion Flow

  1. Add "End Trip" button to active trip screen
  2. On trip completion:
    • Record End Time
    • Calculate final fare with time and distance
    • Update Trip Status to "Completed"
    • Trigger payment processing
    • Navigate to rating screen

Implementing Payment Processing

Step 23: Configure Stripe Connect

  1. Configure Stripe Connect using Adalo’s component guide — see Marketplace Payments
  2. Add Stripe Connect Account component to driver onboarding
  3. Guide drivers through:
    • Bank account verification
    • Tax information submission
    • Identity verification
  4. Store Stripe account ID in Users → Stripe Account ID

Step 24: Process Trip Payments

  1. Add Stripe Connect Payment component to trip completion
  2. Configure payment splitting:
    • Total amount from Trip → Fare Amount
    • Platform fee deduction (configurable percentage)
    • Remainder transferred to driver's account
  3. Update Trip → Payment Status on success
  4. Handle payment failures with retry mechanism

Step 25: Create Fare Calculation System

Set up base fare structure: Base_Fare + (Distance_Miles * Rate_Per_Mile) + (Duration_Minutes * Rate_Per_Minute) * Surge_Multiplier

  1. Create surge pricing logic:
    • Time-based multipliers (rush hour, weekend)
    • Demand-based adjustments
    • Special event pricing
  2. Display fare estimates before booking

Adding Real-Time Features

Step 26: Implement Location Tracking

  1. Configure PragmaFlow GeoLocation component:
    • Request foreground location only (continuous/background tracking isn’t native)
    • Use a reasonable on-screen refresh cadence (e.g., ~15–30s)
    • Reduce re-renders to conserve battery
  2. Create location update Custom Action:
    • Updates User → Current Location
    • Only runs when Driver Status = "Available" or trip active
  3. Use a Timer to refresh while in the foreground 

Step 27: Build Trip Status Updates

  1. Add status update buttons throughout driver flow:
    • "Arrived at pickup" - Notifies rider
    • "Trip started" - Updates status, starts fare calculation
    • "Trip completed" - Ends fare calculation, processes payment
  2. Each status change:
    • Updates Trip Status
    • Sends push notification to other party
    • Refreshes UI for both rider and driver

Step 28: Create In-App Messaging

  1. Add Chat component to active trip screens
  2. Connect to Messages collection
  3. Filter messages by current trip
  4. Add quick message templates:
    • "I'm here"
    • "Running 5 minutes late"
    • "Can't find you"
  5. Auto-delete messages after trip completion

Building Rating and Review System

Step 29: Create Post-Trip Rating Screen

  1. Trigger rating screen after trip completion
  2. Add Star Rating component (1-5 stars)
  3. Add comment Text Input (optional)
  4. Separate rating flows:
    • Rider rates driver and vehicle
    • Driver rates rider behavior
  5. Update average ratings in Users collection

Step 30: Display Rating Histories

  1. Add "My Ratings" screen to user profile
  2. Show Custom List of ratings:
    • Filter by Reviewed User = Logged In User
    • Display stars, comments, and dates
  3. Calculate and display:
    • Overall average rating
    • Total trips completed
    • Recent feedback highlights

Adding Advanced Features

Step 31: Implement Dynamic Pricing

  1. Create surge pricing zones:
    • Define geographic boundaries
    • Set multiplier ranges (1.0x to 3.0x)
    • Configure active time periods
  2. Check rider location against surge zones
  3. Display surge notification before booking
  4. Apply multiplier to final fare calculation

Step 32: Create Driver Analytics

  1. Build "Earnings" screen for drivers
  2. Display key metrics:
    • Daily/weekly/monthly earnings
    • Trip count and average fare
    • Hours driven and total miles
    • Rating trends over time
  3. Use Custom List with date range filters
  4. Calculate totals using SUM and AVERAGE formulas

Step 33: Add Trip Scheduling

  1. Create "Schedule Ride" option
  2. Add Date Picker and Time Picker components
  3. Store future trips with scheduled pickup times
  4. Use Custom Actions for both: real-time driver updates (e.g., Firebase) and scheduled notifications (e.g., a Zapier webhook) 
  5. Set reminders 30 minutes before pickup

Working with Platform Limitations

Step 34: Handle Real-Time Constraints

Cannot Implement:

  • True real-time GPS streaming
  • Background location tracking
  • WebSocket connections
  • Instant database synchronization

Effective Workarounds:

  • Timer Components (hidden) for periodic refreshes every 10-15 seconds
  • Screen Navigation tricks to force data updates
  • Push Notifications for instant status alerts
  • PragmaFlow Components for enhanced real-time simulation

Step 35: Optimize Performance

  1. Limit driver search radius to reasonable distance (5-10 miles)
  2. Use pagination for trip history lists (20 items per page)
  3. Archive completed trips older than 90 days
  4. Minimize complex database queries during peak usage
  5. Implement data cleanup for better performance

Step 36: Integrate External APIs

  1. Google Distance Matrix API for accurate routing:


    • Custom Action for driving distance/time
    • More precise than straight-line calculations
    • Essential for realistic fare estimates
  2. SMS provider via Custom Actions for messaging:


    • Phone number verification
    • SMS notifications backup
    • Emergency contact features
  3. Background check provider via Custom Actions (Checkr example):


    • Automated driver verification
    • Webhook status updates
    • Regulatory compliance

Testing and Launch Preparation

Step 37: Create Test Environment

  1. Set up multiple test accounts:
    • Verified driver profiles
    • Various rider personas
    • Different vehicle types
  2. Test core user flows:
    • Complete driver onboarding process
    • Book and complete test rides
    • Process payments end-to-end
    • Verify rating and review system

Step 38: Performance Testing

  1. Test with sample data volumes:
    • 100+ active drivers
    • 1,000+ completed trips
    • Various network conditions
  2. Monitor response times and identify bottlenecks
  3. Test location updates under load
  4. Verify payment processing reliability

Step 39: Configure App Store Settings

  1. Prepare store assets:
    • App icons and screenshots
    • Privacy policy for location data
    • Terms of service
  2. Set up app analytics and crash reporting
  3. Configure customer support workflows

Additional Resources

Important Considerations

Cost Breakdown:

  • Adalo plan — prices change; see Pricing
  • Optional Marketplace components — costs vary by seller
  • Stripe fees — see Stripe Pricing
  • Google Maps API: Variable based on usage

Regulatory Requirements: Most jurisdictions require rideshare licenses, commercial insurance, and driver background checks. Research local compliance before launching.

Market Strategy: Adalo rideshare apps work best for niche markets rather than competing with Lyft directly. Consider small communities, scheduled transportation, or specific demographics where real-time limitations matter less.

This Lyft clone will provide core rideshare functionality within Adalo's technical constraints, serving as an effective foundation for market validation and concept testing.

Start Building With An App Template
Build your app fast with one of our pre-made app templates
Try it now
Read This Next

Looking For More?

Ready to Get Started on Adalo?