Skip to main content

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/changelog and src/content/blog.
  • Blog pages generate dynamic OG images and JSON-LD schemas per post.