The Flutter Kit logoThe Flutter Kit
Boilerplate · Booking

Flutter Booking App Boilerplate

Accounts, appointment and scheduling data models, FCM reminder plumbing, and a RevenueCat paywall — the booking-MVP essentials wired in BLoC across iOS, Android, and Web.

Last updated: 2026-06-19 7 min read By Ahmed Gagan, Flutter Engineer
Quick Answer

This Flutter booking app template is a $69 one-time Flutter (Dart) boilerplate for appointment and reservation apps. It ships Firebase Auth accounts, scheduling and appointment data models behind a clean repository, FCM and local-notification plumbing for reminders, and a RevenueCat paywall for any premium booking tier. You own the full source, ship to iOS, Android, and Web from one codebase, and get lifetime updates. It is the foundation — your availability rules, calendar sync, and any double-booking guards specific to your business are built on top.

Price
$69 one-time (was $149)
Scheduling
Appointment/slot models + Firestore repository
Reminders
FCM + local notifications, diagnostics screen
Platforms
iOS, Android, Web from one Dart codebase

Booking apps fail at the boring details, not the calendar UI

Anyone can render a calendar grid. What sinks a booking MVP is the state around it: an appointment that gets confirmed twice, a reminder that fires after the slot has passed, a cancellation that doesn't free the slot, an account that loses its bookings on a new phone. The Flutter Kit gives you that reliable substrate. Accounts, an appointment lifecycle (requested → confirmed → completed → cancelled), and reminder scheduling all live in BLoC/Cubit with get_it, so the logic is testable and separate from your UI. You build the availability rules for your business; the kit makes sure the booking that results survives the real world.

  • Firebase Auth accounts so a booking belongs to a real, recoverable user
  • Appointment lifecycle modeled as Firestore documents you can stream
  • Reminder scheduling through FCM and local notifications
  • State survives login, logout, cancellation, and reinstall

Scheduling models and reminders, concretely

Appointments and time slots are plain Dart models behind a Firestore repository registered in get_it. Because the lifecycle is explicit, a reminder is just a scheduled notification keyed to the appointment's start time, and a cancellation transitions the document's status so the slot can be reopened by your rules. FCM and local notifications are already wired with a diagnostics screen that surfaces a copyable device token, so 'your appointment is tomorrow' nudges are about deciding when to fire them, not about plumbing the notification permission flow.

Scheduling a reminder for a confirmed appointment
class BookingCubit extends Cubit<BookingState> {
  BookingCubit(this._repo, this._reminders) : super(const BookingInitial());
  final BookingRepository _repo;
  final ReminderService _reminders;

  Future<void> confirm(Appointment appt) async {
    emit(const BookingSubmitting());
    final saved = await _repo.confirm(appt); // status -> confirmed
    await _reminders.scheduleAt(
      id: saved.id.hashCode,
      when: saved.startsAt.subtract(const Duration(hours: 24)),
      title: 'Appointment tomorrow',
      body: 'Your booking with ${saved.providerName} is in 24h.',
    );
    emit(BookingConfirmed(saved));
  }
}

Monetizing with a paywall that already works

The kit wires RevenueCat so a booking app can charge the way booking apps usually do: a subscription for unlimited bookings, a pro tier for providers, or gating premium time slots — all digital purchases that must go through StoreKit 2 and Play Billing on mobile. Free trials, restore purchases, and entitlement gating are pre-built, and the paywall screens theme from your centralized Material 3 design tokens. If you also need to take a real-world payment for the service itself (a deposit, say), that is an external-processor transaction the platforms allow; the kit's entitlement and appointment structure gives you a clean place to attach it.

  • RevenueCat paywall: trials, restore, entitlement gating pre-built
  • Gate unlimited bookings or a provider 'pro' tier behind a subscription
  • Paywall and booking screens theme from one design-token file
  • GA4 with consent management to watch trial-to-paid conversion

When a different starting point is the honest choice

If your core value is a deep scheduling engine — multi-resource availability, complex recurrence, real-time team calendars synced to Google and Outlook — much of that is backend and calendar-API work that no front-end starter shortcuts. If you run a single-location business and just need clients to book online, an off-the-shelf SaaS like Calendly or a no-code builder may be cheaper than building anything. And if your reservations are web-first with Stripe deposits and no app-store presence, a web stack fits better than a mobile-first RevenueCat kit. The Flutter Kit is the right call when you want a code-first booking app you fully own, with accounts, scheduling models, reminders, and a paywall already wired so you can focus on your booking rules and your customers.

The Flutter Kit vs a generic Flutter template for booking

The Flutter Kit vs Generic free template comparison
FeatureThe Flutter KitGeneric free template
Price$69 one-time, unlimited projects$0–$30, quality varies
AccountsFirebase Auth, multiple providersOften login UI only
Appointment modelsLifecycle + Firestore repositoryHard-coded sample data
RemindersFCM + local notifications wiredRarely included
PaywallRevenueCat trials + restore
ArchitectureBLoC/Cubit + get_it, testableOften setState in widgets
Updates & supportLifetime updates + docs

Frequently Asked Questions

Does the booking app template send appointment reminders automatically?
Reminder plumbing is wired through FCM and local notifications with a diagnostics screen for tokens, so scheduling a 'your appointment is tomorrow' nudge keyed to the slot's start time is built-in behavior. You decide the timing and copy; the permission flow and delivery plumbing are already done.
How does the booking boilerplate prevent an appointment from being double-confirmed?
Confirmation runs through a Cubit with an explicit submitting state, so the confirm action is disabled while a booking is in flight and repeat taps are ignored. The appointment lifecycle is modeled in Firestore, so its status is the single source of truth that your availability rules read against.
Can I charge a subscription for unlimited bookings in this appointment app?
Yes — RevenueCat is wired with trials, restore, and entitlement gating, so a subscription for unlimited bookings or a provider pro tier is a paywall plus an entitlement check. These are digital purchases, so they run through StoreKit 2 and Play Billing as the stores require.
Does the booking boilerplate sync with Google Calendar or Outlook?
Calendar sync is not bundled, because it is a provider-specific integration tied to your business model. Appointments are clean Dart models behind a repository, so adding a Google or Microsoft calendar sync is implemented against that seam rather than tangled through your screens.
Can a booking app built on this kit run on the web as well as mobile?
Yes — one Flutter/Dart codebase targets iOS, Android, and Web, so a web booking page and the native apps share the same scheduling models and account logic. That lets a small booking business offer a shareable web link and store apps without maintaining separate codebases.
Is the booking boilerplate tied to Firebase for storing appointments?
It ships on Firebase Auth and Firestore, but appointments flow through a repository interface registered in get_it, so the data layer is swappable. Because you own the full source, moving the booking repository to Supabase or your own API is a clean reimplementation behind the same seam.

Keep exploring

Ship the booking app, not the reminder plumbing

Start with accounts, appointment models, FCM reminders, and a RevenueCat paywall already wired in BLoC. $69 one-time, full source, lifetime updates, iOS + Android + Web from one Dart codebase. See /features.

Get The Flutter Kit — $69

One-time purchase · Lifetime updates · Unlimited projects