Flutter Marketplace App Boilerplate
Two-sided auth for buyers and sellers, Firestore listing models with search-ready structure, and a RevenueCat payments base — the connective tissue of a marketplace, wired in BLoC across iOS, Android, and Web.
This Flutter marketplace app boilerplate is a $69 one-time Flutter (Dart) starter for two-sided apps where buyers and sellers meet. It ships Firebase Auth with role-aware accounts, Firestore listing and category models behind a clean repository, and a RevenueCat payments base for seller subscriptions or featured-listing upsells. You own the full source, ship to iOS, Android, and Web from one codebase, and get lifetime updates. It is the skeleton — the matching logic, your trust-and-safety rules, and any escrow or split-payment flow are yours to build on top.
A marketplace is two apps wearing one skin
The thing that makes a marketplace hard is that the same codebase serves two people with opposite needs: a buyer who browses and pays, and a seller who lists and gets paid. Most templates only model the buyer. The Flutter Kit gives you role-aware accounts so the same Firebase Auth identity carries a role, and your UI and permissions branch from one source of truth held in a Cubit — not from booleans scattered through widgets. A user can be both buyer and seller, switch contexts, and their state survives login, logout, and a second device. That role plumbing is the part everyone underestimates, and it is already wired.
- Role-aware Firebase Auth — one identity, buyer and/or seller context
- Account/role state in a Cubit via get_it, testable and centralized
- Listing ownership and permissions derived from role, not hand-threaded flags
- State survives login, logout, role switch, and reinstall
Listings, categories, and search-ready data
Listings are plain Dart models behind a Firestore repository registered in get_it, so a seller creating a listing and a buyer querying a category share the same clean seam. The shape is deliberately query-friendly — fields you would filter and sort on are first-class — so wiring a category browse, a price filter, or a third-party search index later is a swap against an interface rather than a rewrite. Because listings are Firestore documents, a buyer's feed reflects new inventory in real time as sellers publish.
class ListingRepository {
ListingRepository(this._db);
final FirebaseFirestore _db;
Future<void> publish(Listing listing, AppUser seller) {
assert(seller.role == UserRole.seller);
return _db.collection('listings').add({
...listing.toJson(),
'sellerId': seller.id,
'status': 'active',
'createdAt': FieldValue.serverTimestamp(),
});
}
Stream<List<Listing>> watchByCategory(String category) => _db
.collection('listings')
.where('category', isEqualTo: category)
.where('status', isEqualTo: 'active')
.snapshots()
.map((q) => q.docs.map((d) => Listing.fromJson(d.data())).toList());
}The payments base, and the honest caveat about money flow
The kit wires RevenueCat, which is the correct tool for the digital side of a marketplace: seller subscriptions (a 'pro seller' tier), featured-listing boosts, or unlocking buyer features — because those are digital purchases and must run through StoreKit 2 and Play Billing on mobile. Be clear-eyed about one thing, though: paying a seller for a physical good, with a platform cut and a split or escrow, is a real-world payment that Apple and Google route through an external processor (Stripe Connect-style marketplaces are the usual answer). The kit gives you the entitlement, listing, and account structure; that split-payment processor is the piece you bring and connect.
- RevenueCat base for seller subscriptions and featured-listing upsells
- Entitlement gating to unlock 'pro seller' or buyer-premium features
- Material 3 design tokens — rebrand the whole marketplace from one file
- Cloud Functions seam for verifying listings or fanning out notifications
When a different starting point is the honest choice
If your marketplace's hard problem is the matching algorithm or heavy trust-and-safety and moderation, most of that lives server-side and a front-end starter is a smaller slice than it looks. If you are validating an idea with a tiny catalog and have no Dart experience, a no-code tool like Bubble can stand up a rough two-sided v1 quickly — trading away source ownership and the clean BLoC architecture that keeps a growing marketplace maintainable. And if your transactions are web-first with complex Stripe Connect split payments, a web stack may fit the money flow better than a mobile-first RevenueCat base. The Flutter Kit is the right call when you want a code-first marketplace you fully own, with two-sided auth, listings, and a payments base already wired so you can focus on liquidity — getting buyers and sellers to show up.
The Flutter Kit vs building a marketplace yourself
| Feature | The Flutter Kit | Build from scratch |
|---|---|---|
| Price | $69 one-time, unlimited projects | Your engineering time (weeks) |
| Two-sided auth | Role-aware Firebase Auth pre-wired | Design and build role plumbing |
| Listing models | Firestore repository, search-ready | Schema and repo from zero |
| Real-time feed | Streamable Firestore queries | Hand-roll streams + caching |
| Payments base | RevenueCat for digital tiers | Wire StoreKit 2 + Play Billing |
| Architecture | BLoC/Cubit + get_it, testable | You design it all |
| Source ownership | Full source, lifetime updates | You own and maintain it all |
Frequently Asked Questions
How does the marketplace boilerplate handle a user who is both a buyer and a seller?
Can buyers search and filter listings in this marketplace template?
Does the marketplace boilerplate handle split payments between platform and seller?
How would I monetize a marketplace built on this boilerplate?
Is the marketplace boilerplate locked to Firebase, or can I use Supabase?
Can the same marketplace codebase serve a web storefront and the mobile apps?
Keep exploring
Build the marketplace, not the role plumbing
Start with two-sided buyer/seller auth, search-ready Firestore listings, and a RevenueCat payments base already wired in BLoC. $69 one-time, full source, lifetime updates, iOS + Android + Web from one Dart codebase. See /features.
Get The Flutter Kit — $69One-time purchase · Lifetime updates · Unlimited projects