Secure, monitored coding interview & proctoring environment built with Next.js (App Router), Electron, Tailwind, and a Python grading backend.
- Dual-mode (web + desktop Electron) delivery
- Anti-cheat monitoring with warning vs termination states
- Real-time code execution panel & Monaco editor
- Interviewer / Candidate dashboards
- Results storage (local) with termination status integration
- Responsive large-screen scaling utilities
- Dark / light theme with custom design tokens
app/ # Next.js App Router pages & routes
components/ # Shared React UI components (shadcn-derived and custom)
lib/ # Utilities (results-store, etc.)
electron/ # Electron main process & packaging
backend/ # Python grading / service layer
public/ # Static assets
# Install deps
npm install
# Run web (Next.js) only
npm run dev
# Run Electron + web concurrently
npm run electron:dev
# Full dev environment (backend + frontend if scripted)
python start_dev.pyEnsure Python environment has dependencies from
requirements.txt.
# Build Next.js + package Electron installers
npm run electron:distArtifacts appear in dist/ using pattern:
CodeVail-<version>-<os>-<arch>.exe (NSIS installer)
CodeVail-<version>-<os>-<arch>.exe (Portable build, same extension but different name details)
A convenience redirect for the landing page:
/download/windows -> latest GitHub release asset (update app/download/windows/route.ts).
All sensitive runtime config should live in .env.local (not committed). Copy .env.example to bootstrap.
/anti-cheat-warning– Soft violation (allows continuation)/interview-terminated– Hard stop, shows encoded violation payload
Tailwind + custom adaptive utilities in app/globals.css. Stylelint configured to ignore Tailwind at-rules.
lib/results-store.ts stores recent test outcomes (including TERMINATED) in localStorage for demo presentation pages.
- Uses
electron-builderwith NSIS + Portable targets - Customize icon: add
build/icons/icon.pngand set"icon"inpackage.jsonbuild block - Future Auto-update: add
electron-updater
npm run lint # Next.js / ESLint
npm run lint:css # Stylelint (Tailwind aware)- Migrate legacy
src/pagesviews fully intoapp/(progress ongoing) - Consolidate multiple results-related pages (
/results,/test-results, legacy variants) - Add automated tests for anti-cheat flows
- Integrate auto-update & code signing
Proprietary – All rights reserved (update if you choose an OSS license later).
Update app/download/windows/route.ts after publishing each GitHub Release.


