Full-Stack JS engineer test assessment - the Quiz Builder
- Node.js with Express.js - REST API framework
- TypeScript - Type safety and better developer experience
- SQLite - Lightweight database
- Prisma ORM - Database modeling and migrations
- Zod - Request validation
- Helmet - Security headers
- CORS - Cross-origin resource sharing
- React.js with Next.js 15 - UI framework with App Router
- TypeScript - Type safety
- Tailwind CSS - Styling
- React Hook Form - Form management
- Zod - Form validation
- Axios - API requests
- React Icons - Icon library
1. Clone repository
git clone https://github.com/Jeszter/JS-engineer-test
cd quiz-builder2. Backend
cd backend
npm install
npm run prisma:migrate
npm run dev
# Server runs on http://localhost:30013. Frontend
cd frontend
npm install
npm run dev
# App runs on http://localhost:3000quiz-builder/
├── backend/ # Express + Prisma
│ ├── src/
│ │ ├── controllers/
│ │ ├── routes/
│ │ └── validators/
│ └── prisma/
└── frontend/ # Next.js
├── src/
│ ├── app/
│ ├── services/
│ └── types/
└── public/
POST /api/quizzes- create quizGET /api/quizzes- list all quizzesGET /api/quizzes/:id- get quiz detailsDELETE /api/quizzes/:id- delete quiz
- Boolean - True/False
- Input - text answer
- Checkbox - multiple correct options
curl -X POST http://localhost:3001/api/quizzes \
-H "Content-Type: application/json" \
-d '{
"title": "Test Quiz",
"questions": [{
"text": "What is 2+2?",
"type": "INPUT",
"correctAnswer": "4",
"order": 0
}]
}'npm run dev # start development server
npm run build # build for production
npm run prisma:studio # open database UInpm run dev # start development server
npm run build # build for production
npm run lint # run linter