DEV Community

krlz
krlz

Posted on

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

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.

Layer Responsibility Components
Presentation UI & State Widgets, BLoC/Riverpod, Screens
Domain Business Logic Use Cases, Entities, Interfaces
Data Data Access Repositories, Models, APIs

External Services:

  • πŸ—„οΈ Supabase β†’ Database, Auth, Storage, Edge Functions
  • πŸ’³ RevenueCat β†’ Billing, Receipts, Analytics
  • πŸ’Ύ Local Cache β†’ Hive, SQLite, SharedPrefs

Step 1: The Costs

Platform Cost Type
πŸ€– Google Play $25 One-time
🍎 Apple (optional) $99/year Annual
πŸ—„οΈ Supabase $0 Free tier
πŸ’³ RevenueCat $0 Free tier
TOTAL $25 Android only

Google Play Service Fees

Your Revenue Google Takes You Keep
First $1M/year 15% 85%
Above $1M 30% 70%
Subs Year 1 15% 85%
Subs Year 2+ 10% 90%

πŸ’‘ Retain subscribers 12+ months = Google takes only 10%!


Step 2: Supabase Setup

Feature πŸ†“ Free πŸ’Ž Pro ($25/mo)
Database 500 MB 8 GB
Storage 1 GB 100 GB
MAU 50K 100K
Edge Functions 500K/mo 2M/mo
Backups ❌ βœ… Daily
Auto-pause After 7 days Never

⚠️ Upgrade when: You have paying users and need reliability.


Step 3: Purchase Flow

User Journey:

πŸ‘† Tap β†’ πŸ’° Paywall β†’ πŸͺ Google Play β†’ βœ… Success!

Backend:

Google Play β†’ RevenueCat (validate) β†’ Webhook β†’ Supabase (grant access)


Step 4: Code Setup

Dependencies

dependencies:
  supabase_flutter: ^2.0.0
  purchases_flutter: ^6.0.0  # RevenueCat
  flutter_bloc: ^8.1.0
  get_it: ^7.6.0
Enter fullscreen mode Exit fullscreen mode

Supabase Init

import 'package:supabase_flutter/supabase_flutter.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

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

  runApp(MyApp());
}
Enter fullscreen mode Exit fullscreen mode

RevenueCat Service

import 'package:purchases_flutter/purchases_flutter.dart';

class PurchaseService {
  static Future<void> init() async {
    await Purchases.configure(
      PurchasesConfiguration('your_api_key'),
    );
  }

  static Future<bool> purchase(Package pkg) async {
    try {
      final result = await Purchases.purchasePackage(pkg);
      return result.customerInfo
          .entitlements.active.containsKey('premium');
    } catch (e) {
      return false;
    }
  }

  static Future<bool> isPremium() async {
    final info = await Purchases.getCustomerInfo();
    return info.entitlements.active.containsKey('premium');
  }
}
Enter fullscreen mode Exit fullscreen mode

Step 5: Pricing Strategy

Plan Price Why
πŸ“… Weekly $2.99 47% choose this - low commitment
πŸ“† Monthly $9.99 Standard option
πŸ“… Yearly $49.99 Best value (58% off)
♾️ Lifetime $99.99 Price anchor, high LTV

2025 Stats

Metric Value
Avg subscription $10.20/mo
7-day trial conversion 5.2%
Trial LTV boost +64%
Weekly sub preference 47%

πŸ“Š The Math: 100 users Γ— $9.99 Γ— 85% = $849/month


Indie Developer Reality

Level Revenue % of Devs
😒 First apps < $100 total ~60%
😐 Struggling $0-500/mo ~25%
πŸ™‚ Sustainable $1K-5K/mo ~10%
😊 Successful $5K-20K/mo ~4%
πŸ€‘ Top tier $20K+/mo ~1%

Success Stories

App Revenue Time
Postiz $2K MRR 4 months
Formula Bot $220K MRR 18 months
ShipFast $133K/mo Ongoing
Xnapper Sold $150K 21 months

Video Resources


Launch Checklist

  • [ ] Create Google Play account ($25)
  • [ ] Set up Supabase project
  • [ ] Configure RevenueCat
  • [ ] Implement auth + paywall
  • [ ] Add restore purchases button
  • [ ] Test with sandbox accounts
  • [ ] Create store listing
  • [ ] Submit & launch πŸš€

Key Takeaways

  1. $25 to start - Android only, iOS later
  2. RevenueCat - Free up to $2.5K revenue
  3. Supabase - 50K users on free tier
  4. Weekly subs - 47% user preference
  5. 7-day trials - 5.2% conversion
  6. Year 2 subs - Google takes only 10%

Resources


Building your first SaaS? Share your journey in the comments!

Top comments (0)