Skip to content

Repository files navigation

Projet Hackathon

Prérequis

Docker & Docker Compose

Node.js / npm

Démarrage

Lancer les conteneurs Docker :

docker compose up -d

Lancer l’API :

npm run dev

Choix de conception

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.

Schéma de la base de données

Le schéma ci-dessous illustre la structure de la base de données ainsi que les relations entre les différentes entités :

Schema de la base de données

Utilisateurs et rôles

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.

Organisation des clubs, groupes et ligues

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.

Gestion multi-sports et multi-clubs

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.

Planification des séances et activités

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.

Extention jour 4 et 5

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.

Choix orientés évolutivité

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.

About

Hackaton - Janvier 2026 M2 Info

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages