啡跃 Endoleap
本地 Next.js App Router + TypeScript + Tailwind CSS + shadcn/ui 项目。首页和账户页参考 qyof 的 PROMPT 文件,工作台使用合并后的单侧栏,参考 Notion 的留白与账户菜单组织方式。Other Designs 用于首页叙事与版式参考。
项目目录:/Users/zzyang/endoleap。
启动
npm ci
npm run dev
默认仅监听本机 localhost:17321。生产模式:npm run build && npm start。
- 首页:/
- 登录、注册:/login
- 登录回调:/auth/callback
- 真实工作台:/dashboard
- 本地演示:/dashboard?demo=1
- 无限图谱:/dashboard/{workspace}/{board}
路由结构
src/app/layout.tsx:根布局、中文语言标记、全局样式与页面元信息。src/app/page.tsx:首页。src/app/login/page.tsx、src/app/auth/callback/page.tsx:账户页与登录回调。src/app/dashboard/layout.tsx:共享单侧栏;page.tsx保留空白工作区。src/app/dashboard/dashboard.tsx:侧栏收起/展开、页面搜索、新建图谱与底部账户弹出框。src/app/dashboard/[workspace]/[board]/page.tsx:按 workspace 和图谱 ID 打开页面,重新读取后端资料。src/components/ui/icon-button.tsx:Lucide 图标按钮,图标为 16×16px,上下 4px、左右 6px 内边距,总尺寸为 28×24px。src/app/api/**/route.ts:Foundry 代理与 OAuth 跳转,使用 App Router Route Handlers。
配置
复制 .env.example 为 .env.local,按实际部署填写:
- FOUNDRY_API_ORIGIN:仅供 Next 服务端请求后端,默认 https://api.foundry.entroia.com。
- NEXT_PUBLIC_FOUNDRY_PROJECT:项目标识,默认 endoleap。
Slack Client Secret、Signing Secret、Verification Token、用户令牌与 app token 均不需要放入此前端。浏览器调用同源 Next API,由服务端转发到 Foundry。Foundry 会话保存在 HttpOnly / SameSite=Lax Cookie,生产 HTTPS 反向代理需传 X-Forwarded-Proto=https。不要将原始会话写入客户端存储。
Google / Slack 的提供方回调仍是 Foundry 后端地址;后端的项目回调映射必须指向本前端 /auth/callback。协议、主机名、端口必须与启动第三方登录时一致,否则 sessionStorage 中的 verifier 无法恢复。正式账号授权、邮件验证与 OAuth 全流程尚未完成真人验收;HTTP 302 跳转成功不能代表登录成功。
当前功能与范围
- 响应式首页、锚点导航与 FAQ。
- 邮箱注册 / 登录 / 邮件验证兑换,Google 和 Slack 的 PKCE 登录入口及回调处理。
- 真实用户资料、空间列表与创建、画布列表与创建。资料和空间并行读取;首次创建画布时自动建立个人空间。
- 单侧栏第一行提供完全收起/恢复与新建页面,第二行为当前空间页面列表搜索,底部账户弹出框提供空间切换和退出登录。
- 新建页面使用 Foundry Core 的
POST /workspaces/{workspace}/materials,提交kind: board、默认名称“未命名图谱”和内容版本;由后端生成 ID。没有空间时先创建“个人空间”,成功后跳转到图谱的独立地址。 - 本地演示提供示例图谱、搜索、新建和浏览器保存,支持图谱独立地址与刷新。
- 图形编辑、连接线、分享、Agent、收藏及完整布局持久化尚未接入。图谱页面目前只显示已保存的名称和空白图谱区域;演示数据不写入线上。
- 本地演示仅用于查看界面,不提供后端认证与权限。
Figma 原始 Logo、人物插画与图标已下载到 public/assets,不依赖临时 Figma URL。品牌保持啡跃 Endoleap;shadcn Button / Dialog 使用官方 registry 源码。依赖版本固定,package-lock.json 可用于 npm ci。
验证
npm run build
node tests/api-smoke.mjs
API 测试使用本机临时后端和独立前端进程,检查会话 Cookie、令牌不泄漏、同源校验和路径白名单,不访问线上账号。构建需先完成。冒烟测试还覆盖所有页面地址、元信息、OAuth 跳转、请求体限制及退出会话。此前的浏览器验收覆盖登录/注册切换、演示画布创建、搜索空状态、笔记保存、桌面与 390px 手机布局;本次迁移的验证结果见 VALIDATION.md。
若执行环境限制 Turbopack 的 CSS 工作进程绑定本地端口,可使用官方 Webpack 模式:npm run build -- --webpack。
项目已同步至 ssh://git@gitea.entroia.com:22222/Zayden-Jung/endoleap.git;尚未部署。
性能分析、实测耗时和修复说明见 PERFORMANCE.md。
流程回归可在支持 TypeScript 类型擦除的 Node 版本执行:node --experimental-strip-types --test tests/workspace.test.mjs。