
Build the location search UI for a SwiftUI Uber clone. Create a location search activation view, a results list, and a map view action button with spring animations.
implement local search with MapKit's local search completer, bind a query fragment to a SwiftUI text field, and update real-time results showing title and subtitle.
Learn how to dismiss the location search view, select a location, store it in a location view model, and pass it back to the Uber map view to generate routes.
Convert the selected location string into coordinates using MK local search completion. Perform a local search to obtain latitude and longitude, then generate map view annotations.
Add and select map view annotations using coordinate data from the chosen location. Remove existing annotations, then auto-zoom the map to fit user location and destination with animation.
Generate a route from the user location to the destination using a directions request, then render the resulting polyline as a map overlay on the map view.
Manage map view states with an enum for no input, searching for location, and location selected; use bindings and a back action to clear overlays and recenter.
Build the ride request view UI in SwiftUI, including trip info, ride type selection, payment option, a request ride button, and a scrollable Uber X and Uber Black options list.
Fixes a map view bug by clearing selected location on exit and introduces a ride type enum with descriptions and images for Uber X, Uber Black, and Uber XL options.
Implement a pricing data model for ride types with a base fare and distance-based calculation, using a shared location manager to compute and display prices.
Populate the ride request view with the selected location's title and coordinate, compute the trip time from now, and format the pickup and drop off times for display.
Debug a retain cycle in the map view by introducing a new map state polyline added to stop repeated annotation creation, then implement dark mode with a color theme.
Build a complete login and sign-up UI in swiftui, including email/password fields, social sign-in options, forgot password, and firebase-backed authentication to register and sign in users for an uber-style app.
Polish and refactor the registration view by creating a reusable custom input field in SwiftUI using bindings for text and configurable title and placeholder, plus an optional secure field.
Navigate login and sign-up with swift ui navigation stack and a back button. Set up firebase auth and firestore by creating a project and enabling email/password.
Explore implementing an authentication view model in SwiftUI, wiring Firebase authentication to manage a user session, login, registration, sign-out, and conditional home or login views.
Register a user using the authentication view model, collecting full name, email, and password, handling Firebase sign-up callbacks, and routing to the home view on success.
Learn to sign out and sign in with Firebase, manage user session via an environment object, and update the UI in real time when the session changes.
Upload user data to Firestore by modeling a user, encoding it, and saving it under the users collection with the Firebase user UID, enabling profile access for drivers and riders.
Fetches the current user's data from Cloud Firestore, decodes it into a user object with the firebase decoder, and displays it in the side menu and settings.
Build a SwiftUI side menu for an Uber clone, featuring a profile header, saved locations and settings, and a for each driven options list with trips, wallet, settings, and messages.
Implement a scalable side menu in SwiftUI by toggling a show side menu binding, using a ZStack with the map view, and enabling navigation.
Learn to implement side menu navigation with SwiftUI's navigation stack, connecting menu options to detail views and injecting the current user for a personalized, data-driven UI.
Build the settings page in SwiftUI, reuse the location search view to add home and work locations, and organize sections for user info, settings, and account with reusable rows.
Enhance the settings page with a navigation title and back button, add header padding, and inject the user into settings; implement sign out via an environment object view model.
Implement saved location navigation in the settings page using an enum for home and work, with a view model and navigation links to a location search view, updating the subtitle.
Create a reusable SwiftUI location search flow with saved location search view and location results view, decoupling map state and supporting ride and save-location configurations.
Save user locations in a SwiftUI Uber clone by creating a saved location object with title, address, and geo point coordinates, then upload it to Firestore, supporting home and work.
wraps up the settings page by displaying home and work locations in the subtitle, using a view model function to show titles or add prompts, and tidying the user interface.
Set up driver accounts by adding an account type enum (passenger or driver) to the user model as a mutable property and use developer preview extension to supply mock data.
Fetch drivers from Firestore for display on the map by querying where account type equals drivers, and update the current user data after sign in to ensure accuracy.
Fetch drivers from the database and display them on the passenger map view by using a home view model as an environment object, mapping coordinates to map annotations.
Learn to render custom driver annotations on a map by building a DriverAnnotation class, initializing with geo points, mapping drivers to annotations, and customizing the annotation view with a chevron image.
Refactor fetch logic to fetch drivers only for passengers by introducing a shared user service, sharing user data between view models, and using combine to publish a user for efficiency.
Build a driver side accept trip view in SwiftUI that shows passenger details, pickup location with a map pin, earnings, and accept or reject actions.
Define a trip data model with passenger and driver data, coordinates, pickup and drop-off locations, and cost, then refactor view models to centralize location data in the home view model.
Extend the home view model with passenger and driver APIs, implement a request trip flow, and upload the trip to Firestore, including reverse geocoding for pickup addresses.
Validate the current user as a driver, fetch relevant trip requests from Firestore by driver uid, and prepare the ride data for display and later acceptance.
Learn to present the accept trip view when a driver receives a trip request, using the home view model to publish the trip and show pickup location on the map.
Polish the accept trip view user interface by finishing data population, including travel time to the passenger, distance, pickup address, and trip earnings.
UBER SWIFTUI | iOS 16
Welcome! In this course you will learn how to build a fully functioning clone of the famous Uber application. We will be building this app from the ground up with the amazing SwiftUI! Check out some of the awesome app features below
App Features
Display current user location on a map
Display nearby drivers on a MapView
Drivers can receive ride requests and accept trips that users request
User Authentication with Login/Sign Up/Sign Out functionality
Create different user types (passengers and drivers)
Request rides from nearby drivers
Two separate user flows for passengers and drivers
Save preferred user locations
Search for nearby locations with auto-complete functionality like in Apple Maps
Get directions to a location
Dynamic map view that follows user location
Side Menu feature
User profile/Settings page
Custom built backend database with Cloud Firestore
Darkmode support
Different ride types (UberX, UberBlack, UberXL)
Custom pricing model
WHY TAKE THIS COURSE?
Learning advanced development skills should be taught using real world examples. In this course you're going to learn to code from a real life, professional developer. You will learn how to code like a pro, and everything will be explained in detail along the way. This will teach you to build production ready applications, that are easily scalable and maintainable.
Who this course is for:
People who want to build advanced iOS apps!
Those who want to create their own startup
Those looking to get a full time job as a developer
Business owners
Students & teenagers
People who want to make money building apps
Who this course is for:
If you have basic experience with iOS development take this course
If you have basic experience with iOS or mobile development then take this course