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