Flutter & Firebase Masterclass
Learn about Firebase Auth, Cloud Firestore, Cloud Functions, Stripe payments, and much more by building a full-stack eCommerce app with Flutter & Firebase.
Andrea’s Flutter content is amazing - it’s one of the few resources I consistently reference for advanced real-world solutions.
He clearly puts a huge amount of care and thought into every tutorial. Highly recommended!
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
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. 🔥
Loved the course and got a lot out of it.
Especially appreciated how Andrea doesn't just show you the "right way" to do things from the start. He shows common errors and pitfalls and how to get around them, and eventually end up at the "right way" with a better understanding of how to actually get there in your own projects.
The course also has a healthy balance of code-alongs for relevant portions and provides you with updated project files throughout, so you don't have to spend hours manually going through every single line of the project.
A BIG BIG THANKS for this course and the others that you will release later in the year.
Its just so much fun to see something new from my favourite GURU (teacher) and the anticipation of its release is so so exciting.
Just looking at the curriculum, it shows how much effort and thought you have put into developing this.
Thank you once again, as I begin this new journey.
Note: this is a tentative course outline. It will be improved and refined before launch
Firebase Pros and Cons
An overview of the Firebase Pros and Cons for Flutter app development:
- List of features and supported platforms
- Dart support (client vs server-side)
- Portability & vendor lock-in
- Developer experience
Create a simple full-stack app with Flutter and Firebase:
- Installing the Firebase and FlutterFire CLI tools
- Adding Firebase to a Flutter app
- Simple authentication flow with Firebase UI
- Listening to auth state changes with GoRouter and Riverpod
- Getting started with Cloud Firestore
- CRUD operations and reading realtime data
- Firebase UI for Firestore: FirestoreListView, FirestoreQueryBuilder, Pagination
- Caching and offline mode
- Security rules and finishing touches
Full-Stack eCommerce App Overview
A full overview of the eCommerce starter project:
- Feature-first app architecture with Riverpod
- Using repositories as Firebase API wrappers
- Choosing real vs "fake" repositories with provider overrides
- Configurable app bootstrap code
- Project structure: features and layers
- Modular architecture and Firebase UI tradeoffs
Adding user authentication flows to the app:
- Introduction to Firebase Authentication
- Adding Firebase to the eCommerce app (using FlutterFire CLI)
- Abstracting the FirebaseAuth APIs behind a repository
- Sign in with email and password
- Auth state changes and the User class
- Dealing with FirebaseAuthExceptions
- How to implement email verification
- Automated testing with FirebaseAuth
Cloud Firestore and Firebase Storage
Multi-page image upload workflows with Firebase Storage and Cloud Firestore:
- Overview of the image upload UI screens
- Uploading images with Firebase Storage
- Storing the download URL with Cloud Firestore
- Adding, editing, and deleting products with Cloud Firestore
- Alternative image upload workflows: file picker / image picker
- User input and validation with complex forms
- Firebase error handling
- CORS setup for Firebase Storage images on Flutter web
Firebase Local Emulator and Cloud Functions
Adding custom server-side code with Cloud Functions:
- Adding a local Firebase project with the Firebase CLI
- Working with the Firebase Local Emulator
- Choosing which emulators to run in the Flutter app
- Introduction to Cloud Functions and TypeScript
- TypeScript ESLint configuration
- Writing and testing Cloud Functions locally
- Generating and removing product list data with Cloud Functions
- Deploying Cloud Functions
- Calling https and callable functions from the Flutter app and handling errors
Role-Based Authorization with Custom Claims
Implementing role-based authorization with custom claims:
- Setting custom claims securely with Cloud Functions
- Checking for ID token changes
- Unlocking admin-only features with custom claims
- Checking for admin claims in the GoRouter redirect logic
- Security rules with custom claims
- Securing callable Cloud Functions
Cloud Firestore - Diving Deeper
Diving deeper with Cloud Firestore:
- NoSQL Data modeling
- Working with sub-collections and collection groups
- Cost measurement and optimization
- Queries and indexes
- More practice with CRUD
- Adding shopping cart, product reviews, checkout flows, and more
How to collect payments in the Flutter app:
- Overview of the various payment methods
- Stripe Dashboard and API keys
- Storing API keys securely with Firebase Secrets
- Working with Payment Intents
- Native payment sheets on iOS & Android
- Web payment UI with Stripe.js
- Backend integration with Stripe webhooks
- Securing webhooks with signature verification
- Server-side order fulfillment with transactions
How to implement server-side search with Algolia and Firebase extensions:
- Adding the Algolia extension to the Firebase project
- Indexing product data
- Adding Algolia-powered search to the Flutter app
Deployment with Firebase Hosting
How to deploy the Flutter web app with Firebase Hosting:
- Build and deploy the web app
We’ll cover the topics above in great detail, and you won’t be left wondering if your code is secure or if you've structured your database properly.
And when it comes to code quality, we’ll make sure to write clean, maintainable code that’s easy to extend and scale.
By the end of this course you'll have built a full-stack eCommerce app, complete with a working backend and Stripe integration.
Everything's clear. I really love the way you explain, concise but completely understandable. Not a single detail is missed on any topic that is covered, and if so, you always leave references to really useful articles.
No doubt that anyone who take this course will end up with complete and strong Flutter skills.
Andrea is the best! I love his passion and enthusiasm and dedication to teaching.
He cares deeply about programming and sharing his knowledge and experience with his students.
Coming Soon In
This course will launch for pre-sale on April 20th, 2023.
The first few modules will be available from Day One, with the rest to follow over the coming months.
If you'd like to be notified when the course is released, you can join the waitlist. You'll also receive some “sneak peeks” of the content, along with my upcoming articles about Firebase and Flutter, which will be a great complement to the course material.
Andrea has some of the highest quality online courses I have seen. He does not gloss over the issues of optimization or best practices that so many other courses do.
You can adapt what you learn from his courses, right into real-world applications!
So far, the course has delivered its promise to teach from a practical and professional perspective for intermediate and advanced users.
Love the tips and the side notes on the lessons.
The content is simply exemplary. If you are interested in creating cross-device apps, then Flutter is a great choice and Andrea's lessons will get you up to speed.
If you care about good architecture, Andrea will help you out with a sensible approach that will make your code readable and maintainable.
I'm starting to realize that I was doing things the wrong way from the beginning.
I'm excited to see that I'm finally learning the best practices for working on a Flutter app, and I'm sure I will become very confident about building the complex app that I need.
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).
Flutter & Firebase in Production
Once you know how to build apps with Flutter & Firebase, you'll want to deploy them to production.
To do that, you'll need to build them for iOS and Android, and automate the process on CI so you don't waste time making releases by hand. And by learning how to setup GitHub Actions with Fastlane and Firebase App Distribution, you'll be able to distribute your apps in a breeze.
But there’s more.
Once your apps are live, you'll want to monitor them with tools like Firebase Analytics and track crashes with Crashlytics or Sentry so you can fix them quickly.
And to facilitate testing, you’ll want to setup multiple flavors and ensure you’re using the correct API keys for each environment.
I’ll cover all these topics in a follow up course about Flutter in Production, which will be released later this year.
Frequently Asked Questions
When will the courses be released?
The first course (Flutter Foundations) is already available at this page.
The second course (Flutter & Firebase Masterclass) will launch in April 2023.
The third course (Flutter in Production) is still a few months away and will likely launch in Q3 2023.
Do I need to purchase each course individually?
Yes. You can already purchase the Flutter Foundations course today.
The other two courses will be published later this year and are not included in the first purchase. In other words, you'll have to buy them separately to get access.
Will these courses be sold on Udemy?
No. Not now, not ever.
The only place to buy these courses is here on my site.
How long is the Flutter & Firebase course?
This course will be approximately 10 hours long.
How much will the course cost?
I'm not sure yet. I'll update this page when I know more.
Will you offer a pre-sale discount?
Yes. By signing up today you can secure your discount and be the first to know when the course becomes available.
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.
Will I get a completion certificate?
Sure do! Once you complete the course this will be issued to you automatically.
I'm a student / I can't afford the course / I live outside the US/EU / do you support Purchasing Power Parity (PPP)?
Unfortunately PPP is not supported by my course platform. If you'd like to request a discount, please fill this form.
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.
Do you offer team packages?
Sure thing! I offer team packages at discounted rates.
Email me at email@example.com for all the details.
I have another question!
Sure - email me at firstname.lastname@example.org and I'll reply within 48 hours.
Hello, I’m Andrea
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 and big companies.
With my Flutter tutorials and courses, I've helped thousands of students become better developers.
By taking this course, you'll advance your skills and learn how to build full-stack apps with Flutter and Firebase.