Interview assessment platform for sending coding and theory tests to candidates.
- Three roles: Admin (full access), Manager (create tests, view results), Recruiter (send links, view results)
- Question types: Multiple choice (single/multi-select), free text, and coding with Monaco Editor
- Code execution: Run code in 50+ languages via Piston API
- Markdown support: Write questions with rich formatting, code blocks, and tables
- Timer: Configurable time limit with auto-submit on expiry
- Anti-cheating: Paste detection and tab-switch tracking with integrity reports
- Auto-save: Answers saved every 30 seconds and on navigation
- Scoring: Auto-grading for MC questions, manual grading for free text and coding
- Dark mode: Built-in PatternFly 6 theme toggle
- Next.js 15 (App Router)
- React 19 + TypeScript
- PatternFly 6 for UI
- Drizzle ORM + Neon PostgreSQL
- Auth.js v5 (credentials provider)
- Monaco Editor for code editing
- Piston API for code execution
- Node.js 18+
- A Neon database (free tier at neon.tech)
npm installCreate .env.local:
DATABASE_URL=postgresql://...your-neon-connection-string...
NEXTAUTH_SECRET=your-random-secret
NEXTAUTH_URL=http://localhost:3000
ADMIN_EMAIL=admin@yourcompany.com
ADMIN_PASSWORD=your-secure-passwordPush the database schema:
npm run db:pushSeed the admin account:
curl -X POST http://localhost:3000/api/seedStart the dev server:
npm run dev- Push to GitHub
- Import in Vercel dashboard
- Add Neon Postgres from Vercel Storage (or set
DATABASE_URLmanually) - Set environment variables:
NEXTAUTH_SECRET,ADMIN_EMAIL,ADMIN_PASSWORD - Deploy
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Production build |
npm run start |
Start production server |
npm run db:generate |
Generate Drizzle migrations |
npm run db:push |
Push schema to database |
npm run db:studio |
Open Drizzle Studio |