Skip to content

Project structure

The repository is a pnpm + Turborepo monorepo.

Public marketing site built with Astro:

  • Landing page, pricing, and blog
  • Starlight documentation under /docs/*
  • Tailwind CSS v4 via the Vite plugin
  • Deployed to Vercel as a static site; rewrites /app/* to the Next.js project

Authenticated product dashboard built with Next.js:

  • Mounted at /app using basePath
  • Better Auth for sign-in, sign-up, and social providers
  • Stripe billing, Supabase Storage uploads, and protected routes
  • Deployed to Vercel as a separate project

Shared logic lives in packages/:

PackagePurpose
@repo/configTyped environment variables
@repo/dbDrizzle schema and queries (Postgres)
@repo/authBetter Auth server + client
@repo/emailResend email helpers
@repo/stripeCheckout and webhooks
@repo/storageSupabase Storage signed uploads
@repo/jobsVercel Cron handlers + optional BullMQ queues
  • Supabase Postgres — required; stores users, subscriptions, and upload metadata
  • Supabase Storage — required for uploads; create an uploads bucket in your project
  • Redis.io — optional; enables BullMQ queue workers when REDIS_URL is set
  • Cron jobs — run via Vercel Cron in production; use pnpm jobs:worker locally