Launch the next focused tool with confidence.
A Vercel-first Next.js foundation with consent-gated analytics, product-owned identity and data, and the operational pieces a real launch needs.
Next.js · Vercel · Neon · Drizzle · Clerk
export async function GET() {
return Response.json({ ok: true });
}The product owns its schema and release workflow; reusable presentation stays in packages.
How it works
A deliberately small, shippable foundation.
Make it yours
Replace this app-owned configuration with focused product copy and a real domain.
Link providers
Connect founder-owned Neon and Clerk through Vercel, then pull Development env values locally.
Ship safely
Vercel publishes previews; the mainline workflow migrates the protected database before production deploy.
Included
The baseline every real product deserves.
Product copy and data stay local; stable presentation and tooling are shared.
Config-driven landing
A polished shared template with app-owned messaging, metadata, JSON-LD, and Open Graph output.
Legal and consent
Privacy, terms, contact, and cookie-consent components are direct imports from @dt/ui.
Consent-gated PostHog
Analytics starts opted out and only captures after an explicit visitor choice.
Local identity model
Clerk authenticates people; a local Neon UUID is the primary key for every product table.
App-owned Drizzle
Schema, SQL migrations, restore instructions, and database access live with this deployable app.
Serialized production
One mainline workflow runs the reviewed migration before building, deploying, and smoke testing.
Architecture
Three environments, one release path.
Development, native previews, and protected production are intentionally separated.
Development
- Neon development branch
- Clerk Development instance
- Vercel env pull
Preview
- Vercel auto-deploy
- Disposable Neon branch
- Preview-safe credentials
Production
- Protected Neon branch
- Production Clerk instance
- Migrate then deploy
This is an environment model, not a pricing table.
FAQ
The decisions are visible in the code.
Why is the database schema in this app?
Independent products need independent release cycles. A shared schema package would couple their migrations.
Why does production deploy from GitHub Actions?
It serializes the one operation Vercel cannot: applying the reviewed production migration before the exact production build.
Why does preview use Clerk Development?
Preview databases are disposable, while Clerk identity uses a purposeful test-versus-live boundary instead of an instance per branch.
What happens before provider keys exist?
Public pages still render. The dashboard explains that Clerk must be configured instead of failing a deployment.
Ready to turn this reference into a product?
Start by replacing the app configuration, not the foundation beneath it.
Built for focused, independently deployable tools.