DuoKit

Flutter + Firebase boilerplate

Two apps. One backend.
Five verticals out of the box.

DuoKit is a production-ready Flutter + Firebase boilerplate for any two-sided service relationship — childcare, pet care, tutoring, eldercare, home cleaning. Swap one constant to retarget the apps.

Lifetime updates · Spark-plan friendly · iOS + Android

Everything a real two-sided service app needs

No half-finished features. Each piece is wired into both apps and documented for swapping out.

📱

Two apps, shipped separately

Provider app + client app, separate iOS/Android bundles, separate App Store listings. No role-switching mess.

🔥

Firestore on the free tier

Designed to run on Firebase's free Spark plan for typical small-business loads. Tight security rules included.

🎨

5 vertical presets

Childcare, pet care, tutoring, eldercare, cleaning. Sections rename and disable themselves automatically.

💰

Generic billing rules

Custom bonuses (Christmas, Eid, performance, year-end), monthly fees, leave deductions. Currency-agnostic.

🌍

Type-safe i18n

slang codegen, English shipped, hooks for any locale. No hard-coded strings (lint-enforced).

🔔

Push + threaded messages

FCM tokens, scheduled notifications, 10-minute message correction window, read receipts.

Real screens, real app

Captured from the boilerplate running on iPhone 17 Pro, signed into a fresh Firebase project. No mockups.

Branded sign-in

Branded sign-in

Google Sign-In, your wordmark, your accent color. Plug in your Firebase project and ship.

Provider dashboard

Provider dashboard

At-a-glance per-dependent stats and a 6-button Quick Actions grid that adapts to the active preset.

Attendance + leave

Attendance + leave

Month calendar, two-color leave overlays for provider and dependent, one-tap leave entry.

Billing settings

Billing settings

Studio info, bank info, prepaid/postpaid billing cycle, payment-due-day picker — all in one screen.

8 themes, swap on tap

8 themes, swap on tap

Eight Morandi-soft palettes ship by default. Persisted per-user. Edit `app_theme.dart` to add your own.

Splash + native launch

Splash + native launch

Cream-on-cream native launch screen with the boilerplate logo. flutter_native_splash + flutter_launcher_icons configured.

Swap one constant. Retarget the app.

kActivePreset in lib/config/activity_presets.dart decides which daily-log sections appear and what they're called. Click a preset to preview.

const ActivityPreset kActivePreset = childcarePreset;

Default preset — every section enabled.

🍼Feeding
🌙Sleep
👶Diaper
📸Activities
🌡️Temperature

What you get

One zip download. Open in VS Code, run two flutter run commands, you're live.

provider_app/

iOS + Android Flutter app for the service provider.

  • Daily activity logging (5 sections, configurable)
  • Monthly billing with custom bonus rules
  • Medication orders + administration log
  • Attendance / leave calendar
  • Push notifications, threaded messages, photo capture
  • Studio profile, bank info, payment reminders

client_app/

iOS + Android Flutter app for the client.

  • Read-only daily-log view + check-in/out
  • Monthly bill view with payment status
  • Add their own records (feeding, sleep, etc.)
  • Threaded messages back to the provider
  • Invite-code binding flow
  • 8 themes, locale-ready

firebase/

Backend you deploy in 5 commands.

  • Firestore security rules — provider/client authorization
  • Composite indexes for the queries that need them
  • Storage rules — photo upload paths
  • Optional Cloud Functions (invite-code, account deletion)
  • Reference functions/index.js with package.json
  • Honest README on Spark vs Blaze trade-offs

Documentation

Four buyer-facing docs, ~850 lines total.

  • README.md — what's in the box
  • SETUP.md — fresh-clone to running app
  • CUSTOMIZATION.md — 9 sections, least-invasive first
  • ARCHITECTURE.md — code map + Firestore schema + design rationale

One-time price. Lifetime updates.

Buy it once, use it on as many of your own apps as you want.

DuoKit

$199

USD · one-time

  • Full source for both Flutter apps
  • Firebase rules, indexes, optional Cloud Functions
  • 5 vertical presets out of the box
  • 4 docs (~850 lines) — README, SETUP, CUSTOMIZATION, ARCHITECTURE
  • Unlimited use in your own commercial apps
  • Free updates (v1.x)
  • Redistribution as a template not allowed
Buy on Gumroad →

Secure checkout via Gumroad · Instant download

FAQ

What does the boilerplate include exactly?

Two complete Flutter apps (provider + client), Firebase security rules and indexes, optional Cloud Functions, and ~850 lines of documentation. Everything you need to ship a two-sided service app.

Can I run this on Firebase's free Spark plan?

Yes for the core app. Two features (invite-code binding + account deletion) need Cloud Functions which require Blaze. Free-tier Blaze usage for a small business is typically $0/month. firebase/README.md walks through the trade-off.

How do I switch from childcare to pet care / tutoring / eldercare?

Open lib/config/activity_presets.dart in both apps. Change `kActivePreset = childcarePreset` to `petCarePreset` (or any of the 5 presets). The daily-log sections rename and disable themselves automatically. Custom presets are a 30-line copy-edit.

Does it support iOS + Android?

Both, out of the box. The boilerplate uses Flutter for shared mobile code. iOS and Android folders are configured with the right bundle IDs (`com.duokit.provider` / `com.duokit.client`) — change them once and you're done.

What about web or desktop?

The Flutter projects can be set to build web/macOS/Windows/Linux too, but the boilerplate is mobile-first and the UI is tuned for phone screens. We recommend dropping the desktop folders unless you have a specific use case.

How is billing handled?

Per-dependent fee settings: monthly fee + meal fee + custom bonuses. Bonuses are a generic `BonusRule` (id, label, amount, payment month) so you can add Christmas, Eid, summer/winter, year-end, performance, etc. — whatever fits your market.

What languages does it support?

English ships out of the box. The slang i18n framework is wired in — you copy en.i18n.json to zh-TW.i18n.json (or any locale), translate the values, and re-run codegen. No hard-coded strings (lint-enforced).

Can I get a refund?

Yes — Gumroad's 14-day refund policy applies. Email me with your purchase ID.

Is there a license restriction?

Use it in unlimited commercial apps you ship. Don't redistribute the source as a template or course material.