Sean's Experiments
← All articles

Building My First Production App: A Product Manager's Journey into Code

SuperCoachSupabaseVercelProduction

I built a SuperCoach prediction tracker — a web app that keeps you accountable for all your early season predictions. As a product manager learning technical concepts, getting this app from working locally to live on the internet taught me more than any tutorial could.

The Tech Stack

I built the app using Next.js, a React framework that handles both frontend and backend. Coming from a product background, I appreciated how it just works out of the box — routing, server-side rendering, and API routes all included. The learning curve was manageable, and the instant feedback from npm run dev made development addictive.

Supabase gave me a PostgreSQL database and authentication without having to build or manage infrastructure. I implemented magic link authentication (passwordless login via email), which seemed simple in theory but taught me valuable lessons about production email delivery.

Vercel is brilliant for Next.js apps. Push to GitHub, and it automatically builds and deploys. No server configuration, no DevOps knowledge required. It gave me production-quality hosting with automatic HTTPS, preview deployments for every branch, and a generous free tier.

Production Email Is Hard

This surprised me most. Supabase's default email service sent emails that simply never arrived — not even in spam. Gmail and other providers block emails from shared infrastructure with poor reputation.

  • Setting up Resend with proper SMTP credentials
  • Configuring DNS records for email authentication (SPF, DKIM, DMARC)
  • Verifying domain ownership
  • Updating Supabase to use custom SMTP instead of their default service

Now emails arrive reliably within seconds.

Unexpected Challenges

  • DNS propagation delays: Changes don't appear instantly. Sometimes you just have to wait 30 minutes and make a cup of tea.
  • Error messages without context: "500 Internal Server Error" could mean missing environment variables, SMTP misconfiguration, or a dozen other things. Learning to read browser console logs and Vercel deployment logs was essential.
  • Documentation gaps: Each service documents their own piece well, but understanding how they all connect required trial, error, and asking the right questions.

What I'd Tell Past Me

  • Read the DNS requirements carefully — most services tell you exactly which records to add. Follow them precisely.
  • Set up environment variables before deploying — check what's in your .env file and add those to your hosting platform.
  • Use SSH for GitHub — it's cleaner than managing tokens.
  • Plan your domain structure early — subdomains are cleaner than paths for separate apps.
  • Production email requires infrastructure — don't rely on default email services for anything user-facing.

The Value of Learning by Doing

As a product manager, I've written countless requirements and user stories. But there's something different about actually building the thing. You learn where the complexity really lives (often not where you expect), which features are genuinely hard to implement, and why engineers make certain architectural decisions.

This project took me from "I understand the concepts" to "I've debugged DNS propagation at midnight." The app works, users can sign in, and I can iterate on features.