ProductReadyProductReady

快速开始

从零到部署 - 10 分钟内运行 ProductReady

快速开始

欢迎使用 ProductReady!🚀 本指南将帮助你在10 分钟内从零开始运行一个可用的应用。

ProductReady 新手? 先试试演示模式 - 无需设置数据库!


你将看到的效果

设置完成后,ProductReady 提供了几个开箱即用的页面。以下是你可以探索的内容:

页面路由描述截图
落地页/营销主页,包含英雄区、功能特性和行动号召即将添加
仪表盘/dashboard主应用界面,包含任务管理和分析功能即将添加
智能体任务/agentAI 智能体任务创建和监控界面即将添加
系统管理/systemadmin系统管理面板(需要管理员权限)即将添加

在线演示可用! 在任何路由后添加 ?demo=1 参数(例如 /dashboard?demo=1)即可无需认证即可探索所有功能。

快速访问链接:

  • 🏠 落地页http://localhost:3000/
  • 📊 仪表盘http://localhost:3000/dashboard(或 /dashboard?demo=1
  • 🤖 智能体任务http://localhost:3000/agent(或 /agent?demo=1
  • ⚙️ 系统管理http://localhost:3000/systemadmin(或 /systemadmin?demo=1

注意:截图将在下次文档更新时添加。目前请启动开发服务器并亲自探索这些路由!


使用 ProductReady 的两种方式

ProductReady 可以在两种场景下帮助你:

🆕 新项目

从 ProductReady 模板开始

你正在构建新产品,希望:

  • 生产就绪的基础架构
  • 开箱即用的现代架构
  • AI 辅助初始化
  • 默认最佳实践

耗时:5 分钟 + AI 设置

跳转到新项目指南 →

🔄 现有项目

采用 ProductReady 模式

你有现有应用,希望:

  • 现代化架构
  • 添加类型安全 API(tRPC)
  • 改进认证(Better Auth)
  • 更好的数据库层(Drizzle)

耗时:30-60 分钟 + AI 迁移

跳转到迁移指南 →

只是想看看? 先试试演示模式 - 无需设置,2 分钟看到所有功能!


先决条件

开始之前,确保你已安装:

使用 Windows? 我们建议使用 WSL2 以获得最佳体验。


从 ProductReady 创建新项目

如果你从零开始,使用此方法。

AI 辅助初始化(推荐)

克隆 ProductReady

git clone https://github.com/mr-kelly/productready.git my-new-project
cd my-new-project/apps/productready
pnpm install

使用这个 AI 提示词

复制并粘贴给 GitHub Copilot、Claude 或 Cursor:

apps/productready 目录包含 ProductReady 模板代码。请帮我初始化它用于我的新项目:

阶段 1 - 清理:
1. 阅读 README.md 并理解项目结构
2. 完整删除 changelog/ 目录(我们将重新开始)
3. 清理 content/docs/:
   - 在 content/docs/en/ 中只保留 index.mdx,内容改为简单的 "# Welcome" 占位符
   - 在 content/docs/zh-CN/ 中只保留 index.mdx,内容改为 "# 欢迎" 占位符
   - 删除两个语言文件夹中的所有其他 .mdx 文件
4. 更新 src/db/seed.ts:
   - 保留演示用户种子数据(demo@productready.dev)
   - 删除所有示例文章种子数据
   - 如果不需要,删除代理任务种子数据
5. 清理 spec/ 目录:
   - 保留目录结构
   - 清空 product-design.md、icp-guide.md、marketing-guide.md 的内容
   - 接下来我们会填充这些文件

阶段 2 - 初始化我的项目:
项目名称:[你的项目名称]
描述:[你在构建什么]

核心功能:
- [功能_1]
- [功能_2]
- [功能_3]

目标用户:[这是为谁设计的]

阶段 3 - 规划:
清理完成后,创建详细的实施计划,包括:
1. 需要的数据库架构更改(修改 src/db/schema/)
2. 需要创建/修改的 tRPC 路由(在 src/server/routers/)
3. 需要的 UI 页面和组件
4. 身份验证/授权需求
5. 需要的 API 集成

请先执行阶段 1 清理,然后询问我项目详情以进行阶段 2。

步骤 3:与 AI 迭代开发

AI 完成清理后:

  1. 定义你的产品:AI 询问时填写你的项目详情
  2. 审查计划:AI 会创建待办事项列表 - 审查并调整
  3. 开始构建:在 AI 协助下完成待办事项
  4. 频繁测试:使用 pnpm dev 在本地测试更改

