Skip to main content
Back to all seeds
MobileActive build2026

Grace Hub

Church youth ministry SaaS for Android, iOS, and Web PWA. 24+ screens covering Bible reader (with TTS), real-time chat, events with QR check-in, gamification, POS with barcode scanner, and multi-org architecture. Active build — multiple features shipped, some still in progress.

FlutterDartRiverpodgo_routerSupabaseHivefl_chartflutter_quill

What it is

Church youth ministry SaaS for Android, iOS, and Web PWA — built in Flutter / Dart with Supabase. 24+ screens covering Bible reader (with TTS), real-time chat, events with QR check-in, gamification (points / levels / badges), POS with barcode scanner, and multi-org architecture. Active build for House of Grace & Favour International Ministries (HGF) as the founding church on the Enterprise tier.

The problem

Church platforms are either too generic ("any community") or built for the megachurch in mind (per-seat licensing that excludes everyone else). A youth ministry needs the bible, events, prayer requests, finance, AND a cool-enough UX that teenagers actually open it on their phones.

What I built

Multi-org architecture

Each church is a tenant with its own Supabase RLS scope; users can belong to multiple orgs (e.g., a youth pastor at two campuses). HGF auto-provisions on the Enterprise tier via a DB trigger.

Real-time + offline

Supabase Realtime for chat, events RSVPs, and live leaderboard updates. Hive for the Bible cache so the reader works offline (you need scripture in church even when WiFi is congested).

Gamification done seriously

Points, levels, badges, leaderboards — but tied to genuine engagement (attended events, completed Bible readings, prayer streaks), not vanity metrics. Designed with the youth pastors so it reinforces the ministry's actual goals.

POS module

Cart, barcode scanner via mobile_scanner, PDF receipts. Lets churches sell merch and ministry materials at events without a separate Square/Shopify subscription.

Engineering decisions

Why Flutter over React Native

Flutter's rendering pipeline and Dart's typing made the 24+ screens consistent across Android and iOS without per-platform tweaks. Riverpod plus go_router gave a state + navigation story I could reason about as the surface grew.

Why Supabase over Firebase

Postgres + RLS lets me reason about multi-tenant access at the data layer, not in app code. RLS bugs are visible in tests; Firestore rule bugs are easier to ship.

Per-org Enterprise tier via DB trigger

HGF gets the enterprise feature set as soon as their org is created — no manual flag-flipping. The trigger lives in migrations so the entitlement is reproducible across environments.

What I'd do differently

Lock the navigation depth earlier. Flutter's go_router shines with a flat structure but I have a few four-level-deep paths that should have stayed at three. Refactoring is on the backlog before App / Play Store submission.