Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
EvalcueAI: 소프트웨어 엔지니어를 위한 AI 면접 연습·코딩·시스템 설계·기술 인터뷰와 적응형 피드백
EvalcueAI is AI interview practice and structured technical hiring for software engineers: coding, system design, and technical interviews with adaptive AI follow-ups.
비즈니스JavaScript · PythonGitHub @srbmaury온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기AI-assisted interview practice and candidate screening with role-specific voice and coding sessions, structured assessments, and hiring reports.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
EvalcueAI is a full-stack platform for software engineering interview practice and structured technical hiring. Candidates can rehearse conversational, coding, and system-design interviews with adaptive AI follow-ups. Hiring teams can create role-specific assessments, including multi-file debugging assignments, invite candidates, collect technical evidence, and review scorecards while keeping employment decisions human-controlled.README 전문 보기 ↗EvalcueAI is a full-stack platform for software engineering interview practice and structured technical hiring. Candidates can rehearse conversational, coding, and system-design interviews with adaptive AI follow-ups. Hiring teams can create role-specific assessments, including multi-file debugging assignments, invite candidates, collect technical evidence, and review scorecards while keeping employment decisions human-controlled.
EvalcueAI is deployed as three intentionally separated product surfaces from the same codebase. VITE_APP_SURFACE and deployment guards prevent Practice and Hiring from becoming path-only variants of one application.
Production host: evalcueai.com
Canonical public route in the shared client: /
Production host: practice.evalcueai.com
Canonical public route in the shared client: /practice
Production host: hiring.evalcueai.com
Canonical public route in the shared client: /hire
React 19 / Vite / MUI
|
v
Express 5 API
| | | |
MongoDB Redis AI APIs External services
BullMQ OpenAI / PayU, Brevo,
Gemini Cloudinary, code runner
runner/: Node.js HTTP API + nsjail sandbox) for single-file runs and multi-file debugging projectsclient/ React/Vite SPA
src/components/ shared UI, interview workspaces, SEO helpers
src/pages/ public, practice, hiring, and admin pages
e2e/ Playwright browser journeys
server/ Express API
src/controllers/ request/domain controllers
src/models/ Mongoose models
src/queues/ BullMQ queues and workers
src/routes/ API routing and authorization composition
src/services/ business logic and integrations
src/test/ unit and API journey coverage
observability/ dashboards, PromQL, and alert guidance
For local development: Node.js 22 (see .nvmrc; nvm use), MongoDB, and credentials for whichever integrations you want to exercise. AI features require OpenAI or Gemini. Resume storage requires Cloudinary.
Production additionally requires Redis, HTTPS, Brevo transactional email, CAPTCHA, PayU (including Zion for automatic renewal), MongoDB transactions, and any dependencies for enabled STT/code-execution features.
cd server && npm install
cd ../client && npm install
The checked-in example contains development-safe defaults rather than production settings:
cp server/.env.example server/.env
At minimum, set a real JWT_SECRET and a reachable MONGO_URI. Configure OPENAI_API_KEY or GEMINI_API_KEY to use AI features. PRACTICE_CLIENT_ORIGIN and HIRING_CLIENT_ORIGIN are the canonical product browser origins; CLIENT_ORIGIN remains the local/legacy fallback.
For production set NODE_ENV=production and configure, at minimum:
ALLOWED_ORIGINS, CLIENT_ORIGIN, PRACTICE_CLIENT_ORIGIN, HIRING_CLIENT_ORIGIN, and SERVER_ORIGINREDIS_URLMETRICS_TOKENrunner/) with CODE_RUNNER_URL and CODE_RUNNER_TOKEN when code execution is enabledENABLE_DEBUGGING_ASSESSMENTS=true only when the debugging-assignment feature is intentionally enabled; code-fix debugging additionally requires ENABLE_CODE_EXEC=truecp client/.env.example client/.env
Important values:
VITE_API_BASE_URL=/api for same-origin/proxied API callsVITE_PUBLIC_ORIGIN=https://your-public-origin.example in production for canonical URLs, JSON-LD, sitemap.xml, and robots.txtVITE_APP_SURFACE=landing, practice, or hiring when deploying the shared client as separate sitesVITE_LANDING_ORIGIN, VITE_PRACTICE_ORIGIN, and VITE_HIRING_ORIGIN for safe cross-site navigation and candidate linksVITE_GA_MEASUREMENT_ID to enable Google Analytics (gtag.js); leave unset to disable it. VITE_GA_LOCAL_ENABLED opts a local dev machine into sending real hits, off by default so npm run dev traffic doesn't pollute production GA dataSee docs/operations.md for frontend deployment and DNS setup.
# terminal 1
cd server
npm run dev
# terminal 2
cd client
npm run dev
Default URLs: client http://localhost:5173, API http://localhost:5000.
Client:
cd client
npm run lint
npm test -- --run
npm run build
npx playwright install chromium
npm run test:e2e
Server:
cd server
npm run test:unit
npm run test:e2e
npm run audit
npm run test:launch runs the launch-critical API journeys. GitHub Actions runs client lint/unit/build/Playwright/audit plus server unit/API/audit checks on pushes and pull requests. The workflow also attempts to retain browser diagnostics as CI artifacts when needed.
See docs/operations.md for the full command reference.
Public/indexable:
/ — product overview/practice — candidate interview-practice product/hire — technical-hiring product/docs and /docs/* — public documentation/practice/resources/:slug, /hire/resources/:slug — SEO resource pages/privacy/termsCandidate assessment links:
/assessment/:shareTokenAuthenticated Practice:
/practice/dashboard/practice/new/practice/interviews/:interviewId/practice/interviews/:interviewId/feedback/practice/weekly-plan/practice/company-insights/practice/resumes/practice/resume-review/practice/resume-reviews/practice/resume-match/practice/resume-generate/practice/saved-experiences/practice/progress/practice/profile/practice/pricing/practice/billing/successAuthenticated Hire:
/hire/assessments/hire/assessments/:assessmentId/hire/assessments/:assessmentId/preview/hire/team/hire/pilot/hire/sso/hire/fairness/hire/billing/successOlder routes such as /assessments, /create-interview, /dashboard, /interview-practice, and /technical-hiring are compatibility redirects and should not be used as canonical links.
Development/test API documentation:
GET /api-docsGET /api-docs.jsonSwagger UI/JSON are intentionally disabled in production.
Major API areas:
/api/auth/* — registration, login, refresh, profile, verification, password recovery, reminders, deletion/api/resumes/* — resume CRUD, preview, AI review, history, JD matching/api/interviews/*, /api/rounds/*, /api/questions/*, /api/feedback/* — Practice interview lifecycle/api/assessments/* — hiring assessment creation, candidate pipeline, reporting, invitations, scorecards/api/assessments/public/:shareToken/* — candidate assessment experience guarded by hashed attempt credentials/api/billing/* — Practice/Hiring entitlements, PayU checkout and mandate management, verified PayU callbacks and Zion reconciliation/api/organizations/*, /api/sso/* — hiring organization and SSO workflows/api/stt/*, /api/run-code — optional transcription and code execution/health/liveness, /health/readiness, /metrics — operations endpointsSystem-design rounds use a single architecture problem with an Excalidraw canvas and a live discussion. During the interview EvalcueAI can issue bounded, context-aware interviewer interjections rather than only one fixed follow-up. The interviewer can probe requirements, capacity, consistency, reliability, security, observability, or clarification questions without revealing a solution or coaching the candidate.
The system stores the final candidate transcript as the authoritative answer, the diagram/derived topology summary, and bounded discussion turns. Evaluation uses the complete final candidate transcript plus interviewer prompts and diagram context, so truncating old UI discussion turns does not discard early candidate reasoning.
For hiring assessments, candidate-facing screens do not reveal private scores or recruiter feedback. AI output is advisory evidence; employment decisions remain with human reviewers.
Debugging is an opt-in Hire round type for production-style code comprehension rather than blank-editor algorithm solving. The recruiter defines the debugging round as part of the assessment; candidates cannot create, select, or skip into a debugging round outside the configured assessment sequence.
Recruiters author an immutable multi-file project baseline in a hierarchical browser workspace and choose one of two response modes:
source files plus recruiter-only hidden_test files. Candidates can edit, create, or delete source files while test files remain inaccessible. Recruiters give each hidden test a candidate-safe display name. When candidates choose Run tests, the server executes the hidden tests but returns only safe names and pass/fail results; test paths, source, assertions, expected values, stderr, stack traces, and other diagnostics are never exposed. Final submission reruns the hidden suite and persists deterministic evidence for the recruiter report.The assignment baseline remains immutable from the candidate’s perspective. Code-fix work is stored as an overlay of changed, created, and deleted source files instead of duplicating the full project, which supports reload recovery while keeping recruiter-authored hidden tests server-side. Candidate payload sanitization removes hidden-test files before any workspace reaches the browser.
Recruiter reports keep deterministic debugging evidence separate from AI scoring. Code-fix reports show the final execution status, changed-path summary, aggregate pass counts, and candidate-safe hidden-test names/results. Findings reports show the candidate’s file-scoped findings. Hidden test definitions and diagnostics are never included in candidate or recruiter-facing result payloads.
Code-fix execution runs on the sandboxed code runner (runner/) with fixed, server-owned build and test commands per runtime. Recruiters cannot provide shell commands. Each hidden test file runs as its own program; it passes when it exits with status 0. Supported runtimes:
node-22): node --test <test file>python-3): python3 <test file>java-21): all .java files compiled together, then java <package.TestClass>cpp-20): sources syntax-checked, then each test linked with them via g++ -std=c++20 and runThe builder only offers a runtime for code-fix rounds when the runner reports it passed its startup probe.
Project paths are normalized and traversal/absolute paths are rejected. Current project limits are 100 files, 256 KiB per file, and 2 MiB total project source. Assignments must be self-contained: do not depend on package installation, outbound network access, databases, or other external services inside the candidate runner.
Before publication, a code-fix assignment is dry-run validated server-side. Its starter project must execute successfully while reproducing at least one failing hidden test; a project that already passes the complete hidden suite is rejected. Findings assignments validate project structure without executing candidate code.
The capability is dark by default. Set ENABLE_DEBUGGING_ASSESSMENTS=true only in environments where the feature is intentionally enabled. Code-fix mode also requires ENABLE_CODE_EXEC=true and a reachable code runner.
When Redis is configured, BullMQ runs question preparation, bulk-feedback, and candidate-assessment workers. Candidate submissions atomically enter an evaluating state, retry failures, and recover stranded evaluation jobs on startup.
The API also schedules reminder delivery, assessment opening/closing and invitation delivery, integrity-event retention, and Cloudinary cleanup. On SIGTERM/SIGINT the process stops schedulers, drains HTTP requests and BullMQ workers, closes queues, then closes MongoDB and Redis. SHUTDOWN_TIMEOUT_MS provides a bounded forced-exit fallback.
See docs/operations.md for production operations and recovery.
See SECURITY.md for reporting and policy notes.
Public product and documentation pages receive route-specific titles, descriptions, canonical URLs, Open Graph/Twitter metadata, and schema.org JSON-LD. SearchIndexPolicy marks authenticated/candidate application routes noindex,nofollow. Production builds generate sitemap.xml and robots.txt from VITE_PUBLIC_ORIGIN; only canonical public routes are placed in the sitemap.
.envISC. See LICENSE.