示例对话流程

你:[粘贴上面的 AI 提示词]

AI:✅ 完成阶段 1 清理。现在,请告诉我关于你的项目:
    - 它解决什么问题?
    - 谁是你的目标用户?
    - 核心功能是什么?

你:我在构建一个面向 SaaS 公司的客户反馈工具。
    目标用户:产品经理和创始人
    功能:调查创建、响应收集、情感分析

AI:很好!我现在将更新:
    - spec/product-design.md 填写你的 PRD
    - 数据库架构用于调查、响应、情感数据
    - tRPC 路由用于 CRUD 操作
    - UI 组件用于调查构建器
    
    这是实施计划:[详细待办事项]
    
    我应该继续进行数据库架构更改吗?

你:是的,但给调查添加一个"标签"字段用于分类

AI:✅ 已更新架构添加标签。这是更改...

迭代开发

AI 设置的优势:

  • 快 10 倍 比手动清理
  • 🎯 智能规划 - AI 创建结构化待办事项
  • 📝 文档化 - AI 在你构建时更新规范
  • 🔄 迭代式 - 边做边完善需求
  • 🧠 学习 - AI 解释它在做什么

迁移现有项目

如果你有现有的 Next.js/Node.js 应用,想采用 ProductReady 的模式。

为什么迁移到 ProductReady 模式?

  • 类型安全的 API - tRPC 消除 API 错误
  • 现代认证 - Better Auth 支持 OAuth
  • 更好的 DX - Drizzle ORM 提供类型安全的数据库查询
  • 清晰结构 - 可扩展的代码组织

何时重构 vs 重新开始

✅ 重构现有项目,如果:

  • 有想保留的功能
  • 生产环境有真实用户数据
  • 想采用特定的 ProductReady 模式(tRPC、Drizzle、Better Auth)
  • 需要渐进式、低风险的迁移
  • 团队已经熟悉现有代码库

✅ 从 ProductReady 重新开始,如果:

  • 从头构建新产品
  • 现有代码库技术债务过多
  • 想要最快的上市时间
  • 正在做原型或验证想法
  • 更喜欢从头开始

AI 迁移提示词

使用此提示词让 AI 帮你迁移现有项目:

我在 [你的项目路径] 有一个现有项目。我想重构它以遵循 ProductReady 模板架构。

请阅读 apps/productready 的 ProductReady 代码理解其模式,然后帮我迁移我的项目:

阶段 1 - 分析:
1. 分析我当前的项目结构和技术栈
2. 与 ProductReady 的架构对比(tRPC、Drizzle、Better Auth、VO/DTO)
3. 识别差距和痛点
4. 创建优先级迁移路线图

阶段 2 - 架构采用:
帮我迁移到:
- ✅ tRPC v11(替换我的 REST API 或从 tRPC v10 升级)
- ✅ Better Auth(替换 NextAuth/Auth.js/自定义认证)
- ✅ Drizzle ORM(从 Prisma/TypeORM/Sequelize 迁移)
- ✅ VO/DTO/PO 模式(在 API 边界添加类型安全)
- ✅ Fumadocs(设置文档系统)
- ✅ 演示模式支持(添加 ?demo=1 用于演示)
- ✅ CSS 变量设计系统(替换硬编码颜色)

阶段 3 - 代码重组:
重构我的代码以匹配 ProductReady 的布局:
- src/app/ - Next.js App Router 带路由组
- src/server/routers/ - 带 VO 验证的 tRPC 路由
- src/db/schema/ - 带关系的 Drizzle schemas
- src/lib/ - 共享工具和配置
- spec/ - 产品规范和文档

阶段 4 - 渐进式迁移:
创建逐功能迁移计划:
1. 新旧系统并行运行
2. 使用功能开关切换实现
3. 一次迁移一个 API 端点/页面
4. 保持生产环境正常运行
5. 验证后才删除旧代码

我的当前技术栈:
- 框架:[例如,Next.js 14 App Router]
- 数据库:[例如,Prisma + PostgreSQL]
- 认证:[例如,NextAuth.js]
- API:[例如,REST 端点或 tRPC v10]
- 样式:[例如,Tailwind CSS + shadcn/ui]
- 状态管理:[例如,Zustand、Redux]

需要解决的痛点:
[描述你的问题 - 例如,"前后端之间没有类型安全"、"会话处理的认证错误"、"数据库查询慢"]

