Project 5 - Tournooi Planner
Projectbriefing
Projectnaam: Toernooi Planner "MatchPoint"
Datum: 18 december 2025
Opdrachtgever: Tennisvereniging "De Gravelbijters"
Contactpersoon: Dhr. A. Fedder (Wedstrijdcommissaris)
1. Achtergrond en Probleemstelling
Bij onze tennisvereniging organiseren we jaarlijks het "Club Open" toernooi. Momenteel worden de standen en uitslagen bijgehouden op papieren schema's die in de kantine hangen. Spelers moeten fysiek naar de kantine komen om te zien wanneer ze moeten spelen of wat de stand in de poule is.
De wedstrijdleiding verliest het overzicht bij regenvertragingen en spelers weten vaak niet waar ze aan toe zijn. Dit moet gedigitaliseerd worden in een overzichtelijk portaal.
2. Doelstelling
Wij willen een online toernooisysteem (MatchPoint) laten ontwikkelen.
Spelers moeten hun eigen wedstrijdschema en de actuele standen kunnen bekijken. De wedstrijdleiding moet uitslagen kunnen invoeren, banen kunnen toewijzen en de voortgang bewaken.
3. Doelgroepen
-
Spelers (Gebruikers): Willen hun geplande wedstrijden zien en de uitslagen van hun poule volgen.
-
Wedstrijdleiding (Admins): Willen een overzicht van alle wedstrijden en de mogelijkheid om scores en winnaars te registreren.
4. Gewenste Functionaliteiten (Must-Haves)
Voor het MVP verwachten wij de volgende functies:
-
Authenticatie:
-
Inlogscherm voor spelers en organisatie.
-
Rol-verdeling:
speler(user) enleider(admin).
-
-
Voor Spelers:
-
Persoonlijk dashboard met eigen geplande wedstrijden.
-
Overzichtspagina met de actuele stand (Punten/Sets) in hun poule.
-
Zichtbare status van de wedstrijd (bijv. "Gepland", "Bezig" of "Gespeeld").
-
-
Voor Wedstrijdleiding (Admins):
-
Centraal dashboard met alle wedstrijden van het toernooi.
-
Detailpagina per wedstrijd om de Score (bijv. 6-4, 6-2) in te voeren.
-
Mogelijkheid om een Baan toe te wijzen (bijv. Baan 1, Baan 2).
-
Knop om een wedstrijd officieel te "Sluiten" (winnaar bepalen).
-
5. Technische Eisen & Randvoorwaarden
-
Taal & Database: PHP (8.x) en MySQL.
-
Code Architectuur: Gebruik van
includesvoor de lay-out elementen. -
Veiligheid: SQL-injectie preventie (Prepared Statements) en XSS-bescherming bij het tonen van spelernamen.
-
Data Integriteit: Een wedstrijd (match) moet gekoppeld zijn aan minimaal twee users (spelers). Dit is een 1-op-N of N-op-M relatie.
6. Budget en Planning
-
Tijdsinvestering: Ontwikkelingstijd van circa 40-45 uur.
-
Oplevering: Volledig werkend systeem vóór het begin van het toernooiseizoen.
7. Gevraagde actie
-
Lever een Functioneel Ontwerp.
-
Lever een Technische Schets (ERD met minimaal Users en Matches + Wireframes).
-
Realiseer de applicatie en lever de broncode op via Git.
BIJLAGE: Specifieke Design & Interface Wensen
De vereniging wil een sportieve, frisse uitstraling met de kleuren wit, groen en donkerblauw.
-
Status Labels (Badges):
-
In de lijsten moet de status van een partij direct herkenbaar zijn:
-
Gepland: Grijze achtergrond.
-
Bezig: Fel Groene achtergrond (Live).
-
Afgelopen: Donkerblauwe achtergrond.
-
-
-
De "Scoreboard" Navigatie:
-
Wij willen een strakke top-navigatie waar in het midden groot de naam van het huidige toernooi staat.
-
Aan de linkerkant de links naar "Mijn Wedstrijden" en aan de rechterkant het profiel van de speler.
-
-
Match Detail View (2-Koloms):
-
Maak gebruik van een zijpaneel voor extra informatie:
-
Links (75%): Het actuele scoreverloop en de namen van de spelers (groot).
-
Rechts (25%): "Wedstrijd-info" box met de toegewezen Baan, Starttijd en de Scheidsrechter.
-
-
-
De "Leiding Quick-Filter":
-
Boven het totaaloverzicht moeten filters staan (via
GETparameters):-
"Toon Alle Wedstrijden"
-
"Nu op de Baan (Bezig)"
-
"Nog Gepland"
-
-
Tips voor jouw Examenportfolio
Waarom is deze opdracht geschikt voor je examen?
-
Complexiteit (W3): Je werkt met relaties tussen spelers en wedstrijden. Het tonen van een poulestand vereist slimme SQL queries (bijv. ORDER BY gewonnen_sets DESC).
-
Beveiliging (W1/W3): Je moet voorkomen dat een speler via de URL de score van zijn eigen wedstrijd aanpast (autorisatie-check).
-
Gebruikerservaring (W1): Het visueel maken van de status (Bezig vs Gepland) is een belangrijk onderdeel van de front-end eisen.