尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Apply jobs for the job seekers, including refining resume, online mock interview, feedback, learning...
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
AI candidate-facing job-application app — extracted from the RoboHire monorepo into a standalone, Vercel-deployable system.檢視完整 README ↗AI candidate-facing job-application app — extracted from the RoboHire monorepo into a standalone, Vercel-deployable system.
roboapply.io).server/, served on Vercel as a single Serverless Function via api/index.ts (export default app).interview-agent/ LiveKit voice worker for mock interviews (a separate always-on process; cannot run on Vercel serverless — host it on Render/Railway/Fly).docs/ENGINEERING_PLAN.md for the DB-split path).See docs/ENGINEERING_PLAN.md for architecture & rationale and docs/TASK_PLAN.md for the phased execution checklist.
On the feat/jobright-clone branch this codebase serves two product brands, resolved per request from the Host header: RoboApply (roboapply.io, the international market including Taiwan) and GoApply (goapply.top, mainland China). Both have the same functions and run on the same shared stack: one set of credentials for models, email, voice, storage and web push serves both. A China-specific provider (CN_<NAME> in .env.example) is an optional override of <NAME>, never a prerequisite, so GoApply works with no variable of its own. What differs is what follows from the market: job sources and job-search providers, language, currency and prices, the payment rail (Alipay for GoApply, Stripe for RoboApply), extra sign-in methods and legal lines. Neither brand ever submits a job application for the user. A deployment serves both brands unless ALLOWED_BRANDS narrows it (ALLOWED_BRANDS=roboapply keeps GoApply closed). The plans are indexed in docs/jobright-clone/README.md; the parity rules are in docs/jobright-clone/GOAPPLY_PARITY_PLAN.md. Locally, ./scripts/dev-clone.sh starts both brands at http://localhost:3621 and http://goapply.localhost:3621.
cp .env.example .env # fill in DATABASE_URL, JWT_SECRET, LLM keys, …
npm install # installs deps + runs `prisma generate`
npm run dev # Express API (.env PORT, default :4607) + Next.js :3611 (concurrently)
Open http://localhost:3611. The Next dev server proxies /api/* → the local Express API (NEXT_PUBLIC_API_URL).
To also run the mock-interview voice worker:
cd interview-agent && cp .env.example .env.local # LiveKit creds
npm install && npm run dev
| Script | What it does |
|---|---|
npm run dev | Express API + Next.js together (dev) |
npm run dev:server | Express API only (tsx watch) |
npm run dev:web | Next.js only (:3611) |
npm run build | The exact Vercel build: prisma generate && tsc -p server && next build |
npm run build:server | Compile the Express backend to server/dist |
npm run typecheck:server | Type-check the backend (no emit) |
npm run db:push | Push the Prisma schema (uses DIRECT_DATABASE_URL) |
npm run test | Frontend vitest |
. Next.js app (app/, components/, hooks/, lib/, i18n/, …)
├─ api/index.ts Vercel function entry → re-exports the Express app
├─ server/ Standalone Express backend
│ ├─ src/app.ts The Express app (roboapply + interview-engine + cron routes)
│ ├─ src/roboapply/ Extracted /api/v1/roboapply/* routers + V2 + engine
│ ├─ src/interview-engine/ Mock-interview control plane
│ ├─ src/cron/handlers.ts Vercel-Cron HTTP endpoints (CRON_SECRET-gated)
│ ├─ src/{lib,services,agents,middleware,types,brands,utils}/ shared closure
│ └─ prisma/schema.prisma (generates client to server/src/generated/prisma)
├─ interview-agent/ LiveKit voice worker (deploy separately)
├─ prisma.config.ts Points prisma at server/prisma/schema.prisma
└─ vercel.json rewrites (/api/v1/* → the function) + crons + function config
.env.example) — leave NEXT_PUBLIC_API_URL empty in production so the browser calls same-origin /api/v1/*. Set CRON_SECRET, DATABASE_URL (pooled), DIRECT_DATABASE_URL, JWT_SECRET, COOKIE_DOMAIN=.roboapply.io, LLM/Stripe/LiveKit/S3 keys.vercel.json already wires the rewrite, the function (maxDuration: 300), and the 7 cron jobs.interview-agent/ on an always-on Node host and give it the LiveKit creds + NEXT_PUBLIC_API_URL → the deployed API.Full deploy runbook + known follow-ups: docs/ENGINEERING_PLAN.md.