请从阶段 1 分析开始,创建详细的迁移计划,包括:
- 需要注意的破坏性变更
- 数据迁移策略
- 每个阶段的回滚计划
- 每个步骤的预估工作量

示例迁移场景

场景 1:Prisma → Drizzle

AI 将:

  1. 将 Prisma schema 转换为 Drizzle
  2. 生成等效的迁移
  3. 更新查询为 Drizzle 语法
  4. 从 Prisma schema 添加 Zod 验证
  5. 测试数据完整性

场景 2:NextAuth → Better Auth

AI 将:

  1. 迁移 session/user 表
  2. 转换认证提供商配置
  3. 更新登录/注册流程
  4. 保留现有用户数据
  5. 端到端测试认证

场景 3:REST → tRPC

AI 将:

  1. 将 REST 端点转换为 tRPC 路由
  2. 添加输入/输出 Zod 验证
  3. 实现 VO/DTO 模式
  4. 更新前端为 tRPC 客户端
  5. 添加端到端类型安全

迁移检查清单

AI 完成迁移阶段后:

  • 所有测试通过 - 现有功能无回归
  • 数据库已迁移 - 数据完整性已验证
  • 认证可用 - 用户可以用现有账户登录
  • API 功能正常 - 所有端点正确响应
  • 类型安全 - 没有 any 类型,完整的 IntelliSense
  • 文档已更新 - README 和规范反映新架构
  • 性能正常 - 迁移未导致性能下降
  • 部署已测试 - 预发布环境正常工作

渐进式迁移的优势

  • 低风险 - 一次迁移一层
  • 保持运行 - 迁移期间功能保持可用
  • 逐步学习 - 在采用新模式时理解它们
  • 易于回滚 - 每个阶段都可以在需要时回滚
  • 团队协调 - 每个人一起学习新架构

重要提示:在进入下一阶段之前,始终彻底测试每个迁移阶段。在过渡期间使用功能开关在新旧实现之间切换。


演示模式

想在无需任何设置的情况下探索 ProductReady?先试试演示模式!

克隆仓库

git clone https://github.com/mr-kelly/productready.git
cd kapps/apps/productready

安装依赖

pnpm install

首次运行需要 1-2 分钟。

启动开发服务器

pnpm dev

你的应用现在运行在 http://localhost:3000

打开演示模式

访问:http://localhost:3000/dashboard?demo=1

你将看到一个可用的仪表板,包含:

  • 模拟 AI 代理任务
  • 示例数据
  • 所有功能都可用(无需数据库!)

适用于:探索功能、测试 UI、演示展示


手动设置

准备以传统方式设置 ProductReady?按照以下步骤操作。

克隆并安装

# 克隆仓库
git clone https://github.com/mr-kelly/productready.git
cd kapps/apps/productready

# 安装依赖
pnpm install

创建环境文件

# 复制示例环境文件
cp .env.example .env

现在在编辑器中打开 .env 并填入必需的值:

.env
# 数据库(必需)
PG_DATABASE_URL="postgresql://user:password@localhost:5432/productready"

# 认证(必需)
BETTER_AUTH_SECRET="your-secret-key-min-32-chars"
BETTER_AUTH_URL="http://localhost:3000"

# OAuth(可选 - 稍后添加)
GITHUB_CLIENT_ID=""
GITHUB_CLIENT_SECRET=""
GOOGLE_CLIENT_ID=""
GOOGLE_CLIENT_SECRET=""

生成密钥:运行 openssl rand -base64 32BETTER_AUTH_SECRET 生成随机密钥

设置数据库

