Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Full-Stack E-Commerce App Development with SwiftUI, Node.js, and Postgres
Setting Up the Development Environment
Why NodeJS? (1:21)
Installing NodeJS, Postgres, Beekeeper Studio (4:23)
Creating Database & Connecting Through Beekeeper Studio (7:42)
Structuring your Backend and Frontend (4:50)
Quick Tour of ExpressJS
Hello Express! (12:26)
Route Basics (5:55)
Dynamic Routes (6:33)
JSON (6:51)
POST (10:14)
Building User Registration System
Creating User Table Using Sequelize (16:38)
Registering User (11:06)
Adding Unique Constraints to Username (7:29)
Performing Validation Using express-validator (8:31)
Catching Duplicate Username (8:33)
Encrypting Sensitive Data (Passwords) (8:06)
Implementing Authentication Controller Environment Key (8:36)
Generic HTTPClient (5:13)
Implementing Register for Authentication Controller (7:06)
Developing Registration Screen in SwiftUI (16:24)
Introducing MVC Pattern for the NodeJS Backend
What is MVC Pattern? (9:16)
Implementing Auth Router (10:24)
Implementing Authentication Controller (6:03)
Building User Login
Understanding JSON Web Tokens Flow (JWT Flow) (5:39)
Authenticating the User and Returning the Token (14:25)
Testing Login Route (3:06)
Invoking Login Request from Client (7:44)
Persisting Token in Keychain (10:18)
Validating the Token Expiration on the Client Side (15:45)
Building the Tab View Interface and Implementing Protected Screens
Agenda (1:12)
Setting Up Tab Views (12:13)
Protecting Screens for UnAuthenticated Users (17:22)
Updating SmartShopApp and Removing TokenValidation (6:00)
Fetching, Displaying and Creating Products
Creating Product Table Using Sequelize CLI Tool and Migration (8:28)
Adding Product Router and Product Controller (7:28)
Implementing Get All Products (11:58)
Displaying Products on Screen (20:10)
Implementing Create Product Action on Product Controller (11:31)
Adding Products Using SwiftUI App Part 1 (9:31)
Adding Products Using SwiftUI App Part 2 (12:56)
Implementing Get My Products on Product Controller (5:52)
Displaying Products By User on Screen (9:20)
Uploading Images to the Server
Installing and Configuring Multer (14:25)
Uploading Images Using Multer on Server Side (12:38)
Implementing Uploader Service (16:40)
Integrating Uploader Server to Add Product Images (16:40)
Implementing ImagePicker (22:28)
Saving Product with Image (15:27)
Migrating to Xcode 16 and Swift 6
Updating SwiftUI Client to Swift 6 (14:39)
Fix Photos Picker Issues in iOS 18 and Xcode 16 (6:00)
Updating and Deleting Product
Implementing Delete Route Using ExpressJS (9:53)
Deleting Image Files Associated with the Product (11:05)
Implementing MyProductCellView (4:03)
Deleting Product from SwiftUI App (19:01)
Implementing Update Route Using ExpressJS (16:19)
Updating Product Using SwiftUI App Part 1 (13:11)
Updating Product Using SwiftUI App Part 2 (17:28)
Protecting Server Resources & Adding Authentication Middleware
What is Middleware? (1:50)
Implementing Log Middleware (Optional) (10:05)
Implementing Authentication Middleware (16:09)
Sending Authentication Tokens from SwiftUI App (13:19)
Adding and Displaying Cart Items
Migration to Add Carts Table (12:00)
Migration to Add CartItems Table (6:21)
Adding Items to the Cart on Server Side Part 1 (6:05)
Adding Items to the Cart on Server Side Part 2 (17:57)
Implementing CartStore, Cart and CartItem Models in SwiftUI App (6:10)
Implementing addCartToItem in CartStore (7:50)
Adding Item to Cart from Product Detail Screen (11:59)
Returning CartItem with Product to Client from the Server (8:48)
Updating Add Item to Cart Function on Client Side (9:56)
Loading Cart Data from the Server (12:11)
Implementing loadCart in CartStore (11:00)
Displaying Cart Items on the Screen Part 1 (8:13)
Displaying Cart Items on the Screen Part 2 (13:05)
Updating Cart Items Quantity (20:08)
Deleting Cart Items (Server Side) (7:07)
Deleting Cart Items (Client Side) (8:23)
Adding Badge for Cart Items & Enable Cart Route Authentication (12:12)
Updating User Profile
Implementing Migration to Add User Info (8:12)
Creating Update User Info Route on Server (12:07)
Creating Update User Info Form and Performing Validation (10:23)
Updating User Profile Using User Store (18:18)
Loading User Info from the Server (9:12)
Pre-populating User Info (14:48)
Creating Orders (Server Side) & Building Checkout Screen
Creating Orders and OrderItems Tables (11:35)
Creating Orders Part 1 (Server Side) (11:00)
Creating Orders Part 2 (Server Side) (21:33)
Creating Order and OrderItem Models (13:55)
Implementing CheckoutScreen (14:45)
Securing Ordering Routes, Adding Validation & Updating Previews (13:38)
Stripe Integration
Getting Started with Stripe Integration (11:16)
Implementing Payment Intent Route (Server) (17:46)
Implementing Payment Controller (Client) (12:21)
Performing Payment (Client) (18:17)
Creating Order (23:00)
Bug Fixes & Refactorings
BUG FIX - Adding Item to the Cart (6:27)
Refactoring - Combining Environment Values into a Single File (5:18)
Refactoring - Moving Server Validations into a Single File (8:32)
BUG FIX - Updating Cart Total for Payment Sheet (4:25)
Refactoring - Authenticating the Protected Routes on Server (4:35)
Conclusion and Next Steps (Coming Soon)
Coming Soon...
Teach online with
Validating the Token Expiration on the Client Side
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock