Files
hackathon/README.md
2026-01-12 14:06:36 +01:00

153 lines
4.1 KiB
Markdown

# FrisbyEE (Projet Hackathon)
Ce projet contient : un backend Spring Boot et un frontend React en TypeScript développé lors du hackathon. L'authentification est gérée par Keycloak et la base de données est PostgreSQL; les deux peuvent être lancés via Docker.
---
## Présentation rapide
- **Backend** : Spring Boot (Java 17) dans `back_end/`
- **Frontend** : React et TypeScript dans `front_end/`
- **Auth** : Keycloak (voir `keycloak/` pour la thème et configuré via `docker-compose.yml`)
- **Base de données** : PostgreSQL (configuré via `docker-compose.yml`)
## Pré-requis
- Java 17
- Maven (utiliez `mvn`)
- Node.js et npm
- Docker et Docker Compose
## Installation et démarrage
1. Récupérez le dépôt et placez-vous à la racine du projet.
2. Démarrez Keycloak et PostgreSQL avec Docker:
```bash
sudo docker compose up -d
```
3. Backend: construire et lancer (depuis la racine du projet):
```bash
cd back_end
./mvn clean install
./mvn spring-boot:run
```
4. Frontend: installer les dépendances et démarrer :
```bash
cd front_end
npm install
npm start
```
Le serveur de développement du frontend écoute par défaut sur `http://localhost:3000`, le backend sur `http://localhost:8080`, et api sur `http://localhost:8081` sauf configuration différente.
## Commandes utiles
- Arrêter et supprimer tous les conteneurs Docker:
```bash
sudo docker stop $(sudo docker ps -a -q)
sudo docker rm $(sudo docker ps -a -q)
```
- Ouvrir un shell Postgres dans le conteneur en cours d'exécution (exemple : conteneur `frisbyee-postgres`):
```bash
sudo docker exec -it frisbyee-postgres psql -U frisbyee_user -d frisbyee
# puis, par exemple : \dt ou SELECT * FROM session;
```
## Keycloak / Thème de connexion
- Au début, il faut crée run realm qui s'appelle `Frisbyee_realm`, ensuite dans ce realm, créez un `Frisbyee_client` avec ce config debug:
```
ROOT URL: http://localhost:3000/
HOME URL: http://localhost:3000/
Valid redirect URIs: http://localhost:3000/*
Web origins: *
```
- Après, ajoutez les rôles : `admin`, `coach`, `athlete`
- Et, mettez chaque groupe `ADMIN`, `COACH`, `ATHLETE` et mapping chaque rôle pour chaque groupe.
- Dans User Registration, mettez le `defaut groupe`: `ATHLETE` et activez le user self registration.
Pour appliquer le thème de connexion personnalisé fourni dans `keycloak/themes/frisbyee` :
- Ouvrez la console d'administration Keycloak -> sélectionnez le realm -> `Realm Settings` -> modifiez le `Display name` si vous le souhaitez.
- Dans `Themes`, définissez `Login Theme` sur `frisbyee` puis enregistrez.
## Configuration / Environnement
- Les propriétés du backend se trouvent dans `back_end/src/main/resources/application.properties`.
- Le frontend utilise `public/keycloak.json` pour la configuration du client Keycloak.
- Assurez-vous que le client Keycloak et le realm correspondent aux valeurs utilisées par les deux applications.
## Contribution
- Thibaut ROCHAS
- Tuan Minh VU
- Amäel KESTEMAN
- Alexis LEBOEUF
## Domain model class diagram
```mermaid
classDiagram
%% Classes and attributes (inferred from metier package)
class User {
+Long id
+String keycloakId
+String email
+String nom
+String prenom
+Role role
}
class Athlete {
+String categorie
+String niveau
+List<String> groupe
+List<Session> sessions
}
%% Represente en enum
class Role {
+String role
}
class Coach {
+List<Session> sessions
}
class Admin {
}
class Activite {
+Long id
+String nom
+String theme
+String description
+Integer dureeMinutes
+List<Activite> activites
+Session session
}
class Session {
+Long id
+String name
+LocalDateTime creneau
+Integer duree
+String group
+bool isRecurrent
+Coach coach
+List<Athlete> athletes
}
%% Inheritance (if User is a base class for domain actors)
User <|-- Athlete
User <|-- Coach
User <|-- Admin
%% Associations with cardinality
Coach "1" -- "0..*" Session : manages
Role "1" -- "0..*" User : is
Session "0..*" -- "0..*" Activite : contains
Session "0..*" -- "0..*" Athlete : participants
Activite "0..*" -- "0..*" Session : usedIn
```