
Set up a new Xcode project using storyboard, organize the code into groups, and configure a login screen inside a navigation controller with a gradient background using UIKit.
Download the Extensions.swift and Assets file here
Create a login screen UI by programmatically building email and password text fields, styling placeholders, colors, and secure entry, and arranging them with a stack view and layout anchors.
Design the sign up UI with a registration controller, email field, full name field, and sign up button. Connect it to the login flow via a navigation controller.
Create a reset password ui by building the reset password controller, wiring the button to send a reset link, and styling with a gradient background.
Learn login form validation with a view model by adding form validity, enabling login button, and updating button background and title colors on text changes using a ternary operator.
Finish up form validation by introducing authentication view model protocol to standardize form validity and button enablement across login, registration, and reset password models, paving the way for Firebase signup.
Add Firebase to your iOS project, enable email/password and Google sign-in, store user data in Firebase, configure with FirebaseApp.configure, and install pods to connect to Firebase servers.
Set up google sign-in for a firebase-based iOS app by integrating the google sign-in pod, configuring app delegate with the client ID, and adding the url scheme to info.plist.
refactor api calls into a dedicated service with static methods for login, register, and sign in with Firebase, using completion handlers to keep controllers lean.
Build an iOS onboarding flow using the paper onboarding library, configuring a three-page animated intro that appears on first login and leads to the main interface.
Implement an onboarding view model to keep the architecture consistent and control the get started button. It initializes with onboarding items or a count and discusses model tradeoffs versus controllers.
Create a user data model with an onboarding flag, integrate Firebase user data, and fetch user details via an API to determine whether to show onboarding.
Implement a programmatic welcome label that displays the current user's name with an animation, configuring UI, setting initial alpha to zero, and fading in after login.
Learn how to implement a reusable loading indicator for API calls using a static HUD in a UIViewController extension, applying it to login, registration, and reset password flows with Firebase.
Create a user with cloud firestore, fetch the user’s information, and understand the users collection with documents and an id field, comparing firestore to the real-time database.
Fetch user data from Firestore by implementing a fetch user with Firestore function, retrieving a user dictionary and onboarding state, then update onboarding using update data to avoid overwriting.
What are we building?
In this course, you will learn how to build a user sign up, login and onboarding feature using Firestore and Swift. We will also go over how to integrate Google Sign In, and will be usingn the MVVM architecture patter. 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.
Why take this course?
User authentication is a requirement for a wide range of mobile applications. This course will teach you how to build an amazing user interface with great functionality, that is also very intuitive and very easy to use. You will be also be learning some great fundamentals of programming along the way, including how to use the MVVM architecture, creating custom subclasses, and more. You will learn how to code like a pro, writing clean, scalable and maintainable code. This can also serve as a login / signup template for your future applications. The code base is extremely easy to integrate into other applications, and covers both versions of Firebase databases (Realtime Database and Cloud Firestore). You can't go wrong with this one!
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.
What will you learn?
How to sign a user up with Google
How to sign a user up with email / password
How to log a user in with email / password
Comprehensive knowledge and understanding of Swift 5 & Xcode 11
How to Implement Model View ViewModel (MVVM) architecture
How to build a User Interface programtically with UIKit
How to use stack views intelligently
Advanced level programming and app development skills
Advanced level User Interface Design
How to communicate with Firebase Realtime Database (read/write)
How to communicate with Firebase Cloud Firestore (read/write)
How to structure data for optimum performance
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
How to implement custom subclasses for clean and reusable code
How to create extensions and functions for clean and reusable code