GitHub - Asymmetric-al/core: 面向使命导向的非营利组织的高性能企业级 Next.js 16 应用。为高影响力团队打造。

2026-06-21T01:17:25.394911

GitHub - Asymmetric-al/core: 面向使命导向的非营利组织的高性能企业级 Next.js 16 应用。为高影响力团队打造。

为使命导向组织构建的高性能 Next.js 16.2.6(App Router)Turborepo 单体仓库(monorepo),包含三个应用(apps/admin、apps/donor、apps/missionary)和共享工作区包(packages/*)。

执行 git pull 后,如果技能文件发生更改:运行 bun run skills:verify。如果报告 docs/ai/skills/ 与 .agents/skills/ 和 .cursor/skills/ 下的镜像之间存在差异,请运行 bun run skills:sync 并提交更新后的镜像文件,以便 CI 和团队成员保持一致。

环境变量

必需:NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY
可选:.env.example 中的其他条目(Stripe、演示账户等)

开发

bun run dev 通过 Turbo(turbo run dev)运行所有应用。bun run verify 中的默认 HTTP 检查使用 http://localhost:3000VERIFY_BASE_URL),因此请使用 bun run dev:donor(或将 VERIFY_BASE_URL 指向你正在运行的应用)。

每个应用的开发命令(从根目录 package.json):
- bun run dev:donor → donor 应用,端口 3000
- bun run dev:admin → admin 应用,端口 3030
- bun run dev:mission-control → Mission Control 管理应用,端口 3030,带有 Cloud Agent 友好的开发默认值
- bun run dev:missionary → missionary 应用,端口 4000

开发环境的最终依据是仓库根目录的 .env.local。每个应用的 next.config.ts 使用 @next/env 加载该根文件;开发脚本不会将机密信息复制到应用目录中。如果旧工具需要应用本地环境变量文件,请运行 bun run env:link-apps 创建符号链接,或者当文件符号链接权限不可用时创建 Windows 硬链接。除非使用 --force 重新运行,否则该辅助程序会拒绝覆盖现有的应用 .env.local。

Cursor Cloud Agent

对于 Cursor Cloud Agent 运行,请在 Cloud Agent 机密信息设置中设置机密信息,而不是将值提交到仓库文件中。在云环境中设置以下密钥:
- NEXT_PUBLIC_SUPABASE_URL
- NEXT_PUBLIC_SUPABASE_ANON_KEY
- SUPABASE_SERVICE_ROLE_KEY(可选,仅用于服务器端/管理工作流程)

安全规则:
- .env.local 仅保留在本地,并且已被 .gitignore 忽略。
- 切勿在浏览器/客户端代码中暴露 SUPABASE_SERVICE_ROLE_KEY。
- 浏览器登录流程只需要 NEXT_PUBLIC_SUPABASE_URL 和 NEXT_PUBLIC_SUPABASE_ANON_KEY。

Mission Control Cloud Agent 沙盒

当新的 Cursor Cloud Agent,或同一沙盒中的人类需要 Mission Control Dashboard 但没有真实的 Supabase 项目时,使用此命令。

bun run setup:mission-control:cloud
bun run dev:mission-control

然后打开 http://localhost:3030。setup 命令仅会写入已被 .gitignore 忽略的 .env.local 默认值:SKIP_ENV_VALIDATION=1, E2E_AUTH_BYPASS=true,占位符公共 Supabase 值,以及 admin Playwright 基础 URL。现有的显式 E2E_AUTH_BYPASS=false 值会被保留,除非你传递 --force-bypass。在测试实时身份验证或托管数据时,请将占位符替换为真实的 Supabase/演示账户机密信息。

Windows 设置

Windows PowerShell 5.1:

powershell -ExecutionPolicy Bypass -File .\scripts\setup.ps1

PowerShell 7+:

pwsh -File .\scripts\setup.ps1

首次运行会创建 .env.local。填写以下必需值,然后重新运行设置:NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY

脚本顺序与 Unix 上的 bun run setup 相同:安装依赖项(除非使用 -SkipInstall),运行 bun run skills:verify,然后运行 bun run setup:verify。在拉取涉及技能文件的更改后,运行 bun run skills:verify;如果报告镜像差异,请运行 bun run skills:sync 并提交更新后的镜像文件。

如果已经运行过依赖项安装,请跳过:

pwsh -File .\scripts\setup.ps1 -SkipInstall

本地安装并运行 PSScriptAnalyzer(非必需):

Install-Module PSScriptAnalyzer -Scope CurrentUser
Invoke-ScriptAnalyzer -Path .\scripts\setup.ps1, .\scripts\lib\*.ps1

技术栈

视觉规范

该平台在桌面和移动端使用以锌色为主的浅色主题(Maia tokens)。

应用与端口

每个界面都是一个独立的 Next.js 应用,包含自己的 app/ 树和开发端口(参见快速入门)。

界面 开发端口 备注
Donor @asym/donor 3000 公共网站 + /donor-dashboard 下的捐赠者仪表盘(认证区域)
Admin(Mission Control) @asym/admin 3030 员工/管理 UI;路由位于 apps/admin/app/ 下(例如 /, /contributions, /crm)。Mission Control shell 中的许多应用内链接使用 /mc/... 前缀。
Missionary @asym/missionary-app 4000 传教士仪表盘;首页路由 /

共享认证守卫使用 packages/auth/middleware.ts 中的 createAuthMiddleware,通过每个应用的 apps/*/proxy.ts(导出 proxy)进行连接。

当只需要一个界面时,使用每个应用的 dev:* 脚本;当需要多个应用时,使用 bun run dev / bun run dev:all(参见根 package.json)。

AI Agent 文档

面向 Agent 的文档位于 docs/ai/ 下:

查看原文