How mustaphi-dev/subscription-tracker works
Wince is a Flutter app for tracking subscriptions, free trials, BNPL installments and bank balances, backed by Supabase. Users can enter or import billing items, link a bank for balance and transaction-based discovery, then monitor renewals, trial conversions and upcoming account shortfalls. Receipt parsing also accepts forwarded email, while scheduled backend functions send alerts and refresh exchange rates. The app’s UI and several backend branches are represented from README capabilities and repository paths; their internal calls are not shown in the excerpts, so those links are left unverified.
Main entry points: bank-sync/index.ts Bank sync · home.dart Overview · parse-trial-receipt/index.ts Receipt parsing · 20261104000000_init.sql Supabase database
Components 21
Mobile app
- App shell
lib/main.dart - Overview
lib/home.dart - Bank linking UI
lib/accounts.dart
Billing tracking
- Item entry
lib/add.dart - Financial items
lib/data.dart - Renewals calendar
lib/calendar.dart - Spending insights
lib/insights.dart
Supabase backend
- Bank sync
supabase/functions/bank-sync/index.ts - Encrypted bank tokens
supabase/functions/bank-sync/tokens.ts - Recurring detection
supabase/functions/bank-sync/detect.ts - Receipt parsing
supabase/functions/parse-trial-receipt/index.ts - Alert dispatch
supabase/functions/dispatch-alerts/index.ts - FX rate sync
supabase/functions/fx-sync/index.ts - Backend shared services
supabase/functions/_shared/mod.ts - Supabase database
supabase/migrations/20261104000000_init.sql
External integrations
- TrueLayer adapter
supabase/functions/bank-sync/aggregators/truelayer.ts - Inbound email worker
workers/inbound-email/index.js - Anthropic Claude
- TrueLayer API
- Firebase Cloud Messaging
Other components
- Wince user
Connections 25
- Wince user → App shell: uses
- App shell → Overview: opens
- Wince user → Item entry: records items
- Item entry → Financial items: saves items
- Overview → Financial items: displays items
- Overview → Renewals calendar: shows renewals
- Overview → Spending insights: shows insights
- Wince user → Bank linking UI: links bank
- Bank linking UI → Bank sync: requests sync
- Bank sync → TrueLayer adapter: calls provider
supabase/functions/bank-sync/index.ts - TrueLayer adapter → Encrypted bank tokens: stores tokens
supabase/functions/bank-sync/aggregators/truelayer.ts - Bank sync → Encrypted bank tokens: uses token store
supabase/functions/bank-sync/index.ts - Bank sync → Recurring detection: detects recurrence
supabase/functions/bank-sync/index.ts - Bank sync → Supabase database: reads and writes
supabase/functions/bank-sync/index.ts - TrueLayer adapter → TrueLayer API: fetches bank data
supabase/functions/bank-sync/aggregators/truelayer.ts - Encrypted bank tokens → Supabase database: stores encrypted tokens
supabase/functions/bank-sync/tokens.ts - Inbound email worker → Receipt parsing: posts receipt
workers/inbound-email/index.js - Wince user → Receipt parsing: submits receipt
- Receipt parsing → Anthropic Claude: extracts billing data
supabase/functions/parse-trial-receipt/index.ts - Receipt parsing → Supabase database: records item
supabase/functions/parse-trial-receipt/index.ts - Alert dispatch → Supabase database: queries and claims alerts
supabase/functions/dispatch-alerts/index.ts - Alert dispatch → Backend shared services: sends push
supabase/functions/dispatch-alerts/index.ts - Backend shared services → Firebase Cloud Messaging: delivers notification
supabase/functions/_shared/mod.ts - FX rate sync → Backend shared services: uses backend services
supabase/functions/fx-sync/index.ts - Alert dispatch → Wince user: notifies