
Set up a new Xcode project named Bon Voyage, configure storyboard-based UI, and import app icons, dev assets, and custom views to prepare a full stack iOS ecommerce app.
Follow the design specs to build the login view with color assets in Xcode. Apply hex values, card views, and constraints to style the title and fields.
Finish the register view for the login screen by building a registration card with email and password fields, a confirm password field, a register button, and a styled background image.
Create a home view with a navigation controller and login flow, then use a user icon to show an action sheet for logout, manage cards, and manage banks.
Formats pennies to currency with an int extension, updates price labels, and navigates from the home view to the vacation details view controller via a storyboard segue.
Add a scroll view for the vacation details and build a content view with a stack view, constrained by content and frame layout guides for smooth scrolling.
Build vacation details screens by refining the view controller, gallery cards, and content cards for highlights, leisure, and activities, with responsive constraints and a book button.
Finish the vacation details view by building an image gallery with a main image and horizontal thumbnails, wiring outlets and constraints, and enable thumbnail selection to update the main image.
Enhance the checkout view by adding payment method buttons with icons, configuring images and labels, and applying constraints and stack views for a polished checkout experience.
Enable selectable card or bank options in the checkout view with tap gesture recognizers, update borders and icons on selection, and pass vacation data via segue.
Refactor and cleanup guide you through a file-by-file review, extracting constants, renaming items, and improving formatting for a cleaner codebase. Modularize UI setup with focused functions.
IMPORTANT!!!
In this lesson we add Cocoa Pods and Firebase to our Xcode project.
Note, that from now on when you download the source code, you will need to add your own GoogleSerivce-Info.plist file from your Firebase project and change the bundle id in the Xcode project -> Target info to match what your Firebase project iOS app is set to.
You will also need to run a 'pod install' command in terminal to reinstall the CocoaPods since I delete them when uploading to make the file size smaller.
IMPORTANT!!!
In this lesson we add Cocoa Pods and Firebase to our Xcode project.
Note, that from now on when you download the source code, you will need to add your own GoogleSerivce-Info.plist file from your Firebase project and change the bundle id in the Xcode project -> Target info to match what your Firebase project iOS app is set to.
You will also need to run a 'pod install' command in terminal to reinstall the CocoaPods since I delete them when uploading to make the file size smaller.
@IBOutlet weak var loginEmailTxt: UITextField!
@IBOutlet weak var loginPassword: UITextField!
@IBOutlet weak var registerEmailTxt: UITextField!
@IBOutlet weak var registerPasswordTx: UITextField!
@IBOutlet weak var registerConfirmPassTxt: UITextField!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
IMPORTANT!!!
In this lesson we add Cocoa Pods and Firebase to our Xcode project.
Note, that from now on when you download the source code, you will need to add your own GoogleSerivce-Info.plist file from your Firebase project and change the bundle id in the Xcode project -> Target info to match what your Firebase project iOS app is set to.
You will also need to run a 'pod install' command in terminal to reinstall the CocoaPods since I delete them when uploading to make the file size smaller.
Explore Firebase cloud functions as serverless computing that runs in a managed environment, automatically scales with usage, and can be triggered by HTTP requests or Firebase events.
Explore the main cloud function types, from https request and https callable functions to scheduled and event-triggered triggers, including firestore, real-time database, and cloud storage.
Create a Stripe customer via a cloud function triggered from the iOS app sending the user email. Store the Stripe ID in Firestore and notify the app on completion.
Explore cloud Firestore, a no-SQL, document-oriented database. Compare with relational databases, understand collections, documents, schemas, and key-value pairs, and see schema flexibility.
Learn to read and write Cloud Firestore data by creating collections and documents, using fields like string, map, timestamp, and subcollections, with practical iOS examples.
Create a user model with id, stripe ID, and email, and implement a singleton user manager to fetch the current user from Firestore and initialize it from dictionary data.
Finish the checkout view controller by adding pay, change card, and change bank actions; display price, processing fee, and total via the fees calculator, with reusable setup functions.
Fetches vacations from Firestore's vacations collection using a snapshot listener, builds vacation objects from document data, and updates the table view, replacing demo data.
firebase functions:config:get
firebase functions:config:set stripe.secret="YOUR SECRET KEY"
Create a Plaid link token cloud function that initializes a Plaid client, requests and returns the link token, enabling the bank-link flow before exchanging for an access token with Stripe.
Launch plaid flow to connect a bank account via the link flow and exchange the public token for an access token to create the Stripe bank account.
Demonstrates exchanging a plaid public token for an access token through a cloud function, then creating a stripe bank account and linking it to the user in the iOS app.
Explore the Firebase email extension, a cloud function that triggers emails when a document is added to a mail collection using SendGrid. Configure api keys, security rules, and testing.
Hi there! I am super excited to launch this course. We are going to be learning a lot, covering a broad range of technologies, services, and skills. My goal, is that by the time you are done with this course, you will have the skills to build a much wider range of applications.
In this course we will build Bon Voyage. An iOS app where users can book extravagant vacations. We integrate Stripe and Plaid to handle payment methods for both credit card and connected bank accounts.
Stripe and Plaid both require server side functions, so you will learn all about Firebase Cloud functions. Cloud Functions alone greatly expand the things you can accomplish as a developer.
We're not stopping there though...
... you will also learn how to deploy a React admin app!
If you are building an eCommerce app either for yourself or a client, you will most likely need some sort of admin app.
In previous courses that required an admin app, I had created an additional iOS or Android admin app. However, the experience for the user, is not great. Especially when adding products that require a lot of text and images.
A web app is much better suited for these types of tasks. So in this course you will learn some of the basics of React development and how to deploy a React app to Firebase Hosting.
** Note that this is not meant to be a comprehensive course on React web development. While we will go over the code, and many concepts, how to deploy, and more, this is not meant to be a course on how to build a React app from scratch.
We will also learn about development and production environments for both web and iOS. This is a crucial concept most courses do not cover.
Deep dive on Stripe and Plaid.
I have been working professionally with Stripe and Plaid for two years now and it is a fantastic service. During this time I have learned a lot (and made some mistakes) and I am excited to pass all that knowledge on to you.
I have real world experience working with Stripe and Plaid. My current clients app has processed over $1,000,000 dollars and more than 3,000 transactions in the past 12 months.
MASTER THE FIREBASE SUITE
If you know me at all, you know I love Firebase. They are my go-to for just about everything you need to build iOS, Android, and Web Apps. Below, are the Firebase services we will be learning about.
Firebase Authentication
Learn how to use Firebase Authentication to create and authenticate users on iOS, Android and Web.
Firestore Database
Learn how to use Cloud Firestore, a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud Platform.
Firebase Storage
We will use Firebase Cloud Storage, built for app developers who need to store and serve user-generated content, such as photos or videos. .
Cloud Functions
Cloud Functions are my new favorite thing. And when combined with the Firebase suite it becomes extremely powerful. In this course you will learn how you can harness that power to take your apps to the next level.
Firebase Hosting
Firebase Hosting makes it extremely easy to host a website for free. In this course we are going to host our Bon Voyage admin app and even learn how to hook it up to a custom domain.
Firebase Extenstions
Firebase Extensions are nifty integrations you can set up that are basically bundled up code that can perform actions on your behalf, such as automatically sending email, or resizing images.
Who Should Take This Course
You should take this course if you are wanting to learn more intermediate to advanced topics, and especially if you want to learn how to implement payment methods in your app.
This is not a beginner course, and intermediate knowledge of Swift and Xcode is assumed. We will also be working with JavaScript, though not doing anything very complex. If you are familiar with Swift, you will be just fine.
Summary of things we cover:
Creating the App UI. But don't worry, if you dont want to watch me create more rounded rectangles, and want to jump right into the good stuff, there will be a starting point where the UI is completed.
Firebase Suite: Firestore, Hosting, Cloud Functions, Extensions, Authentication
How to set up production and development environments in iOS and Web.
Integrate Stripe. Utilize cloud functions to communicate between client app and Stripe servers.
Integrate Plaid. Utilize cloud functions to communicate between client app and Plaid servers.
ReactJS basics. How to deploy to Firebase Hosting.
Swift Package Management
Cocoa Pods
Sending emails to customers using SendGrid and Firestore