Past work · SaaS product

BillTrackr household bill tracking SaaS.

A production Rails 8 SaaS app for recurring household bills, shared accounts, Stripe subscriptions, reminders, reports, and receipt uploads.

The problem

Most households have a messy little cloud of recurring bills: rent, utilities, subscriptions, loans, and random due dates that do not care how busy the month is.

Spreadsheets work until they do not. Notes apps get stale. Full personal finance tools can be too heavy when the real need is simple: what is due, what is paid, what is overdue, and who in the household can see it?

The solution

I designed and built BillTrackr as a focused SaaS product for tracking monthly household bills. Users can sign up, add recurring bills, see each month at a glance, mark payments paid or unpaid, store notes and receipts, and review reports over time.

The app uses Ruby on Rails 8, PostgreSQL, Hotwire, Tailwind CSS, Active Storage, Solid Queue, Stripe, and Fly.io. The marketing site is a separate React and Vite surface, while the product app stays Rails-first with fast Turbo updates where they matter.

BillTrackr marketing homepage with household bill tracking message Marketing site and product positioning

What the product includes

  • Session-based authentication with sign up, sign in, and password reset.
  • Recurring bill management with amount, due day, category, and archive support.
  • Monthly payment rows generated from bill templates for each calendar month.
  • Paid, unpaid, and overdue status with Turbo-powered dashboard updates.
  • Smart due-date handling for month-end edge cases like the 31st in February.
  • Basic and Pro plans with app-level plan limits and paid feature access.
BillTrackr monthly dashboard showing unpaid bills, due dates, status, and CSV export Monthly dashboard with bill status and exports

Pro features and billing

BillTrackr has a real freemium model, not just a fake pricing page. Basic users get a limited solo experience. Pro users can unlock unlimited bills, custom categories, shared households, reminders, reports, CSV export, and receipt storage.

Stripe Checkout handles subscription signup, the Stripe Customer Portal handles billing management, and webhooks keep subscription state synced back into the app when plans change, payments fail, or subscriptions are canceled.

BillTrackr pricing modal comparing Basic and Pro plans Basic and Pro pricing flow

How the workflow moves

  • A user creates a household profile during onboarding.
  • The user adds recurring bill templates with categories, amounts, and due days.
  • The dashboard ensures payment records exist for the selected month.
  • Payments can be marked paid or unpaid in place with Turbo Streams.
  • Pro users can invite household members and switch between shared accounts.
  • Reminder jobs check for overdue and due-soon bills and send email notices.
  • Reports show category breakdowns, yearly spending, and exportable CSV data.
BillTrackr monthly report showing category summaries, totals, and paid status Monthly reporting by category

Engineering highlights

The domain model separates recurring bill definitions from monthly payment state. That keeps the recurring schedule stable while notes, receipts, status, and monthly history live on the individual payment records.

The app also includes account-based tenancy, membership permissions, an admin namespace, file uploads through Active Storage, background reminders with Solid Queue, Chartkick reporting, Dockerized deployment, release migrations, health checks, and automated tests across core flows.

Why it mattered

BillTrackr shows the full product path: define the problem, model the business logic, build the app, integrate billing, ship it to production, and keep refining it after launch.

For clients and employers, that matters because it is the same muscle used on serious internal tools and web systems: authentication, permissions, payments, reports, background jobs, file handling, deployment, and the small decisions that make software usable in real life.