
Implement a login screen UI using extension functions to simplify constraints, center the icon, anchor to the safe area, and stack email and password containers with a styled login button.
Refactor your login UI by introducing an input container view and a custom text field to reduce repeated code, enabling reusable, clean, and scalable email and password fields.
Finish the login screen UI by styling the login button with a color literal and white text, and enable navigation to the sign-up screen.
configure a gradient layer in the registration controller, reuse login user interface components, and add a plus photo button with an image picker for a profile photo.
Set up Firebase for the chat app by enabling email/password authentication and using Firestore for data storage. Integrate the Google service plist, install CocoaPods, and configure Firebase in AppDelegate.
Learn to register a user with Firebase: authenticate, upload the profile image to storage to obtain its URL, then save the user data in Firestore under the user document.
Build a custom user cell UI with a profile image and two labels in a vertical stack, anchored for the chat list, and fetch and populate users from the database.
Populate table view cells by mapping the fetched users array to rows, displaying each user's profile image and user name, and loading images from URLs with caching.
Fetch messages from Firestore in real time for a specific user, using a query ordered by timestamp and an addSnapshotListener to populate a chat controller with parsed message data.
Learn dynamic cell sizing for chat messages in a collection view by using an estimated size cell, bottom bubble anchors, and system layout size fitting, with scrolling to newest messages.
Implement action handlers for profile options using an enum driven did select approach, routing to account info and settings pages, with a logout flow via delegates and alerts.
What are we building?
In this course, you will learn how to build a real time chat application using Firestore and Swift, 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.
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 messaging app, that's completely ready to integrate into any one of your iOS Applications. 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, writing clean, scalable and maintainable code. 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.
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 build a fully functioning messaging interface
Comprehensive knowledge and understanding of Swift 5 & Xcode 11
How to Implement Model View ViewModel (MVVM) architecture
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 (read/write)
How to monitor events in a database
How to upload images to Firebase
How to structure data for optimum performance
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
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