Once upon a time, before Covid, a couple of friends an I used to visit an Irish pub to participate in their weekly pub quiz. And to have a drink or two. Obviously that is not possible at the moment. One evening we had a video chat and I just started to ask random questions. The others were shouting their answers at me. It was fun, but we noticed that we need a buzzer.
To spin up the whole system just run docker-compose up
. As a result there will be three application running:
- quiz-master-client (http://localhost:3000) The application where the Quiz master can create a new quiz, load an existing one, post question and gives points.
- quiz-participan-client (http://localhost:3001) The application where a participant can join an existing quiz, sees the current question and the current score of all participants and can use the buzzer.
- quiz-server (http://localhost:5000) The backend application that handles all the requests and stores the quiz data.
URL | Method | Possible Status codes | Description |
---|---|---|---|
/api/quiz | POST | 201 | Creates a new quiz |
/api/quiz/{quizId} | PUT | 200 | Reopens the current question of the quiz |
/api/quiz/{quizId} | PATCH | 200 | Reveals the participants' answers for the current question |
/api/quiz/{quizId} | POST | 200 | Finishes the quiz and creates final statistics |
/api/quiz/{quizId}/undo | DELETE | 200 | Reverts the last action performed on the quiz |
/api/quiz/{quizId}/redo | POST | 200 | Perform a redo |
/api/quiz/{quizId}/questions | POST | 201, 409 | Creates a new question |
/api/quiz/{quizId}/questions/{questionId} | PUT | 201, 409 | The question is edited |
/api/quiz/{quizId}/questions/{questionId} | PATCH | 201, 409 | The question is asked |
/api/quiz/{quizId}/questions/{questionId} | DELETE | 201, 409 | The question is deleted |
/api/quiz/{quizId}/participants | POST | 201, 400, 404, 409 | Creates a new participant |
/api/quiz/{quizId}/participants/{participantId} | DELETE | 200, 409 | A participant is removed from the quiz |
/api/quiz/{quizId}/participants/{participantId}/answers | POST | 200, 409 | Rates a participant's answer as correct or incorrect |
/api/quiz/{quizId}/participants/{participantId}/buzzer | PUT | 200, 409 | A participant has buzzered or has sent a freetext answer |
/api/quiz/{quizId}/participants/{participantId}/choices/{choiceId} | PUT | 200, 409 | A participant has selected an option of a multiple choice question |
/api/quiz/{quizId}/participants/{participantId}/togglereveal | PUT | 200, 409 | A participant activates or deactivates that his or her answers can be seen by other participants |
/api/questionPool | GET | 200 | Returns the questions that were already played, so some can be copied into a new quiz |
The application uses server sent events to broadcast actions to all participants of the quiz.
URL | Description |
---|---|
/api/quiz/{quizId}/quiz-master | |
/api/quiz/{quizId}/quiz-participant |