Skip to content

Architecture

Patrick van Broeckhuijsen edited this page Jun 18, 2023 · 1 revision

Models

Users (players)

  • Name
  • Email address
  • Password (and magic link? -> laravel package)
  • Player strength (rating, arbitrary enum)
  • Profile picture
  • Availability (timespan)
  • Present (if player is present at match day and can be scheduled for matches)
  • Priority?
  • Remarks?

Email address verification is not necessary when using a magic link

Courts

  • Name
  • Availability (timespan array??)

Matches

  • Player 1
  • Player 2
  • Player 3
  • Player 4
  • Court
  • Date
  • Time (minute accuracy)
  • Score player 1 & 2
  • Score player 3 & 4

Schedule

  • Define number of rounds (or start / end time of match day?)
  • Define single or double matches
  • Allow single matches
  • Define maximum difference in rating
  • Optionally add a break in between matches

API

User view

  • Retrieve full user details
  • Retrieve full courts details
  • Retrieve full schedule of matches, including match details. Ability to view score per player as well
  • Ability to add match score

Admin view

  • Manually add users
  • Change user details
  • Manage courts (add and edit them)
  • Add score per match
  • Generate schedule, preferably per round
  • Get number of planned matches per player

Nice to have

  • Preview of new schedule, ability to manually shift players around, and make the schedule final

App

  • Send notification when next match is scheduled
  • Send notification for user to add match score --> redirect to correct 'page' in app

Scheduler implementation

  • Clear schedule (including confirmation)
  • Generate schedule per round
  • Decrease players' priority based on scheduled matches
  • ...

Clone this wiki locally