CV + vantage point — AI-powered resume analysis. Upload or build a resume, paste a job description, get match scores, skill gaps, one-click suggestions and interview prep.
NestJS 11 · MongoDB/Mongoose 8 · React 19 + Vite 6 · TanStack Query · Tailwind v4 · LangChain (OpenAI-compatible) · SSE live progress · OTel + Sentry (env-gated) · Playwright
- Node 22 (
nvm use 22) - Yarn 1.x classic:
npm i -g yarn(no corepack) - Docker (only for the Mongo container / full-stack profile)
git clone https://github.com/adityaparab/CVantage.git && cd CVantage
yarn install
cp .env.example .env # dev defaults work out of the box
docker compose --profile db up -d # MongoDB on 27017
yarn dev # server :3000 + vite :5173 (proxied /api)Open http://localhost:5173. API docs: http://localhost:3000/api/docs
(spec: /api/docs-json). Seed an admin:
ADMIN_EMAIL=admin@example.com ADMIN_PASSWORD='Choose-A-Strong-1' \
yarn workspace @cvantage/server seed:adminAI calls use your OPENAI_API_KEY from .env (or admin-managed models in
Settings). For a zero-key demo set LLM_PROVIDER=fake.
| Mode | Command |
|---|---|
| Local dev (HMR) | yarn dev |
| Production build, one port | yarn build && yarn workspace @cvantage/server start:prod |
| Full stack in Docker | cp .env.docker.example .env.docker then docker compose --profile full up --build |
| Railway | see docs/runbook.md (≈15 min) |
Data (Mongo + uploads) survives compose down via named volumes;
docker compose --profile full down -v is the full reset.
| Script | What |
|---|---|
yarn dev / yarn build / yarn test / yarn lint |
all workspaces |
yarn workspace @cvantage/server test:e2e |
API e2e (in-memory Mongo) |
yarn e2e:browser |
Playwright over the built stack |
yarn workspace @cvantage/frontend test:fast |
vitest without coverage |
node scripts/check-bundle-budget.mjs |
bundle budget report |
yarn workspace @cvantage/server smoke:llm |
real-provider LLM smoke |
Every key is documented in .env.example and validated at
boot — a parity test keeps the two in lockstep. Highlights: MONGODB_URI,
JWT/cookie secrets (dev defaults rejected in production),
MASTER_ENCRYPTION_KEY (32-byte base64; encrypts provider keys),
LLM_*, OAuth pairs (feature-flagged), SENTRY_DSN /
OTEL_EXPORTER_OTLP_ENDPOINT (both optional, zero overhead unset).
docs/architecture.md— module map + flowsdocs/runbook.md— deploy, rotate, restore, recoverdocs/security.md— threat model + enforcementsCONTRIBUTING.md— workflow + conventions