Docker & Docker Compose
Node.js / npm
Lancer les conteneurs Docker :
docker compose up -d
Lancer l’API :
npm run dev
Ce projet est l'API et la base de données d'un site de club d'Ultimate Frisbee. Il à été pensé de façon à ouvrir le champs à diverses extentions futures et à la réutilisabilité pour des besoins similaires.
Le schéma ci-dessous illustre la structure de la base de données ainsi que les relations entre les différentes entités :
La classe user est une classe abstraite héritée par les différents rôles, ce qui permet d'ajouter facilement un nouveau rôle mais empêche un utilisateur d'avoir plusieurs rôles. Cependant, pour des évolutions futures, si on supprime cet héritage, on pourrait alors permettre la multiplicité des rôles sans toucher à la base de données.
Le club est au centre du sujet et de l'organisation mais sa représentation à été pensée de façon à pourvoir permettre à plusieurs clubs de co-exister sur la plateforme sans problèmes.
Un club regroupe :
- des groupes d'athlètes (professionnel, amateur, etc) et des ligues qui modélise simplement l'évolution sportive d'un athlète et la diversité des offres proposées par un club.
- des coachs et un president.
Les groupes d’athlètes sont gérés via une table d’association, ce qui permet une affectation flexible des athlètes et facilite la gestion des changements de groupe.
Les ligues ont été pensées pour representer les ligues ou catégories officielles d'un sport mais peuvent facilement être changées si le besoin apparait.
Le besoin client originel était simplement pour un club de frisbee mais le modèle à été conçu de façon à pouvoir permettre d'associer différents sports à un club simplement. Du côté des athlètes, ils ne peuvent être associé qu'à un club et un sport mais permettre ces multiplicités sont des extentions possibles et prise en compte.
Les séances d’entraînement ou de compétition sont liée à un club, un coach, un ou plusieurs groupes et des activités sportives. Une prise en compte de la recurrence possible de ces scéances à été prise en compte.
Ces activités sont définies de manière génériques et sont associées à des mesures modulables pour pouvoir être adaptées à différents sports. Ces mesures permettent en future extention de proposer aux athlètes des statistiques de leurs entraînements et au coach des statistiques sur le groupe.
Pour l'extention, nous avons choisit l'analyse de la charge d’entraînement pour un sportif, comprenant le calcul de la charge horaire d’entraînement sur une période donnée, la définition de seuils d’alertes et la distribution des activités sportives.
Pour simplifier la représentation en base de donnée, le travail à majoritairement été fait côté front et se limite à un attribut d'athlète dans la base de données.
Les différents choix de conceptions ont pris en compte de possibles évolutions des besoins et une réutilisabilité dans d'autre contextes et pour d'autres clients avec une modification minime de la base de données et de l'architecture du projet.
