
Build a real estate platform where agents post properties for sale or rent, and users log in to browse, favorite, view details, contact agents, and manage top ads with coins.
set up firebase authentication with phone and email verification, review sign-in options, and configure database and storage with security rules for the iOS project.
Finish setup by creating a bridging header to link Objective-C code to Swift in Xcode, integrate Firebase for the backend, and build the project to run wirelessly on a device.
Generate and configure iOS push certificates for OneSignal by creating an app, enabling push, exporting a production p12 certificate, and uploading it to OneSignal and Firebase.
Create a register view controller in a storyboard, add a phone number field and a code field, a close button, and arrange them with a stack and constraints for firebase.
Fix Xcode import errors and reintroduce the registration view controller, building a UI with email, name, last name, and password fields, secure text entry, clear buttons, and a register button.
Create a Swift Firebase user model with object id, push id, timestamps, coins, personal and contact details, and a role flag; implement initializers and a dictionary representation for Firebase.
Create a Swift date formatter in a separate file to convert a created at string into a date. Read Firebase data with a fallback to the current date when missing.
Learn to build a Firebase-backed user class in iOS Swift, manage object id and push id, and save and fetch the current user via class functions and user defaults.
Register a user with email and password via firebase authentication, handle errors, create a user object with first and last name and id, then save to user defaults and firestore.
Learn how to implement user registration by validating email, first name, last name, and password, handling errors, and transitioning to the main view in an iOS 11 Swift 4 app.
Register a user with a phone number using firebase authentication, handle verification codes, sign in with credentials, and fetch or create the user in firebase database via helper functions.
Learn to register a user by phone number, fetch or create a firebase user, and save or update local data while guiding the user through a two-step finish registration flow.
Register for push notifications in the app delegate, request alert, badge, and sound permissions, handle device tokens, and test remote and silent notifications on a real device.
Register the first user by validating the phone number, sending a verification code, updating the user interface to accept the code, and handling errors to complete login or registration.
Finish registering a user with phone number by debugging Firebase phone authentication, switching to the new provider function, and configuring Google client id in the app target's Info tab.
Create and export a developer and production certificate from keychain, then upload them to the developer page to fix push notification issues.
Obtain the OneSignal ID by detecting a logged in user, registering with Firebase, and using notification center to post and observe login events, then save push token in user defaults.
Update the current user by applying a key-value dictionary to one signal id and firebase, while syncing to user defaults on a background thread with a success callback.
Update a current user's OneSignal ID by implementing add and remove flows, persisting push IDs in user defaults, and syncing updates to the user object.
Build the recent properties tab in a tab bar iOS app using a collection view and a navigation bar, with cells showing images, labels, and icons for property details.
Configure constraints for images and labels to build a UI showing bedrooms, bathrooms, parking, and a price tag, and implement a reusable custom cell.
Learn to build a property model in Swift for iOS 11, configure a collection view cell, and implement create, read, update, and delete operations with Firebase.
Develop the recent view controller by conforming to collection view data source and delegate protocols, using a property array to populate reusable cells with title, rooms, bathrooms, parking, and price.
Develop the add property view controller user interface by wiring controls, configuring a top bar and scroll view, adding a search field, and applying constraints for map pin actions.
Explore building the add property interface by configuring constraints, adding required text fields (reference number, title, price, property type), a description view, switches, and location buttons.
Master configuring the property view controller interface by setting top and horizontal constraints, adjusting scroll view spacing, centering content, then implement a PropertyController subclass to manage the recent controller.
Connect the scroll view to the view controller, configure its content size and frame based on the screen size, and validate scrolling across the top view sections.
Connect and wire outlets and actions in the view controller, linking text fields, switches, and two buttons (camera and save) to avoid runtime crashes, and configure assets and constraints.
Create and manage property settings with boolean switches, lazy variable setup, and a save workflow that validates fields and enforces agent versus normal user posting limits.
Create and validate a new property in Swift by mapping user inputs to the property model, converting price text to an integer, and saving with features like balcony and heating.
Develop and fix sold status and top status UI for property listings by implementing sold checks, image loading with placeholders, and top-date logic to display or hide top properties.
Learn to trigger a mixer button in the recent view controller by presenting an alert with text fields to set the number of properties and update the view.
Implement a favorite properties feature by wiring the start button to a delegate, confirming a logged-in user, and toggling a property's object id in the favorites list.
Explain how the star button in the property cell updates based on the current user and favorites, changing the star image when adding or removing properties.
Learn to implement a multi-image capture flow for properties using a third-party image picker in Swift, including delegation, pod setup, and privacy prompts for camera and photo library.
Fix the camera class bug by correcting the photo library usage privacy key, load images from the library, and ensure delegate functions handle image selection as users tap images.
Implement a camera class that collects an array of images, saves them with a save function, and uploads property images, then prints image counts and returns to the main screen.
Create download and upload image functions with Firebase storage, split a long comma separated string into links, download images asynchronously, and trigger a callback when finished.
Learn to implement an image upload function using storage references, file naming, and put data with a completion handler, then obtain the download link and manage an upload counter.
Debug image upload in real estate app by tracing the save property flow and uploading images to storage. Fix character limits by switching image links to text to support urls.
Download the property images from Firebase, display the first image from the images array, and hide the loading indicator when the download completes.
The lecture covers setting up a new iOS project and implementing picker views for property type and advertisement type, with save progress feedback and location manager setup.
Learn to wire up multiple pickers in iOS using Swift 4, including year, date, and property type pickers, a toolbar with flexible space, and connecting them to text fields.
Create functions to generate picker titles and apply selections. Update fields for property types and year pickers, convert year integers to text, skip the 'Select' option, and update the URL.
Fix a text field bug by adding a date changed selector, tracking the active text field, and formatting the selected date for real-time updates.
Explore implementing a location manager in iOS using Swift 4, handling authorization states, starting and stopping updates, and updating coordinates for current or picked locations.
Learn to save a property with location in an iOS app by requesting location permissions, capturing coordinates, handling images, and persisting latitude and longitude.
Configure a map view controller via the storyboard, constraints, and outlets, then implement a long-press gesture to drop a single pin by converting screen coordinates to map coordinates.
Practice mapping on iOS by dropping a pin with a long press to print and save coordinates (latitude and longitude) to a property, confirming map functionality on device and simulator.
Build a property detail screen with labels for title, price, size, rooms, features, description, address, and a map view inside a scroll view; hide unused sections.
Apply auto layout constraints to internal views—top, bottom, left, right; set width and height; then instantiate and present the property view controller via storyboard identifiers.
Learn how to connect and embed an image in a scroll view, adjust constraints, and manage an activity indicator while refining the interface in iOS 11 with Swift 4.
Learn how to set up and connect user interface elements in a property listing view, including linking scroll views, labels, text fields, address, map, and back and next actions.
Implement a property view controller by configuring image scroll view, content size, and dynamic width, passing index path properties, and debugging constraints to display multiple images.
Run the property view test to demonstrate loading property images, displaying the property title, and enabling paging in the image scroll view via storyboard tweaks, ensuring smooth image switching.
Learn to manage a location property with images and map interactions, set a new property with title, type, and optional apartment, and adjust the main scroll view content size.
implement a favorite view controller for an iOS app by wiring collection view data source and delegate, loading a user's favorite properties, and presenting property details on selection.
Load and display favorite properties by calling a load properties function on appear, and fix the where clause to use object id in curly braces.
Learn to manage favorite properties by checking current user, presenting login or register when needed, and removing a property from favorites with index handling, saving updates, and reloading properties.
Remove print statements, fix crashes when removing favorites, and implement a no favorite properties label outside the collection view. Manage constraints, outlets, and visibility to show when no properties exist.
Debug and fix bug in favorite property star button by correcting id comparison from owner id to object id, ensuring adding and removing favorites updates the array.
design the my properties ui for a real estate app, set up the top bar, action buttons, and a properties collection with favorites, linked to my properties view controller.
Write a function to fetch properties owned by the current user, assign them to the properties array, and refresh the collection view; implement a menu for selling and editing.
Learn how to manage properties in an iOS app using Swift 4: implement delete, sold/available toggling, saving, posting, and view refresh to reflect changes.
Reuse the property view for editing by instantiating the edit controller via storyboard identifier, presenting it, hiding the tab bar, and passing the selected property to configure the UI.
Check user login and show the login screen if needed, then enable editing of an existing property by updating the UI, property fields, and showing an image gallery.
Update property data in an iOS app by syncing fields like available from, rooms, city, country, and features (central heating, solar water heating, air conditioner, furnished), and validate location coordinates.
Debug a location error by choosing to instantiate location coordinates or keep them optional, then update the save flow to edit an existing property instead of creating a new one.
Responds to the save action by validating required fields, updating an existing property or creating a new one, and applying edits to the property's title and size.
Develop an image gallery that displays a property's photos when the gallery button is pressed, using a dedicated view controller and storyboard, with edit mode for image management.
Create an image gallery UI with a centered activity indicator and a 115 by 115 collection view, wiring data source and delegate for smooth image loading and a delete button.
Create and configure a custom image gallery collection view cell with outlets and actions, use a delegate to handle delete button events and track the index path.
Create an image gallery in a view controller that generates cells from an image array, handles delete actions via a collection view delegate, and refreshes after downloading images.
Integrate image picking from camera and gallery using the image picker controller; conform to its delegate and manage the gallery by appending images and refreshing the collection.
Show a tapped image in a bigger view with the idm photo browser, set the initial index and pass images, then present with zoom, share, and dismiss options.
Learn to enable tap-to-enlarge for property images by adding a tap gesture recognizer, presenting an image browser with zoom, rotate, and share features.
Bonus section with Machine learning is added.
In this course we are going to build a platform for Real Estate. The platform can be easily modified for any product categories. Cars, clothes, toys, you name it.
We will build the application from the scratch and upload it to Appstore when we are done.
The business plan of the platform will be as follows:
There will be 2 types of users: Agents and Buyers.
Agents will have to buy subscription to the app to be able to post properties. This group will be the one that will spend money and bring profit for the app. We will use in-app purchase for this, you can decide on subscription plan, like one off, or monthly etc.
Agents will be able to post unlimited number of properties for sale on the platform.
Buyers (free subscription) will be able to post 1 property only in for sale section, and search the listings, contact the agent to view or purchase the property.
Guests that didn’t register will be able to use the app to search their desired properties, but they won’t be able to contact the Agents to arrange viewing or buying the property. Also, they cannot post any properties in for sale section.
This is done to get more users to register for the app. Also, Buyer can update to Agent at any time after registration.
We will use phone number verification for the app users to login/register. I will also show you how to make email address verification in case if you want to use it as well.
I will teach you all you need for the development. if you have any previous experience in iOS development, it will help you. Doesnt matter if you are beginner or advanced iOS developer, you will learn a lot from this course.
We will look into different backend and choose the best option for the different tasks.
Join me to develop this great app together!