The Tech Stack We Chose and Why
Next.js 15 (App Router)
We use Next.js for almost every product we build. It's the right choice for products that need both marketing pages and authenticated app functionality in the same codebase. The App Router makes route organization clean and the server components reduce client-side JavaScript.
Supabase
Supabase is our default backend for MVPs. Managed Postgres with built-in auth, real-time subscriptions, and row-level security. The free tier is genuinely useful, not a crippled version designed to force upgrades. We reach for Supabase before anything else for data persistence.
Turborepo
For multi-package projects, Turborepo handles build caching and task orchestration. The monorepo structure means we can share TypeScript types between the dashboard and the widget, which eliminates a whole category of integration bugs.
TailwindCSS
Tailwind for styling. No custom CSS, no component library overhead. Fast to build, easy to maintain, consistent output.
Stripe
Stripe Webhooks for conversion tracking. When a customer referred by an affiliate completes a payment, Stripe sends a webhook. TopPromoter receives it, looks up the attribution cookie, and credits the right affiliate.
Vercel
Deployment on Vercel. Preview deployments for every pull request, automatic production deploys on main branch push, edge network for fast global load times.