A host can start a quiz that has no questions
Maintainers usually reply within 1 day
@chetna123-ch is already working on this.
Since Oct 19, 2026.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 78/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- express, postgresql, react, typescript
Research direction
Start in apps/frontend/src/screens/LiveQuiz.tsx near the Start Game button (~line 349), which currently only checks participants.length. Find where the session payload the organizer receives on join is built, and add the question count so the button can be disabled with a visible reason. Also check the quiz:start handler and quiz:next-question path that ends empty sessions to see where a server-side guard belongs. Done when an empty quiz cannot be started and the UI states why.
Written by the indexing model from the issue text.
Description
The organizer's Start button in the lobby only guards against having no players:
apps/frontend/src/screens/LiveQuiz.tsx (~line 349):
<button onClick={handleStart} disabled={participants.length === 0} ...>
Start Game
</button>
Nothing checks that the quiz has any questions.
Starting an empty quiz walks the room through quiz:start → the 3-second "GET
READY!" screen → quiz:next-question with index 0, which finds no question and
immediately ends the session:
if (!sessionId || !questions[questionIndex]) {
await endQuizSession(sessionId);
...
broadcastToSession(sessionId, 'quiz:ended');
}
Every participant sees "GET READY!" and then, three seconds later, "Quiz
Finished! Congratulations Winners!" with an empty podium. The session is now
COMPLETED in the database, so the host has to create a new one.
The same applies to a quiz whose questions were all deleted, and it fails
identically with 1 participant and 0 questions.
Where to fix it. The lobby does not currently fetch the question list, so
this needs the count available client-side — either included in the session
payload the organizer already receives on join, or fetched separately.
Guarding only in the UI is not quite enough, since the WebSocket message can be
sent directly; a server-side check in quiz:start would be the complete fix.
Frontend-only is still a worthwhile first step — say in your PR which you did.
Definition of done:
- The Start button is disabled when the quiz has no questions
- The disabled state explains why, rather than just being greyed out
- An empty quiz cannot be driven into a COMPLETED state by mistake
- Dominant language
- TypeScript
- Stars
- 21
- Forks
- 7
- Avg merge
- 3h 39m
- Merged PRs (30d)
- 16
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from TheCodeHeist-Coder/Rexial
-
documentation good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
TheCodeHeist-Coder/Rexial#195 ·
Maintainers usually reply within 1 day
-
Backend first issue bug help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
TheCodeHeist-Coder/Rexial#193 ·
Maintainers usually reply within 1 day
-
Backend first issue bug good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
TheCodeHeist-Coder/Rexial#192 ·
Maintainers usually reply within 1 day
-
Backend first issue bug good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
TheCodeHeist-Coder/Rexial#191 ·
Maintainers usually reply within 1 day
-
good first issue help wanted UI & UX
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
TheCodeHeist-Coder/Rexial#190 ·
Maintainers usually reply within 1 day
All issues in TheCodeHeist-Coder/Rexial
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
lyswhut/lx-music-desktop#3026 ·
-
area: ci type: test
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
schlessera/brain-kit#2769 ·
Maintainers usually reply within 1 day
-
Read a vector index's quantization back on Neo4j 2026.10, which reports vector.quantization.typeOpen
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
liberation-data/drivine#231 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
alveusgg/alveusgg#2502 · 3 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day