选项 1:使用 Neon(推荐新手)

  1. 访问 neon.tech 并创建免费账户
  2. 创建新项目
  3. 复制连接字符串(类似:postgresql://user:pass@ep-xxx.us-east-2.aws.neon.tech/neondb
  4. 将其粘贴到 .env 中作为 PG_DATABASE_URL

选项 2:使用 Supabase

  1. 访问 supabase.com 并创建项目
  2. 进入项目设置 → 数据库
  3. 复制"连接字符串"(启用连接池)
  4. 将其粘贴到 .env 中作为 PG_DATABASE_URL

选项 3:使用 Docker Compose(推荐本地开发)

ProductReady 项目包含了 docker-compose.yml 配置文件,可以一键启动本地开发所需的数据库服务(PostgreSQL、Redis、Typesense)。

# 在项目根目录(kapps/)运行
make db

这将启动以下服务:

  • PostgreSQL: localhost:5432 (用户名: bika, 密码: bikabika, 数据库: bikadev)
  • Redis: localhost:6379
  • Redis Insight: http://localhost:8001 (管理界面)
  • Typesense: http://localhost:8108 (API Key: bikabika)

你的 .env 配置应为:

PG_DATABASE_URL="postgresql://bika:bikabika@localhost:5432/bikadev"

提示:使用 make db-stop 停止服务,make db-logs 查看日志。更多命令请参考部署指南

运行数据库迁移

# 生成迁移文件(如需要)
pnpm db:generate

# 运行迁移以创建表
pnpm db:migrate

你应该看到类似输出:

✓ 迁移成功
✓ 已创建表:users、sessions、tasks、posts

填充数据库(可选)

想要一些示例数据来测试?

pnpm db:seed

这将创建:

  • 演示用户:demo@productready.dev(密码:demo123456
  • 管理员用户:admin@productready.dev(密码显示在 seed 输出中,或通过 SITE_ADMIN_PASSWORD 设置)
  • 示例任务和文章
  • 所有功能的测试数据

启动开发服务器

pnpm dev

在浏览器中打开 http://localhost:3000

你应该看到:

  • ✅ 落地页加载
  • ✅ 登录/注册可用
  • ✅ 登录后可访问仪表板
  • ✅ 无控制台错误

快速入门教程

让我们通过实际示例探索 ProductReady 的关键功能。

登录仪表板

  1. 访问 http://localhost:3000/dashboard
  2. 使用以下账号登录:demo@productready.dev / demo123456(如果你运行了 db:seed
  3. 或创建新账户

创建你的第一篇文章

仪表板演示了完整的 CRUD 功能(文章):

  1. 点击仪表板中的 "新建文章" 按钮
  2. 填写:
    • 标题:"我的第一篇 ProductReady 文章"
    • 内容:"这是一篇测试文章,用于理解 tRPC、Drizzle 和 VO/DTO 模式"
  3. 点击 "创建"

你的文章立即出现!这演示了:

  • tRPC mutation - 类型安全的 API 调用
  • Drizzle ORM - 带类型安全的数据库插入
  • VO/DTO 模式 - 使用 Zod 的输入验证
  • React Query - 乐观更新和缓存失效

提示:打开开发者工具的网络标签查看 tRPC 调用。查看 src/server/routers/posts.ts 了解后端实现。

尝试 AI 代理界面(即将推出)

ProductReady 包含用于自主任务执行的 AI 代理界面:

  1. 访问 http://localhost:3000/agent
  2. 代理页面展示工作流程:
    • 任务队列管理
    • 执行状态跟踪
    • 结果显示

注意/agent 页面是一个展示代理工作流程的 UI 原型。完整的代理执行功能正在开发中。将其作为构建自己的 AI 代理功能的参考。

你可以学到的内容:

  • 代理任务生命周期(待处理 → 运行中 → 已完成)
  • 实时状态更新模式
  • 如何构建代理-人类交互 UI

恭喜! 你现在拥有:

  • 一个可用的 TypeScript Next.js 应用
  • 使用 Drizzle ORM 的数据库
  • 使用 Better Auth 的身份认证
  • 使用 tRPC 的类型安全 API
  • AI 就绪的任务管理系统

下一步

现在 ProductReady 已经运行,探索这些指南:

面向产品经理和设计师

面向开发者

部署到生产环境


故障排除

"数据库连接失败"

检查 .env 中的 PG_DATABASE_URL

  • 格式是否正确?postgresql://user:pass@host:port/db
  • 能用 psql 连接吗?测试:psql $PG_DATABASE_URL
  • 数据库是否在运行?检查:brew services list(macOS)

"端口 3000 已被占用"

终止进程或使用不同端口:

# 终止端口 3000 上的进程
lsof -ti:3000 | xargs kill -9

# 或使用不同端口
pnpm dev -- --port 3001

"找不到模块"错误

清除缓存并重新安装:

rm -rf node_modules .next
pnpm install
pnpm dev

仍然卡住?


接下来做什么?

一切就绪!以下是一些想法:

  1. 自定义落地页 - 编辑 src/app/(home)/page.tsx
  2. 添加新数据库表 - 查看数据库指南
  3. 构建新 API 端点 - 遵循 tRPC 指南
  4. 设计你的应用 - 使用设计系统
  5. 部署到生产环境 - 遵循 部署指南

准备好发布了吗?让我们开始吧!🚀

On this page