Reference
Architecture
The file map, the four API routes, and the files you should not rewrite.
Launch Kit is one Next.js 15 app. Server Components by default. "use client" only where clicks or browser APIs need it. No server actions.
Routes
| Path | Role |
|---|---|
/ | Marketing homepage |
/signin | Google + magic link |
/dashboard | Private product shell |
/blog, /blog/[slug] | MDX blog |
/docs, /docs/[slug] | These docs |
/tos, /privacy-policy | Legal |
/showcase | Section catalog, noindex |
API
| Method | Path | Role |
|---|---|---|
GET | /api/auth/callback | Exchange the auth code, redirect to callbackUrl |
POST | /api/stripe/create-checkout | Open Stripe Checkout. Guests allowed |
POST | /api/stripe/create-portal | Billing portal. Auth required |
POST | /api/webhook/stripe | Grant or revoke access, send welcome email |
Top of the tree
text
app/ pages, layouts, API routes, globals.css
components/
blog/ article layout and MDX extras
docs/ docs chrome
legal/ Terms / Privacy wrapper
layout/ Header, Footer, client chrome
sections/ landing page blocks
ui/ checkout, sign-in, account, theme
content/blog/ your-slug.mdx
content/docs/ this documentation
libs/ supabase, stripe, resend, seo, blog, docs
config.ts product settings
middleware.ts session refresh onlyLeave these alone
libs/supabase/*andmiddleware.tslibs/stripe.tsand the three Stripe routesapp/api/auth/callback/route.tslibs/resend.ts— call it, do not replace itlibs/blog.ts/libs/seo.tsxunless you are changing SEO behaviournext.config.js,postcss.config.js
Know about, do not treat as product features
Newslettersubmit is a stubresend.fromNoReplyis unusedSTRIPE_PUBLIC_KEYis unusedhas_accessis written by the webhook and not read until you gate a routenodemaileris inpackage.jsonand unused
These docs
/docs is Launch Kit’s documentation. Before you launch your own domain, delete app/docs and content/docs (and the Docs links in the header and footer) so customers do not see this site.