AI 驱动的互动落地页构建器 - 用一句话生成精美落地页
- Framework: Next.js 15 (App Router)
- Database: Supabase (PostgreSQL + Auth)
- Styling: TailwindCSS v4 + shadcn/ui
- State: Zustand
- Forms: React Hook Form + Zod
- Deployment: Vercel
npm install复制 .env.example 为 .env.local,填入你的密钥:
cp .env.example .env.local需要的环境变量:
| 变量名 | 说明 | 获取方式 |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Supabase 项目 URL | Supabase Dashboard → Settings → API |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase 匿名密钥 | Supabase Dashboard → Settings → API |
SUPABASE_SERVICE_ROLE_KEY |
Supabase 服务密钥(仅服务端使用) | Supabase Dashboard → Settings → API |
ANTHROPIC_API_KEY |
Claude API 密钥 | https://console.anthropic.com |
NEXT_PUBLIC_APP_URL |
应用 URL(本地开发用 http://localhost:3000) |
- |
重要: 需要手动在 Supabase Dashboard 执行 SQL 迁移
- 访问你的 Supabase Dashboard
- 进入 SQL Editor → New query
- 复制
supabase/migrations/001_initial_schema.sql的全部内容 - 点击 Run 执行
或者使用 Supabase CLI(需要 access token):
supabase login
supabase link --project-ref your-project-ref
supabase db pushnpm run devstarpage/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── (auth)/ # 认证页面(登录/注册)
│ │ ├── (dashboard)/ # 仪表盘页面
│ │ ├── (main)/ # 主功能页面(生成/预览)
│ │ ├── (preview)/ # 页面预览
│ │ ├── api/ # API 路由
│ │ │ ├── auth/callback/ # Auth 回调
│ │ │ └── generate/ # AI 页面生成 API
│ │ ├── layout.tsx # 根布局
│ │ └── page.tsx # Landing Page
│ ├── components/
│ │ ├── ui/ # shadcn/ui 组件
│ │ └── renderer/ # 页面渲染引擎组件
│ │ ├── PageRenderer # 主渲染器
│ │ ├── Navbar # 导航栏
│ │ ├── HeroSection # Hero 区块
│ │ ├── FeaturesSection # 特性展示
│ │ ├── TestimonialsSection # 用户评价
│ │ ├── PricingSection # 定价方案
│ │ ├── CtaSection # CTA 区块
│ │ ├── FaqSection # FAQ 区块
│ │ ├── GallerySection # 图片展示
│ │ ├── ContactSection # 联系表单
│ │ ├── Footer # 页脚
│ │ └── TextBlock # 文字块
│ ├── lib/
│ │ ├── supabase/ # Supabase 客户端
│ │ ├── store/ # Zustand stores
│ │ └── actions/ # Server Actions
│ └── types/
│ ├── database.ts # Supabase 数据库类型
│ └── page-config.ts # 页面配置类型 + Zod 校验
├── supabase/
│ └── migrations/ # SQL 迁移文件
├── .env.example # 环境变量模板
└── .env.local # 本地环境变量(不提交到 Git)
- Next.js 15 + TypeScript 初始化
- TailwindCSS v4 + shadcn/ui 配置
- 基础 UI 组件(button, input, card, dialog, alert, sonner)
- Supabase 客户端配置(browser + server)
- 数据库类型定义
- SQL 迁移文件(profiles + pages 表 + RLS)
- 认证流程(login/register/dashboard)
- 中间件(会话保护 + 路由守卫)
- Zustand stores(auth + page)
- Landing Page
- 构建验证通过
- 注册/登录/退出功能
- 会话保护中间件
- Auth 回调处理
- 自动创建 profile
- PageConfig 数据结构定义
- Zod 运行时校验
- Few-shot 示例(3 个产品场景)
- AI Prompt 模板
- /api/generate API 路由
- Claude API 调用
- JSON 提取与校验
- 错误处理(限流/超时/网络错误)
- 兜底模板(AI 不可用时返回预设页面)
- PageRenderer 主渲染器
- Navbar 导航栏组件
- HeroSection 首屏区块
- FeaturesSection 特性展示
- TestimonialsSection 用户评价
- PricingSection 定价方案
- CtaSection 行动号召
- FaqSection 常见问题
- GallerySection 图片展示
- ContactSection 联系表单
- Footer 页脚
- TextBlock 文字块
- 注册 → 登录 → 生成页面 → 预览 流程测试
- Auth 中间件保护验证
- API 端点测试(含错误处理)
- 页面渲染功能验证
- Vercel 生产环境部署
- README 文档更新
- 数据库迁移必须先执行,否则认证功能无法正常工作
- 首次注册后,用户会自动创建 profile 记录(通过 trigger)
- 生产环境部署时,需要在 Vercel 中配置所有环境变量
.env.local不应提交到 Git,请使用.env.example作为模板- Supabase 的 URL Redirects 需要配置
http://localhost:3000/api/auth/callback(本地)和你的 Vercel URL(生产)