All work

Indiecator

Revenue analytics for SaaS founders

Indiecator shows SaaS founders their real MRR, ARR, churn and retention. I built it with Rocket Devs, including the data pipelines behind every number on the dashboard.

Role
Full-stack engineer at Rocket Devs
When
Jul 2025 to now
Type
Revenue analytics for SaaS
Indiecator home page: See real MRR, see what you actually keep

The problem

A founder wants to see their revenue history the moment they connect Stripe. A dashboard that starts empty is useless, and a number you can't trace back to real customers is one nobody trusts.

What I built

  1. Three ways in

    When an account connects, a background job backfills two years of history. Live webhooks keep it current. A daily catch-up job repairs anything the webhooks missed. All three are safe to re-run, so a replay never double counts.

  2. A ledger built from invoices

    MRR, ARR, churn and retention come from what customers actually paid, so upgrades, downgrades and prorations land in the right month.

  3. Click any number

    Every metric drills down to the customers and transactions behind it, so a founder can check it against Stripe themselves.

  4. Safe for many customers

    Each customer's data is isolated in the database with Postgres row-level security. Redis keeps dashboards quick on accounts with two years of history. Revenue is converted at the exchange rate from the day it happened.

The hard part

Stripe only remembers three months

My first design replayed Stripe's events to rebuild history. Then a real account connected and the events ran out after about three months. Invoices go back forever, but they hide the day a mid-month upgrade happened. The fix uses both: invoices for the old history, events for the recent window, and one shared list where overlaps merge instead of counting twice.

Read the full write-up of the three-month problem

Results

  • Live at indiecator.com, with the code public on GitHub.
  • Two years of history on connect, kept in sync without downtime.
  • Shipped end to end in about three months.

Stack

  • Node.js
  • Next.js
  • PostgreSQL
  • Supabase
  • Redis
  • Stripe

Contact

Want me on your team?

uzair@uzairsaleem.dev
Role
Full-time remote. Full-stack, backend or product engineer.
Hours
US hours from Islamabad (UTC+5).
Paperwork
Employee or contractor. Deel, Payoneer or a wire all work.
Start
Available now.