User Flows
Signup / signin
1
Start auth
Open
/sign-up or /sign-in.2
Choose method
Use OAuth buttons (Google/GitHub) or email/password via server actions.
3
Handle email links
Magic link and reset emails are sent via Resend from
lib/email/auth.ts.4
Finalize session
/auth/callback exchanges tokens, enforces recovery for reset flows, and redirects to the dashboard or next.Purchase (subscription or lifetime)
1
Start checkout
Click a pricing CTA to POST
/api/checkout_sessions with priceId.2
Pay in Stripe
Stripe Checkout collects payment; metadata carries
user_id (if logged in) and plan info.3
Sync records
Webhook writes subscription or one-time purchase to Supabase, tracks PostHog events, and may email a license key.
4
Manage billing
Use
/api/customer_portal (GET/POST) to open Stripe Portal.Download access
1
Request download
Authenticated user hits
/api/download (optional version query).2
Validate license
Endpoint checks active license; Standard is blocked from
version=latest.3
Get signed URL
Returns signed Storage URL, logs download history, and increments count.
GitHub collaborator (Ultimate)
1
Submit username
POST
/api/github-access with githubUsername (auth + Ultimate license required).2
Send invite
Server calls GitHub API with PAT, stores the username, and returns invite status.
3
Check status
GET
/api/github-access reports collaborator/pending state.Changelog / blog
- MDX content under
src/content/changelogandsrc/content/blog. - Blog pages generate dynamic OG images and JSON-LD schemas per post.