
Create a new Xcode project for a Swift iOS chat app, set up MVVM with login and register view controllers, and configure a navigation root.
Build a login interface entirely in code using mvvm architecture, creating a welcome label, profile image, email and password fields, and a vertical stack with constraints and 100% code.
Build the login interface, a system login button with white title, black background, 50 height, corner radius 5, bold 18–19pt font, and wire its action to login; add sign up.
Extend UIButton to apply text attributes for forget password and don't have an account buttons, using foreground color and bold font with alpha adjustments for clear, accessible UI.
Enable the login button only when both email and password have text, via a login view model that updates on text change and adjusts the button background and title colors.
Build and configure the register view controller, enabling navigation from login to register and back, add photo button, style the UI with a white background, and prepare custom text fields.
Create a custom text field in Swift with placeholder styling, background, padding, and secure entry; integrate it into login and register screens using view models and stack views.
wire up the ui image picker controller and delegates, and handle the selected image from info. apply it to the bulge photo button with circular masking and a border.
Create custom label, image view, and button components with configurable text, font, color, alignment, background, and optional width and height for easy one-line use.
Explore integrating core development tools for a Swift chat app: GitHub for version control, Firebase and Firestore for backend, and CocoaPods or Swift Package Manager for libraries.
Install cocoa pods in your chat app project by using terminal commands, including rosetta on mac M1, then run pod init and integrate Firebase storage, Firestore, authentication, and Google sign-in.
Fix pods problem on mac with m1/M2 by updating pods, ignoring warnings, editing pod files, installing pods, configuring arm64 architecture in build settings, cleaning, reanalyzing, and running iPhone 13 simulator.
Learn to update pods and resolve framework issues by migrating to Swift Package Manager, updating to the latest frameworks, adjusting deployment targets, and clearing caches for smooth iOS app builds.
Integrate Firebase into a chat app, enabling email/password and Google sign-in, and configure Firebase as the database and storage, including project setup and AppDelegate initialization.
Create a Firebase authentication module with an auth credential (profile image, email, password, full name, username), implement login and register in a static AuthService, and store user data in Firestore.
Upload a user profile image to Firebase Storage, then register the user and write their email, username, full name, and profile image URL to Firestore.
Implement login with email and password using Firebase authentication within an MVVM pattern and navigate to the conversation view on success, while showing a progress HUD and alerting errors.
Learn to sign in with Google, download the user’s profile image, store it in Firebase Storage, and save its URL to Firestore, with SDWebImage handling the image fetch.
Resolve Google login errors by updating to the latest sign-in method and replacing deprecated functions, extracting the ID token and access token from the user.
Sign in with google, download and save the profile image, upload it to firebase storage, and write user data to firestore using a google credential.
Fetch user data from Firestore using a user model and service, and implement a splash view controller that routes to login or chat based on Firebase auth state.
Upload your Firebase-enabled app to GitHub by creating a private repository, configuring a personal access token, and pushing with git init, add, commit, and push.
Build a real-time chat app with socket connections and Firestore storage for messages, images, and conversations. Start conversations, fetch users, and exchange data in real time via a Firestore API.
Add a right bar button item to present a user selection view and build a navigation controller–based flow with a search bar, a table view, and a fixed row height.
Create a custom table view cell named ConversationCell, add profile image, full name, recent message, and date labels, arrange with a vertical stack view, and register the cell.
Create a custom user cell with a profile image, username, and full name arranged in a vertical stack. Integrate it into a table view via delegate and data source.
Rename the chat group to conversation, create a chat view controller as a collection view controller, and build a chat cell with a profile image, bubble container, and text view.
Build chat cells by configuring the bubble container with corner radius and top/left/right anchors, add a date label, and initialize the collection view for a WhatsApp-style chat.
Configure the chat cell with a flow layout and delegate flow layout, set 15-point section insets, and add sample messages for a view model-driven architecture.
Build a custom input text view with a placeholder, padding, dynamic height, and divider for a chat interface in a Swift iOS mvvm app.
Develop and wire a whatsapp-style input view by adding a send button, implementing a delegate to upload messages, and updating the chat while clearing the input after sending.
Fetch all users from Firestore, filter out the current user by uid, and use mvvm to present the remaining users for chat and open a chat with the chosen user.
Build a live chat between users using Firestore, sending messages as a dictionary with a string key and any value, including date, sender profile image, and uid; fetch latest message.
Create message services to fetch messages, fetch recent messages, and upload messages via a Firestore collection with a timestamp.
Create a message model for a Swift iOS chat, including text, sender and recipient IDs, timestamp, and user details; enable Firestore upload and current user checks to render conversations.
Create a message view model and implement an API to fetch messages, enable live updates via snapshot listeners, and order by timestamp for chat cells.
Configure the message view model in the chat cell, wiring message text, colors, timestamp, and profile image, then reload data to fetch recent messages and establish socket communication.
Fix the message timestamp by correcting the date format and applying a 12-point system font to the date label, then verify across all chats.
Fetch recent messages from firestore, add a socket listener, and update the conversation list with the latest messages; support selecting a user to open chat and display user data.
Build an unread message feature like WhatsApp and Telegram across three devices, showing per-conversation and total unread counts, updating Firestore when messages are read.
Create an unread label in the conversation cell, style it with text, color, font, and rounded corners, and position it beside the date using a vertical stack.
Build unread message logic for chat with sockets and Firestore. Upload new message data with profile, username, and full name; fetch recent messages; reset unread count when the chat opens.
Implement unread message tracking by initializing new messages to zero and updating the other user's unread count in Firestore, while fetching the message before sending and incrementing on new messages.
Learn to implement unread message counting in a Swift iOS MVVM chat app, updating the view model and conversation cell to show or hide the unread label and badge.
Mark read all messages updates the unread count to zero and updates the recent message status in Firestore, triggered by the chat view controller on open and close.
Group chat messages by date into sections and support multiple date sections. Pin and reorder sections to the top, creating a WhatsApp-style chat interface with MVVM and Firestore socket.
Group chat messages by timestamp in a mvvm swift iOS app, converting timestamps to strings with a date extension and restructuring arrays for grouped display.
Sort grouped chat messages by timestamp in descending order and assemble values into the display, handling optionals and duplicates. Outline multi-section headers by date and the upcoming header table view.
Create a shared chat header as a collection view section header. Register, dequeue, and configure a custom header with a date label, and set its size and bold style.
Learn to pin the chat header, scroll to the latest message automatically, and refine the collection view layout with a date-based section header, keyboard dismissal, and responsive UI tweaks.
Learn how to share photos and videos in chat by attaching media from camera or gallery within the chat view controller, enabling viewing, zooming, and uploading of media.
Switch between Firebase test mode and live mode to preserve Firestore data, configure data retention rules, and publish changes; manage dependencies and git workflows with Swift package updates.
Create attach and record buttons in a custom chat input view, wired with actions, and control post, attach, and record visibility based on text changes via notifications.
Create an attach alert for the chat interface by wiring a new input protocol, a custom input view, and presenting a UI alert with camera, gallery, location, and cancel actions.
Implement an image picker in a chat view controller, adding a separate file, configuring camera and gallery sources, handling image picker delegates, and setting privacy permissions in info.plist.
Select an image from the camera or gallery and determine media type as public.image, then upload it to firebase using a function after enabling camera and gallery permissions in info.plist.
Upload an image to Firebase storage, obtain its URL, and save it in the chat message in Firestore; update unread counts and adjust privacy flags.
Upload videos to Firebase from camera or gallery in a Swift iOS mvvm chat app, including microphone access. Convert to mp4 and store video url in Firebase storage.
Implement video playback in chat by adding a chat cell delegate and passing a video URL, then present a dedicated AVKit video player to play the Firebase-hosted video.
Learn to display images from camera or gallery in a chat app via tapping image cells, download with a web image manager, and prepare an image slideshow.
Master building an image slideshow with the image slideshow library in Swift iOS, supporting multiple images, fullscreen viewing with zoom, and video playback alongside camera or gallery uploads.
Learn how to implement voice recording for chat messages in a Swift iOS app, including start, cancel, send, and playback within a simulated WhatsApp-style conversation.
Create a record stack in a custom input view, with cancel and send buttons and a timer label, and toggle between the record stack and the original chat input stack.
Implement a repeating one-second timer for the record view to update a timer label and track duration, converting it to hours, minutes, and seconds, with an AAC audio recorder model.
Develop and test a voice recording feature in a swift ios app, implementing a cgfloat time formatter, timer updates, start/stop recording with a shared audio recorder, and mic permission setup.
Capture the latest recording, delete prior files, and obtain an audio url to upload to Firebase using the existing image upload workflow.
Upload audio to Firebase in chat, update message with the audio URL via the message service, show a loader during upload, and set up playback with Swift Audio Player.
Learn to play and stop audio messages in a chat by uploading audio to Firebase, wiring a play audio button, and syncing the user interface with the view model.
Learn to send current location or Google Maps location in chat, open deep links for navigation, and simulate fake locations on a simulator or real devices.
Create and apply fake locations in the iOS simulator by adding a custom location like Times Square with lat and long, then test on the simulator and device.
Create a location alert in the chat view with options for current location and Google map, using a singleton location manager that handles permissions and provides coordinates.
Upload a location to Firebase by sending latitude, longitude, and a location url, enabling a deep link to open Google Maps directly from the chat.
Learn to post a location to Firebase and open it in Google Maps, handling percent-encoded URLs and app availability, with a fallback to the browser for seamless navigation.
Add Google Maps to a chat map view in an iOS app using MVVM. Install the SDK, configure the API key, and wire the map view into the chat flow.
Configure Google Maps with the current location, set up the map view and location manager, add markers, and update the camera to enable my location features for interactive navigation.
Add a send location button to select and transmit a location from Google Map to the chat view using a delegate, updating the map camera and marker along the way.
Learn to build and edit a user profile with image, name, username, and email, then update and propagate changes across the app, including uploading a new profile picture.
Learn to build an edit profile screen in a Swift app, displaying and updating profile image, full name, and username, with a profile view controller and responsive layout.
Build and register a profile cell in a profile view controller, display user data in a table view, and load the profile image from firebase with correct aspect fill.
Configure a profile screen by creating a profile view model, defining a profile field enum, and populating full name, username, and email rows from Firebase data in a table view.
Create an edit profile flow in ui kit, adding an edit button and edit profile view controller, with navigation and integration notes for mvvm, swift ui, and firebase.
Create an edit profile UI with full name and username fields, a profile image view, and an image picker using a tap gesture, preparing data for future API updates.
Implement an api to update user data on firebase, retrieving the current user uid, uploading a profile image when available, and updating firestore with full name, username, and image url.
Learn to parse data with notification center, enabling a one-to-many data flow by creating a custom extension, posting updates, and observing profile and conversation views to sync data.
Learn to enhance a chat app with a search controller to find users by name or username, fetch all conversations, show empty-state hints, swipe-to-delete conversations, and add an app icon.
Create and configure a search controller in the chat view, set a placeholder, attach it to the navigation item, and implement the search updater and search bar delegate.
Configure a search controller to filter conversations by username or full name using lowercase contains; manage cancel button visibility, edit states, and table view updates.
Configure filter conversations in a table view by toggling a search mode with the search controller, then switch between filtered and normal conversations using indexpath.row.
Add a UI search controller to filter new contact by user name or phone name, update results, and manage the table view and console in a UIKit-based contact search feature.
Implement an empty conversation view in a chat interface by creating an empty view and label, configuring layout, and toggling visibility when no messages exist.
Add an empty view to the chat when there is no conversation, wire its visibility to messages, and adjust bottom padding to 70 while preparing swipe-to-delete for conversations.
Enable swipe-to-delete in the conversation list by implementing table view editing, canEditRowAt, and commit editingStyle to remove the row locally, with a note that deletion isn’t yet applied to Firebase.
Learn to implement a Firebase delete API for a chat app, deleting all message documents and the recent message entry, by iterating conversation documents and removing the referenced records.
Learn how Firestore test mode data retention works and how to extend retention by adjusting rules to future dates, then publish changes to protect data.
Add the app icon and logo, set up the launch screen in the storyboard with a centered image view, and commit and push changes as you complete the chat app.
welcome everyone to Swift & iOS | WhatsApp Chat | MVVM | Firestore socket course
here you'll build a complete chat app like WhatsApp and any chat app,
That is the only course have all these features in one course, in this course you're building 100% code without a storyboard at all
In Addition, build create custom UIview components like labels images in one line, also you'll build and learn:
build an app using Swift UIKit and MVVM pattern
add the firebase as the backend
create socket chat connections between all the users
login in with the user / with Google sign in
Add unread message count to the user for the count for all unread massages
separates all the conversations by the days
add share media Photos and videos from Gallery or from Camera
record your nice voice in the chat
Share location by current location or from Google maps
edit your profile
add search controller and delete the conversations
parse the data between controller one-to-many and many to many
==========================
At the end of this course, your level in Swift will be increased and you'll able to build apps in UIkit 100% without Storyboard, we'll focus to build awesome UIview components in the best ways
and of course, you can add this app or add this chat module to your project and publish it to the AppStore