VibeCode Jam is a browser-based technical interview platform designed to facilitate coding challenges with real-time feedback, adaptive difficulty, and comprehensive candidate assessment.
- π₯οΈ Browser-Based IDE: Monaco Editor with syntax highlighting and autocomplete
- β Real-time Testing: Run code against visible examples
- π Adaptive Difficulty: Qualification test determines candidate level (Junior/Middle/Senior)
- π Detailed Reports: Comprehensive feedback with scores, strengths, and recommendations
- π Secure Execution: Code runs in isolated sandboxed environment
- π Task Management: Upload and manage coding challenges
- π₯ Results Dashboard: View candidate performance and submissions
- π Data Export: Export results to CSV for analysis
- π― Level-based Filtering: Assign tasks based on candidate skill level
- π΅οΈ Activity Tracking:
- Copy/Paste Detection: Logs all copy and paste events, including the content of pasted text.
- Window Focus/Blur: Detects when the user switches to another window or application.
- Tab Visibility: Tracks when the user switches tabs within the browser.
- Event Logging: All suspicious events are timestamped and sent to the server for recruiter review.
- β±οΈ Timing Metrics: Track solution time and attempt count
- π‘οΈ Sandboxed Execution: Node.js VM prevents dangerous code execution
- React (Vite) - Modern UI framework
- Monaco Editor - VS Code-like code editing experience
- React Router - Client-side routing
- Axios - HTTP client
- Vanilla CSS - Custom dark theme styling
- Node.js + Express - API server
- SQLite - Lightweight database
- VM Module - Sandboxed code execution
- Node.js 20+
- npm or yarn
- Docker & Docker Compose (optional, for containerized deployment)
-
Clone the repository
git clone <repo-url> cd vibecode-jam
-
Install server dependencies
cd server npm install -
Install client dependencies
cd ../client npm install -
Configure Environment Variables Copy the example environment file and set your API key:
cp .example.env .env
Edit
.envand setOPENAI_API_KEYto your actual API key.
cd server
node server.jscd client
npm run devNavigate to http://localhost:5173
Quick Start:
docker-compose up -dSee DOCKER.md for detailed Docker deployment guide.
The application will be available at:
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:3001/api
Useful Docker commands:
# View logs
docker-compose logs -f
# Stop containers
docker-compose down
# Rebuild after changes
docker-compose up -d --build- Welcome Page: View available challenges
- Qualification Test (Optional): Take a quiz to determine your level
- Workspace: Select a task and solve it in the IDE
- Submit: Run tests and submit solution
- Report: View detailed performance analysis
- Navigate to
/admin - Tasks Tab: View all existing tasks, export to CSV
- Upload Tab: Create new tasks with:
- Title, description, difficulty level
- Examples (JSON)
- Test cases (JSON)
vibecode-jam/
βββ client/ # React frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Page components (routes)
β β βββ hooks/ # Custom React hooks
β β βββ App.jsx # Main app with routing
β β βββ index.css # Global styles
β βββ package.json
β
βββ server/ # Node.js backend
β βββ server.js # Express server & routes
β βββ db.js # SQLite database setup
β βββ sandbox.js # Code execution engine
β βββ questions.js # Qualification quiz questions
β βββ package.json
β
βββ README.md # This file
GET /api/tasks?level={level}- Get tasks (optionally filtered by level)GET /api/tasks/:id- Get single taskPOST /api/tasks- Create new task (admin)
POST /api/run- Run code with test cases{ "code": "function sum(a,b) { return a+b; }", "taskId": 1, "type": "test" | "submit" }
GET /api/qualification/questions- Get quiz questionsPOST /api/qualification/submit- Submit answers, get level
POST /api/sessions- Create interview sessionPOST /api/submissions- Save code submissionGET /api/sessions/:id- Get session resultsPOST /api/sessions/:id/complete- Mark session complete
| Column | Type | Description |
|---|---|---|
| id | INTEGER | Primary key |
| title | TEXT | Task title |
| description | TEXT | Task description |
| level | TEXT | junior/middle/senior |
| examples | TEXT | JSON: visible test examples |
| tests | TEXT | JSON: hidden test cases |
| Column | Type | Description |
|---|---|---|
| id | INTEGER | Primary key |
| candidate_name | TEXT | Candidate identifier |
| level | TEXT | Assigned level |
| start_time | INTEGER | Unix timestamp |
| end_time | INTEGER | Unix timestamp |
| score | INTEGER | Total score |
| Column | Type | Description |
|---|---|---|
| id | INTEGER | Primary key |
| session_id | INTEGER | Foreign key to sessions |
| task_id | INTEGER | Foreign key to tasks |
| code | TEXT | Submitted code |
| status | TEXT | passed/failed/error |
| metrics | TEXT | JSON: timing, attempts, etc. |
| timestamp | INTEGER | Unix timestamp |
vm module for code execution, which provides basic isolation but is NOT fully secure against malicious code. For production use:
- Implement Docker-based sandboxing
- Add resource limits (CPU, memory, network)
- Use separate execution environment
- Implement rate limiting
- Add user authentication
- Docker-based code execution
- Multiple language support (Python, Java, C++)
- Real-time collaboration
- Video proctoring
- AI-powered code quality analysis
- Interactive debugger
- Code similarity detection
- Advanced analytics dashboard
MIT
For issues or questions, please open a GitHub issue or contact the development team.