Three.js 交互式 3D 人体解剖开源项目
thebuggeddev/anatomy: An interactive 3D human anatomy explorer built using threejs with GPT 5.6 Sol
Three.js 交互式 3D 人体解剖开源项目
vinext-starter
一个基于vinext 的简洁全栈 starter,可选集成 Cloudflare D1 与 Drizzle ORM。
环境要求
Node.js >= 22.13.0
快速开始
npm install npm run dev # 启动本地开发服务器 npm run build # 构建项目,验证 vinext 构建产物本项目不使用
wrangler.jsonc。项目结构
路径
说明
app/站点业务代码(vinext / Next.js 风格)
.openai/hosting.json声明可选的 Sites D1 和 R2 绑定
vite.config.ts在本地开发环境中模拟声明的绑定
db/schema.ts数据库 Schema,初始为空,按需添加
examples/d1/可选的 D1 示例用法
drizzle.config.tsDrizzle 配置,支持本地迁移生成
工作空间用户身份(Workspace Auth Headers)
OpenAI Workspace Sites 可以通过请求头读取当前登录用户的信息:
邮箱:从
oai-authenticated-user-email头中获取。全名(SIWC 认证后):从
oai-authenticated-user-full-name头中获取,值为percent-encoded UTF-8 编码,同时附带oai-authenticated-user-full-name-encoding: percent-encoded-utf-8。全名为可选字段,缺失时请回退到邮箱:
import { headers } from "next/headers"; export default async function Home() { const requestHeaders = await headers(); const email = requestHeaders.get("oai-authenticated-user-email"); const encodedFullName = requestHeaders.get("oai-authenticated-user-full-name"); const fullName = encodedFullName && requestHeaders.get("oai-authenticated-user-full-name-encoding") === "percent-encoded-utf-8" ? decodeURIComponent(encodedFullName) : null; const displayName = fullName ?? email; // ... }可选的 ChatGPT 登录(Dispatch 托管)
当站点需要可选的 或必须的 ChatGPT 登录时,从
app/chatgpt-auth.ts导入即用型工具函数:
函数
用途
getChatGPTUser()获取当前登录用户(可选登录场景)
requireChatGPTUser(returnTo)未登录访客强制跳转至 Sign in with ChatGPT(服务端渲染页面)
chatGPTSignInPath(returnTo)生成登录链接,供前端
<a>或跳转使用
chatGPTSignOutPath(returnTo)生成登出链接
returnTo为同源相对路径,指定登录/登出后的跳转目标,工具函数会自动校验并安全编码。受保护页面必须添加
export const dynamic = "force-dynamic",因为它们依赖每次请求的动态身份头。重要说明
Dispatch 平台 托管了以下路径和逻辑,你不需要在
app/中实现它们:
/signin-with-chatgpt
/signout-with-chatgpt
/callbackOAuth Cookie 管理
身份头注入
只有调用了上述 helper 的路由才会触发登录流程,未调用的路由保持匿名可访问。
SIWC 仅建立用户身份,不证明工作空间成员资格。 如需工作空间级别的访问限制,请使用 Sites 托管平台的访问策略控制,或在服务端自行实现成员校验 / 白名单逻辑。
使用建议
场景
推荐做法
个人账户页、用户仪表盘、已保存记录、写操作
✅ 使用 SIWC 绑定当前 ChatGPT 用户
公开内容
✅ 保持匿名访问
常用命令
npm run dev # 启动本地开发 npm run build # 验证 vinext 构建产物 npm test # 构建并验证渲染的加载骨架屏 npm run db:generate # Schema 变更后生成 Drizzle 迁移文件了解更多
📖 vinext 文档
📖 Drizzle + Cloudflare D1 指南
提示:如需自定义数据库 Schema,编辑
db/schema.ts后运行npm run db:generate即可生成迁移文件。D1 绑定和 R2 绑定在.openai/hosting.json中声明,本地开发由vite.config.ts自动模拟,无需额外配置。
