How sullaspqr/osztv-dual works
OSZTV is a topic-based practice quiz for software-development and testing students. The workflow is topic selection and quiz setup, randomized question delivery, answer submission and backend scoring, then answer explanations and a shareable QR result; the public result omits email. The backend also exposes health and topic-list endpoints. The sampled source shows the main API and React flows; README statements support documented capabilities, while finer UI and unsampled implementation details are not inferred.
Main entry points: main.jsx Quiz interface · server.js Answer scoring · questions.json Question bank · attempts.json Attempt records
Components 14
Quiz experience
- Quiz interface
frontend/src/main.jsx - QR encoding
frontend/src/main.jsx - Answer review
frontend/src/main.jsx - QR result page
frontend/src/main.jsx
Quiz API
- Express API
backend/server.js - Topic catalog
backend/server.js - Quiz selection
backend/server.js - Answer scoring
backend/server.js - Frontend hosting
backend/server.js
Quiz data
- Question bank
backend/data/questions.json - Attempt records
backend/data/attempts.json - Result records
backend/data/results.json
Results and sharing
- Public result endpoint
backend/server.js
Other components
- Student
Connections 16
- Student → Quiz interface: uses
README.md - Quiz interface → Topic catalog: loads topics
frontend/src/main.jsx - Quiz interface → Quiz selection: starts quiz
frontend/src/main.jsx - Express API → Topic catalog: routes requests
backend/server.js - Topic catalog → Question bank: counts topics
backend/server.js - Quiz selection → Question bank: selects questions
backend/server.js - Quiz selection → Attempt records: saves attempt
backend/server.js - Quiz interface → Answer scoring: submits answers
frontend/src/main.jsx - Answer scoring → Attempt records: reads answer key
backend/server.js - Answer scoring → Result records: saves result
backend/server.js - Answer scoring → Answer review: returns explanations
backend/server.js - Quiz interface → QR encoding: encodes result link
frontend/src/main.jsx - Quiz interface → Public result endpoint: loads shared result
frontend/src/main.jsx - Public result endpoint → Result records: reads result
backend/server.js - Express API → Frontend hosting: serves frontend
README.md - Student → QR result page: opens QR link
README.md