Flutter & Firebase Masterclass
(COMPLETE PACKAGE)
Learn about Firebase Auth, Cloud Firestore, Cloud Functions, Stripe payments, and much more by building a full-stack Flutter eCommerce app on iOS, Android, and web.
What's Included
→ 10 modules, totaling 12 hours of video
→ Lifetime Access
→ Bonus Articles
→ Full Source Code
→ Premium Support
→ English Subtitles
→ Completion Certificate
→ 30 Day Money Back Guarantee
Course Overview
If you need a backend for your Flutter app, Firebase is the most obvious choice.
Firebase makes it easy to authenticate users, write data to a remote database, and run server-side code securely. And you get scalability and great performance out of the box, without breaking the bank.
But once you start building large apps, things get complicated and you may ask yourself:
→ Do I have the right architecture in place?
→ Am I structuring my data correctly?
→ How can I run complex queries?
→ Are my security rules correct?
→ How to handle errors?
→ Will I get a massive Firebase bill and go bankrupt?
In other words - how do you know if you’re doing it right?
Sure, you could spend countless hours pouring over the docs, watching tutorials, and learning by trial and error to see what works. What’s what I did and it was worthwhile - but the journey was long and challenging.
Instead, I want to speed up the process for you by packaging up all my Firebase knowledge and experience into this course.
It's time to learn Firebase
This in-depth course will teach you how to create real-world apps with Flutter & Firebase.
To get started, we’ll build a simple full-stack app to get you rolling with the basics. This will cover Firebase Auth, Cloud Firestore, basic security rules, and the latest Firebase UI packages.
Then, we’ll go deep and build a complex eCommerce application, complete with backend integration using Cloud Functions and 3rd party integrations like Stripe and Algolia.
Along the way, we’ll cover topics such as using the Firebase and FlutterFire CLIs, authentication flows, role-based authorization, data modeling and CRUD operations with Cloud Firestore, queries, indexes, pagination, offline support, image uploads with Firebase Storage, working with the Firebase Local Emulator, using Cloud Functions with TypeScript, working with the Firestore Admin SDK, Firebase cost analysis and optimization, and deployment via Firebase Hosting.
The bottom line?
You'll get all the knowledge and skills needed to build real-world apps with Flutter and Firebase, and make the most of what Firebase has to offer. 🔥
Course Curriculum
- 1. Firebase Basics: Introduction (2:10)
- 2. Starter project overview (4:31)
- 3. Creating the Firebase project and installing the Firebase and FlutterFire CLI tools (4:22)
- 4. Configuring the Flutter app with the Flutterfire CLI (5:09)
- 5. Introduction to Firebase Auth & Firebase UI Auth: Email & Password sign in flow (8:39)
- 6. Completing the email & password sign in flow (5:48)
- 7. Showing the correct page when the app starts with GoRouter.redirect (4:17)
- 8. Using authStateChanges() and the refreshListenable argument (3:43)
- 9. Refactor: replacing singletons with Riverpod providers (3:45)
- 10. Other Firebase Authentication Features: Overview (1:36)
- 11. Introduction to Cloud Firestore (5:52)
- 12. Installing Cloud Firestore and running on iOS and Android (3:05)
- 13. Overview of the jobs page and planned CRUD operations (2:09)
- 14. Adding one more route to GoRouter and updating the redirect logic (3:33)
- 15. How to add a document with the FirebaseFirestore API (6:27)
- 16. Using the FirebaseRepository to add jobs from the UI (4:38)
- 17. Showing list items with the FirestoreListView widget (6:07)
- 18. Using type-safe model classes (5:47)
- 19. Adding update and delete operations (7:00)
- 20. Filtering collections with `where` (3:06)
- 21. Intro to Firestore security rules (10:02)
- 22. Working with timestamps and sorting data (5:30)
- 23. Offline mode (3:03)
- 24. Pagination and the FirestoreQueryBuilder widget (2:31)
- 25. Wrap Up (2:56)
- Request for Feedback (optional)
- 1. Section Intro (3:09)
- 2. VSCode Shortcuts, Extensions & Settings for Flutter Development (1:52)
- 3. Course Project on GitHub (1:56)
- 4. Cloning the starter project & pubspec.yaml file overview (5:04)
- 5. eCommerce app overview (4:30)
- 6. Project overview: app initialization and routing (3:15)
- 7. Project overview: helper classes and widgets (4:44)
- 8. Project structure: features and layers (6:48)
- 9. Unidirectional data flow from the data layer to the presentation layer (4:57)
- 10. How to add Firebase repositories to the data layer (6:49)
- 11. Updated Starter project (4:41)
- Request for Feedback (optional)
- 1. Section Intro (3:41)
- 2. Adding Firebase to the eCommerce app (10:08)
- 3. Creating an AuthRepository using the FirebaseAuth APIs (6:08)
- 4. The authStateChanges() method and the User class (7:15)
- 5. Testing the authentication flows with Firebase (3:07)
- 6. Dealing with Firebase auth exceptions (6:37)
- 7. Adding the email verification logic (9:05)
- 8. Automated testing with FirebaseAuth and wrap up (3:09)
- Request for Feedback (optional)
- 1. Section Intro (3:18)
- 2. Cloud Firestore and Firebase Storage setup in the Firebase console (4:34)
- 3. Updated starter project (10:09)
- 4. Image uploads: plan of attack (3:54)
- 5. Creating an ImageUploadRepository (4:45)
- 6. Creating an AsyncNotifier to upload images (7:11)
- 7. Creating new products as Cloud Firestore documents (4:22)
- 8. Completing the image upload logic (5:59)
- 9. Adding an ImageUploadService class (2:54)
- 10. Adding a watchProduct method to the ProductsRepository (6:11)
- 11. Cloud Firestore: realtime listeners vs one-time-reads (9:04)
- 12. How to edit existing products: overview (4:32)
- 13. Implementing the AdminProductEditController (10:43)
- 14. Deleting products (9:49)
- 15. Combining streams inside a provider with Rx.combineLatest (3:12)
- 16. Image uploads: final tweaks and completed code (4:38)
- 17. Basic security rules for the image upload flows (3:51)
- 18. Flutter web: adding a CORS policy to a Firebase storage bucket (5:18)
- 19. Wrap up & exercises (2:03)
- Request for Feedback (optional)
- 1. Section Intro (2:26)
- 2. Initializing the Firebase Local Emulator Suite with firebase init (7:36)
- 3. How to use the Firebase Emulators (6:23)
- 4. Exporting and Importing data with the Firebase Emulator (5:21)
- 5. Introduction to Cloud Functions and Project Setup with TypeScript (4:12)
- 6. TypeScript modules basics + Running our first Cloud Function using npm (6:00)
- 7. Writing a Cloud Function Trigger (9:51)
- 8. Fixing the infinite loop in the Cloud Function (4:43)
- 9. Introduction to HTTP callable functions (2:49)
- 10. Writing an HTTP callable function to delete all documents inside a collection (8:39)
- 11. Invoking an HTTP callable function from the Flutter client (7:33)
- 12. Deploying Cloud Functions with the Firebase CLI (4:45)
- 13. Setting a project budget in Google Cloud as a safety net (3:26)
- 14. Testing the deployed functions and inspecting the Google Cloud logs (3:52)
- 15. Wrap Up (1:24)
- Request for Feedback (optional)
- 1. Section Intro (2:09)
- 2. Introduction to Custom Claims (6:58)
- 3. Starter project and Firebase configuration (4:35)
- 4. Running the Flutter eCommerce app with the Firebase Local Emulator (3:43)
- 5. Writing a Firebase auth trigger to set the custom claims on the server (9:29)
- 6. Updating the Security Rules to enable Role-Based Authorization via Custom Claims (6:03)
- 7. How to show the admin UI only if the user is an admin (9:41)
- 8. How to force-refresh the ID token with a Cloud Firestore Listener (11:58)
- 9. Updating the GoRouter redirect code to account for the admin state (3:13)
- 10. Deploying and testing the Cloud Function Trigger (6:55)
- 11. Wrap Up (1:57)
- Request for Feedback (optional)
- 1. Section Intro (2:25)
- 2. Updated Starter Project with Firebase seed data (3:33)
- 3. Implementing a Shopping Cart with Firebase: Overview (3:42)
- 4. Cloud Firestore Data Modeling for the Shopping Cart Items (6:44)
- 5. Implementing the RemoteCartRepository with Cloud Firestore (8:04)
- 6. Testing the Shopping Cart feature with Cloud Firestore (4:41)
- 7. Optimizing the Cart Total Calculation with Multiple StreamProviders (9:07)
- 8. How to estimate the cost of your Firebase app and minimize your Firebase bill (9:22)
- 9. Wrap Up (1:06)
- Request for Feedback (optional)
- 1. Section Intro (5:39)
- 2. How to collect payments on mobile: Stripe or IAP? (2:23)
- 3. Introduction to Stripe (2:38)
- 4. Overview of the Flutter Stripe package and example app (3:54)
- 5. Payment flows with Stripe: conceptual overview (3:46)
- 6. Updated starter project & Flutter Stripe SDK setup (5:11)
- 7. Installing the Stripe Extension for Firebase (4:34)
- 8. Configuring the webhook for the Stripe Extension (4:37)
- 9. Creating products in the Stripe dashboard (7:35)
- 10 Adding new Cloud Function triggers to synchronize the Stripe data with Firestore (8:52)
- 11. Deploying and testing the new Cloud Functions (6:18)
- 12. Explaining the relationship between Stripe Customers and Firebase Users (3:34)
- 13. Demo: making payments on the client (mobile and web) (5:52)
- 14. Overview of the client payment flows on mobile (11:12)
- 15. Overview of the client payment flows on Flutter web (6:29)
- 16. How to fulfil orders on the backend (6:58)
- 17. Showing the updated orders page in the Flutter app (5:43)
- 18. How to set and use the Stripe Secret Key with Cloud Functions (3:43)
- 19. Updating the available quantity on the Stripe product metadata (3:26)
- 20. Wrap Up (1:53)
- Request for Feedback (optional)
- 1. Section Intro (1:31)
- 2. Overview of the Firebase Extensions for Full-Text Search (2:46)
- 3. Installing the Algolia Extension for Firebase (9:17)
- 4. Updated starter project and code walkthrough (5:58)
- 5. Adding the Algolia API keys to the Flutter project (2:28)
- 6. Implementing Products Search with Algolia (4:53)
- 7. Removing the loading indicator for a better search UX (3:54)
- 8. Using realtime updates when the query is empty (3:23)
- 9. Using caching and debouncing to make fewer API calls (5:31)
- 10. Wrap Up (1:47)
- Request for Feedback (optional)
- 1. Section Intro (1:29)
- 2. Starter project and code walkthrough (3:12)
- 3. Implementing the ReviewsRepository (5:20)
- 4. Calculating the average rating score with Cloud Functions (5:46)
- 5. Deploying the Flutter web app with Firebase Hosting (3:10)
- 6. Updating the CORS policy for the deployed Flutter web app (2:36)
- 7. Conclusion (2:24)
- Request for Feedback (optional)
I spent over 600 hours making this a high-quality course and I'm confident you'll get a lot of value out of it.
But the only way to find out if this course is right for you is on the inside, not on the outside. So you get on the inside and see if it’s true and valuable to you. Then, if it is, that’s when you decide to keep it.
But if you're not happy with it, for any reason, you can reach out within 30 days of purchase to get a full refund. All you have to do is go to [email protected] and tell me “gimme my money back” and you got it, and in short order. My response time is usually 24 hours.
Who is this course for?
This is an intermediate to advanced-level course about Flutter & Firebase, and you need to be already familiar with Dart, Flutter, GoRouter, and Riverpod to make the most of it.
We’ll start by building a simple full-stack app so you'll get comfortable with the basics even if you never used Firebase before.
Then, I’ll give you a detailed walkthrough of the complete eCommerce app that was covered in the Flutter Foundations course. And we’ll turn it into a full-stack app, using the Firebase Dart packages on the frontend, and Cloud Functions with TypeScript on the backend.
When adding new features, I'll include most of the UI code beforehand so we can focus on what matters most: learning Firebase.
While this is not strictly required, I recommend you take the Flutter Foundations course before proceeding to this one (you'll be able to purchase both courses together on the checkout page if you wish).
Also Available:
Flutter Foundations course
Frequently Asked Questions
How long is the course?
The course will include 10+ hours of in-depth video, focusing on quality content and code.
Is the course up to date?
Yes, the course will be fully updated to the latest versions of Flutter and Firebase.
I'll continue to keep it up to date in the future.
Will this course cover all the Firebase products?
Firebase is a big platform that includes many different services to build, release, and monitor your apps. And it would be hard to cover them all in a single course.
So here’s a list of topics that are currently not planned for this course:
- Firebase Remote Config
- Firebase Dynamic Links
- Firebase Cloud Messaging
- OAuth providers (Google, Apple, Facebook etc.) and advanced authentication features
I will, however, cover some of these topics in future articles or courses.
Will you cover any backends other than Firebase?
This is not currently planned, though I may create additional courses for other backends in the future.
We will design the Flutter codebase with good separation of concerns, making it easier to adopt a different backend if desired.
Will this course cover server-side Dart?
No. We will write Cloud Functions in TypeScript.
If and when official Dart support is added to Firebase Cloud Functions, I'll update the course to reflect that.
What about payment providers other than Stripe?
Stripe and RevenueCat are the only payment processors with good support for Flutter on iOS, Android, and web.
Since we'll build an eCommerce app to sell physical products, Stripe is the ideal choice.
I may cover other payments providers as part of separate courses in the future.
What if I get stuck? Can I ask questions?
Yes. The course includes premium support on Slack and I aim to answer all questions within 24 hours.
What is my teaching style?
My courses are very practical, clear, and concise - just like all the tutorials on my YouTube channel. I always explain what we're going to build and why, and then how. You'll leave this course with a deeper understanding of how things work and will be able to apply this knowledge to your own apps.
What if I don't like the course?
The course comes with a 30 day money back guarantee. If you're not happy with the course, for any reason, you can reach out and I'll issue a full refund.
Will I get a completion certificate?
Sure do! Once you complete the course this will be issued to you automatically.
I have another question!
Sure - email me at [email protected] and I'll reply within 48 hours.
About Me
My name is Andrea, I'm a Flutter GDE and I've been writing code professionally for over 12 years. I've been a mobile app developer since 2012, working for startups, agencies, and big companies.
With my Flutter tutorials and courses, I've helped thousands of students become better developers.
I know what it takes to become a great Flutter developer. I can't wait to share this course with you and help you fast-track your learning.