解剖学:一个使用threejs和GPT 5.6 Sol构建的交互式3D人体解剖探索器
本文介绍了vinext-starter,一个基于vinext的全栈启动器,支持Cloudflare D1和Drizzle数据库。包括快速启动步骤、工作空间认证集成(如OpenAI和ChatGPT登录辅助工具)、代码结构说明和开发命令,面向开发者提供完整的项目模板和指南。
来源:GitHub
本文介绍了vinext-starter,一个基于vinext的全栈启动器,支持Cloudflare D1和Drizzle数据库。包括快速启动步骤、工作空间认证集成(如OpenAI和ChatGPT登录辅助工具)、代码结构说明和开发命令,面向开发者提供完整的项目模板和指南。
来源:GitHub
>=22.13.0\n\n## 快速启动\n\nbash\nnpm install\nnpm run dev\nnpm run build\n\n\n此启动器不使用wrangler.jsonc。\n\n## 包含结构\n\n- 在app/下编辑站点代码\n- .openai/hosting.json声明可选的Sites D1和R2绑定\n- vite.config.ts模拟本地开发的声明绑定\n- db/schema.ts初始为空\n- examples/d1/包含可选的D1示例表面\n- drizzle.config.ts支持本地迁移生成(当需要时)\n\n## 工作空间认证头\n\nOpenAI工作空间站点可以从oai-authenticated-user-email读取当前用户的电子邮件。\n\nSIWC认证的工作空间站点在用户SIWC配置文件有非空name声明时,也可能接收oai-authenticated-user-full-name。全名值为百分号编码的UTF-8,并伴随oai-authenticated-user-full-name-encoding: percent-encoded-utf-8。\n\n将全名视为可选,并在缺失时回退到电子邮件:\n\ntsx\nimport { headers } from \"next/headers\";\n\nexport default async function Home() {\n const requestHeaders = await headers();\n const email = requestHeaders.get(\"oai-authenticated-user-email\");\n const encodedFullName = requestHeaders.get(\"oai-authenticated-user-full-name\");\n const fullName =\n encodedFullName &&\n requestHeaders.get(\"oai-authenticated-user-full-name-encoding\") ===\n \"percent-encoded-utf-8\"\n ? decodeURIComponent(encodedFullName)\n : null;\n\n const displayName = fullName ?? email;\n // ...\n}\n\n\n## 可选Dispatch拥有的ChatGPT登录\n\n当站点需要可选或必需的ChatGPT登录时,从app/chatgpt-auth.ts导入即用型辅助工具:\n\n- 使用getChatGPTUser()获取可选的已登录UI。\n- 使用requireChatGPTUser(returnTo)用于服务器渲染页面,应将匿名访问者通过Sign in with ChatGPT发送。\n- 使用chatGPTSignInPath(returnTo)和chatGPTSignOutPath(returnTo)用于浏览器链接或操作。\n- 传递一个同源相对returnTo路径,作为登录或注销后目的地。辅助工具会验证并安全编码它。\n- 用`export const dynamic =