This project is a Quiz System for internal technical interviews, built as part of the XPONENT Next.js Developer practical assessment.
The system allows admins to create structured quizzes and tests, assign them to candidates, and evaluate results through both auto-grading and manual review.
It follows a clear, role-based flow and focuses on usability, correctness, and maintainable architecture.
The diagram below illustrates the complete lifecycle of the application, from quiz setup by admin to candidate test submission and evaluation.
It is intended to help evaluators quickly understand how the system works and how to test it.
-
Login as Admin
- Email:
admin@example.com - Password:
admin123
- Email:
-
Create a Position
Example:Frontend Developer -
Create a Quiz under the Position
Example:React & JavaScript Assessment -
Create Groups inside the Quiz
Examples:- Logic
- JavaScript
- React
-
Add Questions to Groups
- Text-based (open answer)
- MCQ (single or multiple correct answers)
-
Create a Test
- Select a quiz
- Choose questions from groups
- Set test duration (e.g., 30 minutes)
-
Assign the test to an Interviewee
- Provide name and email
- Credentials are generated automatically
- Login using assigned credentials
- View assigned test
- Click Start Test
- Countdown timer starts immediately
- Answer all questions
- Submit test manually or
- Test auto-submits when timer expires
- Test becomes locked after submission or timeout
- MCQ answers are auto-evaluated
- Text answers require manual review by admin
- Admin assigns scores to text responses
- Final score report is generated per candidate
- Next.js (App Router)
- Prisma ORM
- SQLite
- NextAuth / Auth.js
- Tailwind CSS
AUTH_SECRET="cFI2+xO9Uny+1Jb8ErhAB493xAiOrbpOSoEest0pKjE=" # Added by `npx auth`. Read more: https://cli.authjs.dev
NODE_ENV="development"
DATABASE_URL="file:./dev.db"
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
RESEND_API_KEY=
AUTH_URL="http://localhost:3000"
NEXT_PUBLIC_APP_URL="http://localhost:3000"npm install
npx prisma format && npx prisma generate && npx prisma db push && npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev