
Set up a Tinder clone project in Xcode, organize MVVM folders, and configure the root view controller programmatically with UIKit, replacing storyboard.
Build the home page top navigation bar using a custom HomeNavigationsStack and programmatic constraints in Swift, with assets and an anchor extension for layout.
Finish up the home page base ui by building a deck of card views and a bottom controls stack, configuring stack views, buttons, images, and layout constraints programmatically.
Create a deck view container and add two card views to form a swipeable tinder-style ui, using image views, labels, and an info button with rounded edges.
Finish up the card view UI by adding the name and age info label and an info button, and implement a gradient layer to improve text visibility.
Implement a pan gesture recognizer to track card translation and rotation via a transform, enabling left-right swipes, with a tap gesture to change photos.
Learn how to reset the card position with a spring animation, using a resetCardPosition helper and pan gesture recognizer, returning the card to center after an incomplete swipe.
Add a swipe direction enum, implement threshold logic, and apply offscreen animations to dismiss and remove the card from the superview.
Create a user model and a card view model to populate swipe cards with a user’s name, age, and images using the mvvm pattern in Swift.
Refactor the card view by extracting the user info text into the view model as an attributed string, and wire the info label to the view model for dynamic display.
Learn to cycle through a user's photos in a Tinder clone app by tapping left or right, managing an image index in a view model, and guarding array bounds.
Build login and registration controllers, wire up backend authentication for signup, login, and logout, and design a gradient, navigation-backed UI with reusable text fields.
Refactor to create a custom text field subclass in a Swift MVVM app, initialize with a placeholder, configure isSecureTextEntry and dark keyboard, and reuse across login and registration controllers.
Design a custom authentication button for the login screen, apply styling and validation, and enable navigation to the registration screen via an attributed button.
Create a reusable authentication registration UI in Swift, with a select photo button, text fields, and a gradient background, wired via a view controller extension.
Implement an image picker to select a profile photo, display it on photo button, and style borders, corner radius, and content mode while setting up validation via a view model.
Explore form validation with a Tinder clone app, building login and registration models, a protocol, and text field observers to enable the sign-up button.
Set up Firebase as the app backend by configuring authentication, Firestore database, and storage, and wire the iOS project with the GoogleService-Info.plist, CocoaPods, and project setup steps.
Register users with Firebase authentication, upload profile photos to storage, and store user data in Firestore; use a dedicated service layer and credentials struct to manage uploads and sign-up flow.
Learn to configure a route view controller that keeps users logged in with Firebase authentication. Present the login screen when needed and manage sign-up, sign-out, and root view controller transitions.
Implement login with email and password in the auth service, handle results with a completion block, and dismiss the login controller to return to the home interface.
Fetch current user data from Firebase by querying the users collection with the user id and display the resulting full name, age, email, and images.
Create a user object from Firebase data by initializing from a dictionary and mapping keys like full name, age, email, id, and profile image for MVVM card views.
Fetch all users from firestore by iterating document snapshots into user models, return a single completion, and use a static service to prevent duplicates, enabling cards population.
populate the view model array by mapping database users to card view models and configure the deck once data arrives, displaying each user's name and age.
Load and display each user's profile image on the card deck by integrating the sd web image pod, converting url strings to urls, and leveraging image caching for performance.
Use a protocol and delegate to present settings table view controller from the home navigation stack, wiring taps to delegate methods and conforming to the protocol in the home controller.
Build the settings page for a Tinder Firestore Clone by configuring a navigation UI, adding a settings header with photo-select buttons, and implementing cancel and done actions.
Implement photo selection for header buttons using a delegate protocol and image picker to update the correct button with the chosen image.
Learn to build a static settings table in a tinder firestore clone using mvvm, with extensions for datasource and delegate, a view model enum for sections, and dynamic, maintainable data.
Explore building a reusable settings cell user interface with text fields and sliders, using a view model to populate fields and manage layout, including row heights and helper slider setup.
Learn to build a settings view with MVVM in Swift, implementing a settings view model to manage age range sliders and labels, and wire it to a fetched user.
Populate setting cells with user data using a view model, set placeholders for name and profession, bind fields, handle optional bio and age range, and prepare data for database upload.
Update user info by handling text field end events via a delegate protocol in settings, updating name, age, profession, and bio, and syncing with the home controller.
Update age preferences with a UI slider in the settings cell, syncing min and max age labels via the view model, and persist the changes to the user model.
Modify the database and code to store user photos as an array of image URLs, updating the user model, service, and view models to support multiple photos.
Upload additional user photos and persist them in the database by saving image URLs in a list; update the user model and save data to the database with a service.
Implement logout by adding a settings section with a logout button and a delegate protocol to handle dismissal by the settings controller and return to the login flow.
Cycle through user photos stored in the database by using image URLs, tracking the image index, and displaying a top segmented bar that indicates the current photo.
Show a user profile by wiring the card view's info button to a profile controller via delegation, initializing with a user, and presenting full screen.
Set up the profile UI with a horizontally paging collection view for user photos, register and dequeue profile cells, and add dismiss and action controls with bio and profession labels.
Create a profile view model to populate the profile with user data, including image count and attributed details, and render the profile image and bio in the profile controller.
Finish the profile by adding a segmented bar at the top, refactoring into a reusable segment bar view driven by the view model to render segments and highlight selected index.
Wire the bottom controls stack's like and dislike actions to the home controller via a delegate protocol, implementing handlers and preparing to save swipes to the backend.
Manage a top card from a deck of card views to handle button swipes, then update the top card and animate left or right swipes for likes and dislikes.
Save swipes to a Firestore swipes collection, marking like or dislike with 1/0 (or true/false), and create or update the document to support matches and avoid duplicates.
Save left and right swipes to the database by delegating swipe handling from the card view to the home controller, updating the data model, and maintaining clean MVVM separation.
Implement like or dislike from the profile screen via a delegate, dismiss the profile, run the swipe animation, and save the swipe to the database in the home controller.
Fix image flicker by applying a white card background and exploring image prefetching, and implement an authentication delegate to refresh the current user and cards after login or sign-up.
Fixes a duplicate user fetch and implements query filters to omit the current user from the deck, using age range logic (men seeking age, max age) to refine results.
What are we building?
In this course, you will learn how to build a complete version of Tinder ready to be published on the App Store. Throughout the process, you will develop high level programming, app design and app development skills. We will be building this without the use of storyboards, fully programmatically.
Prior Experience?
Some programming and basic Xcode experience is preferred. The course will move a little fast if you're a complete beginner, but you will pick things up along the way.
Why take this course?
Learning advanced development skills should be taught using real world examples. This course will teach you how to build a fully functional dating application, from complete scratch. You will be learning advanced front and backend development skills, 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. This also makes for a great project to add to your portfolio, which you can use to show off to potential employers if you're trying to become a pro.
What will you learn and what features are included?
User Authentication with Firebase
Swiping capability to like or dislike users
Match with users
Like or dislike with action buttons
Upload multiple profile photos
Ability to cycle through user photos
User profile page that displays user information and contains all user photos
Ability to like or dislike user from profile page
Change user information from settings page (photos, name, bio etc..)
Model View ViewModel (MVVM) Architecture
UI is built fully programatically without the use of storyboards
Reusable custom view subclasses and extensions that you can use in any app
Assets that are exact replicas of tinder icons and images
Comprehensive knowledge and understanding of Swift 5 & Xcode 11
Advanced level programming and app development skills
Advanced level User Interface Design
Advanced level back end engineering
How to authenticate and register users with Firebase
How to communicate with a database (Firestore)
How to monitor events in a database
How to upload images to Firebase
How to structure data for optimum performance
How to build a fully functioning dating mobile application
How to programmatically construct views and controllers
How to parse incoming JSON data from database
How to use CocoaTouch classes, UIKit, UserNotifications and more
How to use CocoaPods and custom third party APIs
How to implement/use protocols and delegates
How to implement custom subclasses for clean and reusable code
How to dynamically size collection view cells
How to create extensions and functions for clean and reusable code