尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗AI-powered voice interview and resume screening platform. Chinese-first locale: agent instructions, system prompts, and interview flows are written in Simplified Chinese.
apps/web/): TanStack Start + React 19,
TanStack Router, TanStack Query, Better Auth client, shadcn/ui, Tailwind CSS
v4, and Vite/Nitro output. It owns the browser UI, route loaders, server
functions, SSR/SSG, and the mounted Hono API adapter.apps/server/): Hono API runtime,
Drizzle ORM, PostgreSQL, Better Auth, object storage, email, and server-side
AI utilities. It can be mounted by the web app at /api or started as a
standalone Bun service.apps/worker/): background processing for resume
parsing, meeting transcription, and notification/queue reconciliation.apps/livekit-agent/): Python LiveKit Agents SDK, defaulting to
Qwen Realtime speech-to-speech. The optional pipeline mode uses DashScope
streaming STT, an OpenAI-compatible LLM, and MiniMax TTS.packages/): @app/shared (isomorphic contracts and
schemas), @app/db-schema (Drizzle schema and relations), @app/database
(database factory, scoped database context, query helpers), @app/recruiting
(recruiting record domain persistence), and @app/job-queues (BullMQ
queue contracts).packages/): @app/ai-runtime,
@app/object-storage, @app/meeting-media, @app/meeting-live-transcript,
@app/meeting-processing, @app/feishu, @app/recruiting-workflows, and
@app/resume-processing.Two package managers are used: Bun 1.4.0 for TypeScript apps/packages and uv for the Python agent. Do not mix them.
make install
cp apps/web/.env.example apps/web/.env
cp apps/server/.env.example apps/server/.env
cp apps/worker/.env.example apps/worker/.env
cp apps/livekit-agent/.env.example apps/livekit-agent/.env
bun run db:migrate
make dev
make agent-console runs an in-terminal chat against the agent without opening
a LiveKit room. make help lists every Make target.
Build and start the Bun 1.4.0 web and worker images. Web loads apps/web/.env; Worker loads apps/worker/.env.
Configure their intended database, Redis, and storage targets before starting:
BETTER_AUTH_URL=http://localhost:3000 \
docker compose -f docker-compose.yml -f docker-compose.local.yml up --build -d
Open http://localhost:3000. Web readiness is available at http://localhost:3000/api/ready, and worker readiness is available at http://localhost:8790/readyz. Because the worker uses the real application configuration, it connects to the configured Redis queue immediately and may process pending jobs just like a normal local worker start.
Stop the local validation stack with:
BETTER_AUTH_URL=http://localhost:3000 \
docker compose -f docker-compose.yml -f docker-compose.local.yml down
Each runtime owns its own .env file:
apps/web/.env for the TanStack Start web app.apps/server/.env for standalone Hono backend runs.apps/worker/.env for background processing.apps/livekit-agent/.env for the Python LiveKit agent.Key requirements:
DATABASE_URLBETTER_AUTH_SECRET, BETTER_AUTH_URL,
NEXT_PUBLIC_BASE_URL, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRETOPENAI_API_KEY, ALIBABA_API_KEY (DashScope OCR and
structured extraction), DASHSCOPE_API_KEY (voice-agent LLM/STT)DASHSCOPE_API_KEY for default realtime mode;
MINIMAX_API_KEY for TTS in pipeline modeLIVEKIT_URL, LIVEKIT_API_KEY, LIVEKIT_API_SECRET,
AGENT_NAME, NEXT_PUBLIC_AGENT_NAME; private/self-hosted deployment is the
default, and LiveKit Cloud requires INTERVIEW_SELF_HOSTED=0S3_* for uploads and RECORDING_R2_* for recordingsFEISHU_*, RESEND_*The web app intentionally keeps the existing NEXT_PUBLIC_* variable names.
Vite exposes them through envPrefix: ["VITE_", "NEXT_PUBLIC_"], so client code
reads them from import.meta.env.NEXT_PUBLIC_*.
| Command | Purpose |
|---|---|
bun run dev | Turbo dev across apps |
bun run build | Turbo production build |
bun run typecheck | Turbo TypeScript checks |
bun run test | Turbo tests |
bun run check / bun run fix | Ultracite check / autofix |
bun run db:generate | Generate Drizzle migrations through web app |
bun run db:migrate | Apply Drizzle migrations through web app |
bun run db:studio | Drizzle Studio |
bun run hooks | Install lefthook git hooks |
bun run --filter @app/web dev
bun run --filter @app/web build
bun run --filter @app/web typecheck
bun run --filter @app/web test
bun run --filter @app/server dev:standalone
bun run --filter @app/server start
bun run --filter @app/server typecheck
bun run --filter @app/server test
cd apps/livekit-agent
uv sync
uv run src/agent.py download-files
uv run src/agent.py dev
uv run src/agent.py console
uv run pytest
uv run ruff format
uv run ruff check
apps/
web/
src/routes/ TanStack Router file routes
src/lib/start/ server functions and Start-only helpers
src/lib/client/ browser helpers and Hono RPC client
nitro/ Nitro plugins and WebSocket handlers
src/lib/og-image/ server-only OG response generation
src/components/ shadcn/ui + project components
src/server.ts TanStack Start server entry
src/client.tsx browser entry
vite.config.ts TanStack Start / Vite / Nitro config
server/
src/app.ts Hono app factory
src/routes/ route folders with route.ts/schema.ts/dao
src/infrastructure/ backend adapters and database-bound facades
src/index.ts standalone Bun entrypoint
desktop/
src/main/ Electron main process (Echo capture, SQLite)
src/renderer/ Echo renderer (local-first meeting capture)
worker/
src/ background queues, schedulers, and readiness
livekit-agent/
src/agent.py Python LiveKit agent entrypoint
tests/ pytest suite
packages/
shared/ isomorphic contracts, schemas, state machines
db-schema/ Drizzle PostgreSQL schema, relations, enums
database/ Drizzle factory, scoped database context, query helpers
recruiting/ recruiting records, pipeline, AI review, Offer approval
ai-runtime/ provider-neutral server-side model primitives
object-storage/ S3-compatible client, keys, upload/download/copy
resume-processing/ resume ingest, parsing, review, semantic workflows
meeting-media/ recording normalization and audio preparation
meeting-live-transcript/ live-transcript capture/correction/relay contracts
meeting-processing/ meeting transcription/intelligence/purge workflows
job-queues/ BullMQ contracts for resume and meeting jobs
feishu/ Feishu Open Platform client (credentials, docx)
recruiting-workflows/ interview, report, notification workflows (server + worker)
createServerFn..validator(...) with Zod schemas.@tanstack/react-router-ssr-query; route loaders prefetch/dehydrate query
data where needed.@/lib/client/rpc and
rpcFetch.fetch or
apiFetch.Every route folder under
apps/server/src/routes/ is self-contained:
route.ts exports a Hono router.schema.ts contains Zod schemas when needed.dao.ts or dao/ contains route-owned database queries.utils.ts or utils/ contains feature-internal helpers.routes/ and are mounted from the parent.Keep middleware inside the closest owning router. src/app.ts should remain
mount-only.
When touching fast-moving APIs, prefer canonical docs:
lk docs overview / lk docs searchSee the documentation index for current guides and historical records.
AGENTS.md is the shared repository convention; CLAUDE.md imports it.