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.ts

Drizzle 配置,支持本地迁移生成


工作空间用户身份(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

    • /callback

    • OAuth 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 自动模拟,无需额外配置。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