All case studies
Productivity · SaaS
SubI
Track subscription renewals — inbox sync, reminders, and cancel links
Founder & Builder·In ProgressSaaSSupabaseNext.js
Problem
People lose money on forgotten renewals because subscriptions live scattered across email threads, bank statements, and memory — with no single place to see what bills next.
Context
Solo-built Next.js app in pre-launch. Users connect Gmail for renewal hints, confirm or edit suggestions manually, and get timezone-aware email reminders before charges — with cancel URLs stored beside each subscription.
Approach
- Used Supabase for auth, Postgres storage, and edge functions — keeping the app serverless-friendly with Row Level Security on user data.
- Built Gmail OAuth sync that surfaces inbox messages that look like renewals; nothing posts without explicit user confirmation.
- Added manual subscription entry, deduplication, billing webhooks via Paystack, and Resend-powered reminder dispatch.
- Gated the product behind a waitlist (`SUBI_PRE_LAUNCH`) while core dashboard, settings, and billing flows are finished.
Architecture
01Next.js 14 App Router
02Supabase Auth + Postgres + Edge Functions
03Gmail OAuth sync pipeline
04Paystack billing webhooks
05Resend reminder dispatch
Outcome
Pre-launch subscription tracker with inbox-assisted discovery, manual edits, renewal reminders, and cancel-link storage — built as a personal product with production-grade auth and billing foundations.
Metrics
Waitlist signups
Coming soon
Renewals tracked
Coming soon
Stack
Next.jsTypeScriptReactSupabasePostgreSQLGmail APIPaystackResendTailwind CSS