用途
convex-quickstart 用于把一句话想法(idea)快速变成可运行的最简 Convex + Web 模板。它面向“先跑起来、再谈扩展”的场景:在本地搭建一个 barebones(仅骨架)的 Next.js + Convex 模板,配合匿名(anonymous)开发部署,不包含预置鉴权,也没有发布步骤。
主要能力
- 运行 recipe quickstart-recipe@^2,参数为 {idea, template};该 pack 会拉取并缓存配方,并提供固定版本的离线回退。
- 自动完成:创建项目、安装依赖、启动后端(匿名)以及 Web 开发服务器。
- 在打印出开发 URL 后,将其打开供用户查看。
- 如需在模板之外继续构建功能,会先给出简短计划并请求确认后再动手。
使用方式与规则
- 若 recipe 已报告成功,不要重复运行。
- convex/ 目录下的代码交由 convex-expert 能力处理。
- 不引入 Postgres/Redis/Express,使用 Convex 原语。
- 此处不添加托管/发布或预置鉴权,除非用户明确要求更多,否则模板保持最小。
降级规则
当脚手架无法运行时(非交互式会话、无网络、沙箱临时目录,或用户只想要代码而非应用),跳过 recipe,直接编写标准 Convex 项目。所有后端代码必须位于 convex/ 下(schema.ts、functions),绝不放在项目根目录;Convex 函数只能在 convex/ 目录中运行。除非明确要求,不写任何脚手架/文档文件(如 START_HERE.md、ARCHITECTURE.md、MANIFEST.txt、大段 README)。"Build me a backend" 意味着代码,而不是仪式。
数据访问与导入约束
- 在编写任何 convex/*.ts 前:不要在可能增长的表上使用无界的 .collect(),应使用 .withIndex(...) 配合 .paginate(...)/.take(n)。
- 对相当于 SQL WHERE 的场景使用索引,而非 .filter()。
- .withIndex(...) 回调只支持 eq/gt/gte/lt/lte,没有 .range(...) 方法。
- 导入:query/mutation/action/internalQuery/internalMutation/internalAction 来自 ./_generated/server;api/internal 来自 ./_generated/api;应用代码中绝不从 convex/server 导入。
- 固定字符串/枚举成员用 v.literal("exact value"),不要用裸字符串。
- "use node" 只能放在仅含 action 的模块顶部,绝不要放在同时导出 query 或 mutation 的文件中。
- 不要将 Node 内建模块(crypto/fs/path/http/child_process/os,无论是否带 node: 前缀)导入到缺少 "use node" 的文件中,包括 http.ts 路由处理器;尽可能使用 Web Crypto(crypto.subtle)替代导入 crypto。
保留名称与 HTTP 路由
- 不要导出 const <jsReservedWord> = ...(如 delete、new、class、function、return)作为 query/mutation/action 的导出名,esbuild 无法解析。
- 表和索引名不要以 _ 开头(如 migrations: defineTable(...)), 是保留的,push 时会报 TableNameReserved/IndexNameReserved。
- httpRouter 没有 Express 风格的 :param 段(path: "/users/:id" 只会匹配该字面字符串,是死代码);应使用 pathPrefix 并自行解析尾部段。
- 每个 http.route({...}) 处理器都必须用来自 ./_generated/server 的 httpAction(...) 包裹;裸 async (ctx, request) => {...} 能通过类型检查,但不是有效的 HTTP action。
- ctx.runQuery/ctx.runMutation/ctx.runAction 需要 codegen 生成的函数引用(api.foo.bar/internal.foo.bar),绝不能是原始导入的模块成员。
自验证规则
在声明后端工作完成前,验证其可编译并可 push:运行 npx tsc --noEmit 并推送到一个部署。优先使用项目已有的部署;否则当 npx convex whoami 成功时使用 npx convex dev --once,仅在失败时使用 CONVEX_AGENT_MODE=anonymous npx convex dev --once。对已登录用户强制匿名会重新绑定 .env.local,使其失去所期望的持久、可发布的云部署。完成前修复其报告的所有错误——一轮验证可捕获相对导入错误、重复符号、括号不匹配等否则会破坏部署的问题。
适用场景与限制
- 适用:快速原型验证、从想法到本地可运行骨架、需要最小 Convex 配置的演示。
- 限制:模板刻意保持最小,不含鉴权与发布/托管;非交互或离线环境需走降级路径直接写代码;匿名模式仅在未登录时使用,以免影响既有云部署。
(资料未提供定价、收费或具体平台支持范围等信息。)