Payya puts every subscription on one calendar and reminds you before each charge. It is built for people who pay for a dozen services and cannot name them all, and who will not hand their bank credentials to an aggregator to find out. I designed, built and shipped it solo: a Flutter app on iOS, a Supabase backend, and a Next.js marketing site.
Subscriptions are designed to be forgotten. Free trials quietly turn into charges, prices go up by email, and annual renewals arrive with no warning. The people hit hardest pay for 6 to 12 services and find out what they spend from their bank statement. The usual fix, apps like Rocket Money, asks you to connect your bank first. Many people will not do that, and they are often the ones who care most about where their money goes.
Two decisions shaped Payya. First, no bank sync. You add a subscription yourself: pick the brand logo, enter the price, period and card, and you are done in seconds. Manual entry sounds like friction, but it removes the biggest trust barrier in the category. It also means no aggregator fees and no sensitive financial data on my servers. Second, lead with the future, not the past. Most finance apps open on transaction history. Payya opens on the next seven days. Every renewal is a logo on its date, with weekly and monthly totals, so you know what January costs before January starts.
Three views of the same data: a week view for what is coming, a month calendar for the overall shape, and a list for managing everything. Tap a date to see what is charged that day and the day's total. Pause, edit or delete a subscription from one sheet. Reminders fire before every renewal, and before a free trial converts into a paid plan. Billing periods cover weekly to biennial, plus trials. Payment methods are tracked so you can see which card carries which subscriptions. Guest mode works fully offline on local SQLite. When you create an account (email, Apple or Google), your data syncs to Supabase. The calendar and list stay available offline and reconcile when you reconnect. The app ships in English, French and Polish.
The Flutter app sits on a repository layer with two implementations of each store: local SQLite for guests and Supabase for signed-in users. A service factory picks the backend at runtime. The UI never knows where data lives, so moving a guest to an account is a sync step, not a rewrite. Supabase handles auth, Postgres storage and an Edge Function for full account deletion, which App Store review requires. Notifications are scheduled locally on the device, so reminders do not depend on a server. The marketing site is a separate Next.js app. It routes Android visitors to a waitlist and iOS visitors to the App Store.
Payya is live on the App Store. The launch plan, called Trial Season, is built around the gap between Black Friday and January: trials signed up for in late November turn into charges in late December and January, right when people reset their budgets. It is founder-led and organic first: localized App Store listings, short-form video in English and French, Product Hunt and Show HN, and an Android waitlist to capture demand until that version ships.