Every project started the same way. New repo,
then days of setup before touching the actual idea.
Supabase schema. RLS policies. OTP auth.
Lemon Squeezy webhooks. Resend. Protected routes.
At some point I had a messy "setup repo" I'd copy
from. It broke constantly. So I cleaned it up
properly, documented everything, and packaged it.
The result is SupaShip — Next.js 14 with Supabase,
Lemon Squeezy, Resend, and OTP passwordless auth.
One SQL file to run and your DB is ready.
Deploys on Vercel.
A few decisions worth explaining:
OTP over magic links — magic links break inside
Chrome Extensions. OTP codes work everywhere.
Lemon Squeezy over Stripe — Stripe isn't
available in Uruguay where I'm based. LS handles
VAT automatically too.
App Router only — no Pages Router legacy code.
supaship.app if you're curious. Happy to answer
questions about any of the technical decisions.
Top comments (0)