Requirements - HibaAbdo/Level_Up2 GitHub Wiki
Functional Requirements
Authentication & Authorization
- The system supports login with two user roles:
- Organizer
- Arbiter
- Guests can browse tournaments and results without logging in, in read-only mode.
- Organizer can:
- create tournaments
- edit tournament settings
- finalize results
- Arbiter can:
- record results
- register player violations
- add comments
Tournament Management
- Organizers can:
- create a new tournament
- configure rules (round count, tie-break criteria)
- edit tournament details
- lock player registration before rounds start
- approve pairings before they are sent to Arbiters
- finalize the tournament
Player Management
- Add players manually
- Add multiple players at once (bulk import)
- Edit player details (name, email, rating, extra points, ...)
- Delete players (only before tournament starts)
- Perform player check-in
- Display a list of all registered players, including:
- player ID
- name
- email address
- rating
- extra points
- check-in status
- option to delete (only before rounds start)
- There is no hard-coded maximum number of players (system supports any reasonable number as browser memory allows)
Pairings & Rounds
- Automatically generate pairings for each round using the JaVaFo Swiss-system engine
- Handle bye assignments automatically when the player count is odd
- Organizer can manually override pairings before approval
- Pairings are confirmed by the Organizer before they are published to Arbiters
- Arbiters record match results
Results & Violations
- Arbiter can:
- enter match results
- record up to three violations per player per match
- add comments
- System validates results are complete before accepting
- Organizer must approve results before they are official
Standings
- The system calculates player points after each round
- Standings are displayed based on:
- total points
- tie-breakers (e.g., Buchholz)
- Export of standings as CSV is supported
- Guests can view standings at any time without login
Reports
- Organizer can export a complete tournament report in CSV format, including:
- player standings
- round details
- violations
- PDF export may be considered in future phases
Guests
- Guests can view:
- tournament standings
- round pairings and results
- player details
- Guests have read-only access with no edit permissions
Non-Functional Requirements
Performance
- Page load time must be ≤ 2 seconds on a standard broadband connection
- UI interactions (clicks, forms) must respond within 100 milliseconds
- The system should support tournaments with hundreds of players without noticeable slowdown
Usability
- The interface must be simple and intuitive
- A first-time user should be able to:
- log in
- create a tournament
- and configure it in less than 5 minutes without training
- All error messages must be clear and provided in Arabic, including:
- required field errors (e.g., “هذا الحقل مطلوب”)
- invalid format (e.g., “أدخل البريد الالكتروني بصيغة صحيحة”)
- logical errors (e.g., “أدخل اسم اللاعب”)
- The user must be clearly guided to fix the error, with the form retaining the user’s input and highlighting the fields with errors, without navigating away from the current page.
Compatibility
- The web application will officially support:
- Google Chrome (latest stable)
- Mozilla Firefox (latest stable)
- Other browsers (Edge/Safari) can be optionally tested in future
Security
- Passwords must be securely stored (hashed + salted)
- Session management should use secure token-based authentication (JWT)
- All data transferred over HTTPS
- Enforce role-based permissions on all features
Scalability
- Designed to handle:
- hundreds of players
- dozens of rounds
- Already integrates with JaVaFo pairing engine for advanced Swiss-system pairings
Ready to add other chess pairing systems in the future
Maintainability
- Front-end is built with modular React components using Vite for fast builds and hot reload
- Back-end uses Spring Boot with a clean layered architecture
- Well-documented to ease maintenance and upgrades