How To Build A Rideshare App Like Uber | Modern Development Android Tutorial

Welcome to my guide on building a Ridesharing application! Between jobs, to keep my skills sharp, I built a Ride sharing application with driver-passenger chat, google maps, autcomplete destination searching, and directions.

This tutorial simply wouldn't exist without Stream's support (not to mention most of the BE of this app is powered by Stream). If you or your team want to build cross-platform chat experiences, I strongly suggest you try out Stream's Chat SDK. Sign up is easy with a free, 30 day trial:

Starting point repository:

Finished repository:

00:00:00 Overview and Demonstration of the App
00:04:40 Application Architecture
00:07:24 Basic Compose Styles: Fonts, Colors
00:08:08 Building a login UI with Jetpack Compose
00:26:55 State Hoisting With ViewModels
00:28:03 XML Google MapView in ConstraintLayout
00:36:15 How to build a Chat Fragment FAST with Stream Chat SDK
00:43:20 Dependency Injection set up with Simple-Stack
00:46:38 Navigation, DI & Lifecycle management with Simple-Stack
00:53:32 Reactive ViewModel w/ Coroutines, Flows
01:01:25 Building a UI statemachine with Flows and combineTuple
01:06:32 UiState Sealed Interface & how to Collect (observe) it in the View
01:10:40 User management with Stream Chat Client & FirebaseAuth
01:12:51 Configuring Stream ChatClient
01:13:41 Initializing a Stream User
01:19:37 Managing Users in Stream
01:23:29 Managing & Querying Rideshare data with Stream Channels
01:30:09 Realtime Cross-client updates with Stream Channel subscibe
01:33:05 Google Maps & Location Permissions & Setup
01:37:05 Autocomplete Address Search Bar with Google Places
01:41:01 Google Maps Markers, Camera, and Google Directions API
1:48:56 Outro

Topics: Compose UI, XML UI, MVVM Architecture, Coroutines, Flows, combineTuple, Dependency Injection, Navigation, Simple-Stack, Reactive UI, Google Maps, Google Places, Google Directions, Location Permissions, State hoisting, and much more.

Follow me on twitter:

Connect on LinkedIn:
Be the first to comment