From Zero to SaaS: Building a Profitable Mobile App with Flutter + Supabase in 2025

Published: (December 9, 2025 at 06:55 PM EST)
3 min read
Source: Dev.to

Source: Dev.to

You have an app idea. You want recurring revenue. You’re a solo developer with $25 to spare. Let’s build a SaaS mobile app that actually makes money.

The Architecture

Clean Architecture keeps your app maintainable as it grows. Here’s how the layers connect:

                    ┌──────────────────────────────┐
                    │         FLUTTER APP          │
                    └──────────────────────────────┘

        ┌──────────────────────────┼──────────────────────────┐
        │                          │                          │
        ▼                          ▼                          ▼
┌───────────────┐        ┌─────────────────┐        ┌─────────────────┐
│  PRESENTATION │        │     DOMAIN      │        │      DATA       │
│───────────────│        │─────────────────│        │─────────────────│
│ • Widgets     │   ──▶  │ • Use Cases     │   ──▶  │ • Repositories  │
│ • BLoC/Cubit  │        │ • Entities      │        │ • Data Sources  │
│ • Riverpod    │        │ • Business Logic│        │ • Models        │
└───────────────┘        └─────────────────┘        └─────────────────┘

                         ┌──────────────────────────────────┼──────────────────────────────────┐
                         │                                  │                                  │
                         ▼                                  ▼                                  ▼
                ┌─────────────────┐                ┌─────────────────┐                ┌─────────────────┐
                │    SUPABASE     │                │   REVENUECAT    │                │   LOCAL CACHE   │
                │─────────────────│                │─────────────────│                │─────────────────│
                │ • PostgreSQL    │                │ • Subscriptions │                │ • Hive/SQLite   │
                │ • Auth          │                │ • Receipts      │                │ • Shared Prefs  │
                │ • Storage       │                │ • Analytics     │                │                 │
                │ • Edge Functions│                │                 │                │                 │
                └─────────────────┘                └─────────────────┘                └─────────────────┘

Step 1: The Costs Breakdown

Google Play Developer Account

ItemCostFrequency
Registration$25One‑time
Annual Fee$0
Apple (optional)$99Per year

Google Play Service Fees

Revenue TierGoogle TakesYou Keep
First $1M/year15%85%
Above $1M/year30%70%
Subscriptions Year 115%85%
Subscriptions Year 2+10%90%

💡 Pro tip: Retain subscribers for 12+ months and Google only takes 10%.

Alternative Billing (EEA)

In the European Economic Area: 4% discount → 11% instead of 15%.

Step 2: Supabase Backend

Free Tier vs Pro Comparison

FeatureFree TierPro ($25/mo)
Database500 MB8 GB
Storage1 GB100 GB
Bandwidth5 GB250 GB
MAU50,000100,000
Edge Functions500K/mo2M/mo
Realtime200 conn500 conn
BackupsDaily
PausingAfter 1 weekNever

⚠️ Free projects pause after 1 week of inactivity. Upgrade when you have paying users.

Step 3: The Subscription Flow

    USER JOURNEY
    ═══════════

    ┌─────────┐         ┌─────────┐         ┌─────────┐         ┌─────────┐
    │  User   │ ──────▶ │ Paywall │ ──────▶ │ Google  │ ──────▶ │ Success │
    │  Taps   │         │ Screen  │         │  Play   │         │   🎉    │
    │ Upgrade │         │         │         │ Billing │         │         │
    └─────────┘         └─────────┘         └─────────┘         └─────────┘


    ┌─────────────────────────────────────────────────────────────────────┐
    │                         BACKEND FLOW                                │
    ├─────────────────────────────────────────────────────────────────────┤
    │                                                                     │
    │    Google Play ──▶ RevenueCat ──▶ Webhook ──▶ Supabase Edge Func   │
    │         │              │              │              │               │
    │    [Receipt]     [Validate]     [Notify]      [Update DB]          │
    │                                                                     │
    └─────────────────────────────────────────────────────────────────────┘

Step 4: Flutter Code Setup

Dependencies

# pubspec.yaml
dependencies:
  flutter:
    sdk: flutter
  supabase_flutter: ^2.0.0
  purchases_flutter: ^6.0.0  # RevenueCat
  flutter_bloc: ^8.1.0
  get_it: ^7.6.0             # Dependency Injection

Initialize Supabase

import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:flutter/widgets.dart';

Future main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Supabase.initialize(
    url: 'YOUR_SUPABASE_URL',
    anonKey: 'YOUR_ANON_KEY',
  );

  runApp(MyApp());
}

final supabase = Supabase.instance.client;

RevenueCat Purchase Service

import 'package:purchases_flutter/purchases_flutter.dart';

class PurchaseService {
  static Future init() async {
    await Purchases.configure(
      PurchasesConfiguration('your_revenuecat_api_key'),
    );
  }

  static Future> getOfferings() async {
    final offerings = await Purchases.getOfferings();
    return offerings.current?.availablePackages ?? [];
  }

  static Future purchase(Package package) async {
    try {
      final result = await Purchases.purchasePackage(package);
      return result.customerInfo.entitlements.active.containsKey('premium');
    } catch (_) {
      return false;
    }
  }

  static Future isPremium() async {
    final customerInfo = await Purchases.getCustomerInfo();
    return customerInfo.entitlements.active.containsKey('premium');
  }
}

Step 5: Pricing Strategy

PlanPriceConversionNotes
Weekly$2.9947% choose thisLow commitment
Monthly$9.99StandardMost common
Yearly$49.99Best value58% savings
Lifetime$99.99High LTVPrice anchor

Key Stats for 2025

MetricValue
Avg subscription price$10.20/mo
7‑day trial conversion5.2%
Trials boost LTV byup to 64%
Weekly sub popularity47% of all subs

📊 The Math: 100 users × $9.99 × 85% = $849/month

Real Indie Developer Income

Income Distribution

LevelMonthly RevenuePercentage
Most first apps< $100 total~60%
Struggling$0 – $500~25%
Sustainable$1K – $5K~10%
Successful$5K – $20K~4%
Top performers$20K+~1%

Success Stories

AppRevenueTimeline
Postiz$2K MRR4 months
Formula Bot$220K MRR18 months
ShipFast$133K/monthOngoing
Itemlist$1.4K/month3 pricing tiers
XnapperSold $150K21 months

The Complete Tech Stack

Stack Overview

LayerTechnologyCost
FrontendFlutter 3.x + Riverpod/BLoCFree
BackendSupabase (Postgres + Auth)Free → $25/mo
PaymentsRevenueCatFree → % of revenue
StoreGoogle Play$25 one‑time
Store (iOS)App Store$99/year

Starting Cost

┌───
Back to Blog

Related posts

Read more »