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
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());
}
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');
}
}
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
- π¬ RevenueCat Flutter Tutorial
- π¬ Google Codelab: Flutter IAP
- π Flutter Architecture Guide
- π Supabase Flutter Docs
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
- $25 to start - Android only, iOS later
- RevenueCat - Free up to $2.5K revenue
- Supabase - 50K users on free tier
- Weekly subs - 47% user preference
- 7-day trials - 5.2% conversion
- Year 2 subs - Google takes only 10%
Resources
Building your first SaaS? Share your journey in the comments!
Top comments (0)