Skip to content
Launch Kit logo

Customise

Your product

/dashboard is the blank you fill. Auth is done. Payments write has_access. This is where the rest of the week goes.

/dashboard is signed-in only. Guests go to /signin. The page you see is a placeholder: account menu, a heading, and a note about has_access.

Replace app/dashboard/page.tsx with the product. Keep the layout’s auth check. Add the paid-access check when the feature is not free.

What is already there

  • Session via app/dashboard/layout.tsx
  • ButtonAccount — billing portal and sign out
  • Header
  • dynamic = "force-dynamic" so the page is not statically cached around a session

Add routes under app/dashboard/ and they inherit the layout.

Patterns to copy

NeedCopy this
Another private areaapp/dashboard/layout.tsx
Paid-only APIServer createClient(), then profiles.has_access, return 403
Browser call to your APIapiClient from libs/api.ts
Email after an actionsendEmail() from libs/resend.ts

Scaffold the first product page