A clean landing page template for startups. Replace placeholders, deploy, done.
- Early-stage founders and teams
- Agencies and freelancers building startup landing pages
- Product marketing teams that need a fast, editable site
- Hero with CTA
- Problem, solution, features, social proof, team
- Waitlist form with client and server validation
- Supabase storage and Resend notification hooks
- Rate limiting on API routes (Upstash)
- SEO metadata, Open Graph, Twitter card, sitemap, robots
- Security headers with CSP
- Framer Motion animations
| Layer | Tech |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript (strict) |
| Styling | Tailwind CSS + CSS variables |
| UI | shadcn/ui primitives (Button, Input) |
| Animations | Framer Motion |
| Icons | Lucide React |
| Validation | Zod + React Hook Form |
| Data | Supabase |
| Resend | |
| Rate limiting | Upstash Redis |
| Fonts | Geist (Vercel) |
| Deployment | Vercel |
Replace <YOUR_REPO_URL> with your GitHub repo URL to enable 1-click deploy.
# 1. Install
npm install
# 2. Guided setup (optional)
npm run setup
# 3. Configure env
cp .env.example .env.local
# 4. Dev server
npm run dev
# 5. Type check
npm run type-check
# 6. Production build
npm run buildAll placeholders use the [PLACEHOLDER] format.
Full list: PLACEHOLDERS.md.
- Brand and SEO
config/site.ts-> name, URL, email, socials, analyticsapp/layout.tsx-> SEO keywordsapp/robots.tsandapp/sitemap.ts-> usesiteConfig.url
- Copy
data/content.ts-> text, stats, proof, team
- Brand color
styles/globals.css-> update--primary
- Assets
public/-> logo, hero image, team photos, partner logos, OG image
Important: siteConfig.url must be a valid URL or the build will fail.
Enable or disable sections in config/site.ts under sections.
Set any of these env vars to enable their scripts in app/layout.tsx:
NEXT_PUBLIC_GA_IDNEXT_PUBLIC_POSTHOG_KEYNEXT_PUBLIC_META_PIXEL_ID
POST /api/waitlist validates input with Zod. Connect your database or email provider (Resend, Loops, etc.).
Run the SQL in supabase/schema.sql inside the Supabase SQL editor.
Required for the waitlist API:
SUPABASE_URLSUPABASE_SERVICE_ROLE_KEYRESEND_API_KEYRESEND_FROM_EMAILRESEND_NOTIFY_EMAILUPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN
Optional analytics:
NEXT_PUBLIC_GA_IDNEXT_PUBLIC_POSTHOG_KEYNEXT_PUBLIC_META_PIXEL_ID
Server-side env vars must not use the NEXT_PUBLIC prefix.
/app -> Pages and API routes
/components/layout -> Navbar, Footer
/components/sections -> Landing sections
/components/ui -> UI primitives
/config/site.ts -> Global config
/data/content.ts -> All copy
/lib/validations.ts -> Zod schemas
/styles/globals.css -> Design tokens
/supabase/schema.sql -> Supabase table schema
llm.txt -> Project summary for LLM tools
proxy.ts -> Security headers