Back to Case Studies

A Referral Rewards SaaS, Built Solo to Production

francofunrewards.ca, live: a bilingual partner-referral platform for a Canadian tutoring company, React 18 + TypeScript, Django 5/DRF, PostgreSQL and Stripe, architected, built, deployed and maintained by one engineer.

A Referral Rewards SaaS, Built Solo to Production
react 18 + typescriptdjango 5 / drfpostgresqlstripeproduction saas
Franco-fun Rewards partner dashboard, family referral page and rewards
Names and figures shown are sample data.

The Brief

A Canadian virtual tutoring company wanted partner schools and families to refer students and earn rewards, tracked honestly, paid reliably, and manageable by a non-technical team. No agency, no team: one engineer owning everything from schema to DNS.

What I Built

  • Referral engine with unique partner links, attribution windows and a reward ledger where credits freeze into a pending state on edge cases (a cancellation after crediting) instead of silently clawing back.
  • React 18 + TypeScript front end over a Django 5 / DRF API, PostgreSQL underneath, Stripe for payouts and payments.
  • Admin tooling so the client operates the whole programme (partners, rewards, approvals) without touching code.
  • Bilingual product (English / French) for the Quebec market.
Livefrancofunrewards.ca in production
1engineer, end to end, architecture to deployment
2languages served (EN / FR)
0silent money mutations. Every reward change is auditable

Why It Holds Up

Money logic is where referral platforms rot. Every state transition in the reward ledger is explicit, documented in pull requests, and reversible by an admin. The behaviour I chose for the ambiguous cancel-after-credit case became the client's permanent business rule.

Need this built? See full-stack AI development, or browse the case studies.

Need a SaaS Taken From Idea to Live?

I build complete platforms solo (backend, frontend, payments, deployment) and keep them running after launch. If you want one owner instead of a hand-off chain, let's talk.