Build a feature-flagged multi-session competition room
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- JavaScript
- Star
- 30
- Fork
- 9
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
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.
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu bằng cách đọc issue #199 và model Room/RaceSession hiện có, sau đó chạy phạm vi kiểm thử Cypress của phòng thông thường trước khi đánh giá luồng của phòng thi đấu. Hoàn thành khi tính năng bị vô hiệu hóa theo mặc định hỗ trợ tham gia → chọn sự kiện → giải → chuyển sự kiện → giải, giữ riêng các kết quả của từng session, khôi phục trạng thái sau khi refresh hoặc reconnect, và không thay đổi các phòng thông thường.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cypress, javascript, mongodb, nodejs, react
- Lĩnh vực
- full-stack, testing
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100