coder13 / coder13/LetsCube

Build a feature-flagged multi-session competition room

Open
#201 0 comments 0 reactions 0 assignees View on GitHub
area: results enhancement priority: P1
Dominant language
JavaScript
Stars
30
Forks
9
PR merge metrics
No merged PRs in 30d

Description

Part of #199.

## Goal

Prove the new Room/RaceSession model through a small user-visible competition-room flow without changing the simple normal-room experience.

## Vertical slice

- Create or seed one competition room associated with a competition.
- Give it at least two event RaceSessions.
- Allow an eligible user to enter the room, choose an event session, and race.
- Keep attempts, waiting state, and results independent between sessions.
- Allow switching sessions without leaving the room.
- Preserve completed results when a session ends or another session becomes active.
- Hide the feature behind a disabled-by-default configuration flag.

## UX requirements

- The ordinary home-page **Create room** action and copy-link flow remain unchanged.
- Normal rooms do not show competition/session-selection UI.
- Competition participants enter one room, then choose an event.
- The active session and event must always be obvious.
- Mobile layouts must not become a dashboard or require navigating a complex competition schedule.
- Unsupported or unavailable sessions show a clear, recoverable state.

## Acceptance criteria

- [ ] One competition room can contain and display at least two event sessions.
- [ ] Two users can race in one session while another session retains separate state.
- [ ] Switching sessions cannot submit a solve to the wrong attempt.
- [ ] Refresh and reconnect restore the selected room/session safely.
- [ ] Permissions prevent unauthorized session creation or control.
- [ ] Ended-session results remain available to authorized users.
- [ ] Normal-room Cypress coverage proves no added step or visible complexity.
- [ ] A competition-room Cypress flow covers join → select event → solve → switch event → solve.
- [ ] The feature can be disabled without affecting normal rooms.

## Deferred

- Automatic creation three days before every WCA competition.
- Complete competition discovery and registration syncing.
- Friends, invitations, notifications, rankings, and Discord integration.

Contributor guide

Open the contributing guide

Research direction

Start by reading issue #199 and the existing Room/RaceSession model, then run the normal-room Cypress coverage before assessing the competition-room flow. Done means the disabled-by-default feature supports join → select event → solve → switch event → solve, preserves separate session results, restores state after refresh or reconnect, and leaves normal rooms unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
cypress, javascript, mongodb, nodejs, react
Domain
full-stack, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.