- Clerk 鉴权 —— 必须登录,每个 API 请求都带上 JWT。
- 云端同步 —— 简历经过一套 NestJS 写的 Core API 往返,附带版本历史和简历分享。
- agent-service(TypeScript,后端侧)—— 对话、面试、翻译、JD 优化、PDF 解析。
模式判定逻辑
apps/web/src/lib/config/app.ts 解析当前模式:
src/middleware.ts 在模块加载时根据 APP_MODE 切换 Clerk 的 clerkMiddleware 或一个 no-op handler。没有运行时开关 —— 模式在构建时就定死了。
环境变量
后端服务
后端(Core API + agent)独立部署,不在本 monorepo 内,前面统一挡着一个网关。本地开发云端模式时,把后端跑起来,然后用NEXT_PUBLIC_API_URL 指向它的网关(dev 默认 http://localhost:3110)——前端永远只需要这一个 URL。如果你只想改前端,自托管模式更快。
鉴权流程
- Clerk 在登录时签发一个 JWT。
apps/web/src/lib/api/httpClient.ts在 Axios 请求拦截器里(configureHttpClient)把这个 JWT 作为Bearertoken 附上。httpClient.api和httpClient.agent都指向同一个网关源、共用同一个拦截器 —— 你不应该手动传 token。
