Ce projet est un projet personnel développé pour mon portfolio. Il démontre mes compétences en développement full-stack avec Kotlin et Angular, ainsi que mes connaissances en architecture logicielle et en déploiement continu.
Une application complète pour gérer vos tournois, suivre les scores et visualiser les classements des joueurs.
- Présentation
- Architecture & Stack Technique
- Installation
- Exécution en local
- Déploiement
- API Documentation
- Fonctionnalités
- Captures d'écran
- Licence
- Contact
Score Board est une application de gestion de tournois qui permet de :
- Gérer une liste de joueurs
- Simuler des matchs entre joueurs
- Mettre à jour automatiquement les classements
- Visualiser les statistiques des joueurs
Avec une interface utilisateur intuitive et un backend robuste, l'application facilite la gestion complète des tournois de jeux.
scoreboard/
├── backend/ # Backend Kotlin avec Ktor
├── frontend/ # Frontend Angular
├── .github/ # Configuration CI/CD
├── lib/ # Scripts utilitaires
├── start-service.sh # Script de démarrage
└── stop-service.sh # Script d'arrêt
- Langage : Kotlin 1.9
- Framework : Ktor 2.3
- Injection de dépendances : Koin
- Base de données : MongoDB
- API REST complète avec documentation Swagger
Le backend suit une architecture hexagonale (ports et adaptateurs) :
domain: Logique métier et entitésapplication: Cas d'utilisation et servicesinfrastructure: Implémentations techniques et adaptateurs
- Framework : Angular 19
- UI Components : Angular Material
- State Management : Services Angular avec RxJS
- Responsive Design pour mobile et desktop
Une particularité de ce projet est que le frontend Angular est compilé directement dans les ressources statiques du backend Kotlin, ce qui permet de déployer l'application comme un monolithe. Cette approche :
- Élimine les problèmes de CORS
- Simplifie le déploiement
- Améliore les performances en évitant les appels cross-origin
- JDK 17+
git clone https://github.com/votre-username/scoreboard.git
cd scoreboardLe projet fournit des scripts qui automatisent le processus de construction et d'exécution.
./start-service.shCe script :
- Construit l'application Angular
- Copie les fichiers compilés dans
backend/src/main/resources/static - Compile le backend Kotlin
- Démarre le serveur sur le port 9090 (par défaut)
./start-service.sh --port 8080 # Définir un port différent
./start-service.sh --quiet # Mode silencieux (affiche uniquement les erreurs)
./start-service.sh --verbose # Mode verbeux (affiche tous les messages)./stop-service.shL'application est déployée automatiquement sur Render via GitHub Actions.
URL : https://scoreboard-g96j.onrender.com
Note : Lors du premier accès, veuillez patienter 30-45 secondes si l'application était en veille. C'est une caractéristique du plan gratuit de Render qui met les applications en veille après 15 minutes d'inactivité.
Le workflow CI/CD :
- Construit l'application Angular
- Intègre les fichiers compilés dans les ressources du backend
- Prépare les fichiers nécessaires pour Render (Dockerfile et render.yaml)
- Crée un package de déploiement
- Déploiement Docker sur le plan gratuit de Render
- Connexion à MongoDB Cloud configurée dans
application.conf - Containers Docker pour une exécution cohérente
- Mise en veille après 15 minutes d'inactivité (plan gratuit)
- Délai de démarrage de 30-45 secondes au premier accès
La documentation de l'API est disponible via Swagger UI.
- En local : http://localhost:9090/swagger-ui
- En production : https://scoreboard-g96j.onrender.com/swagger-ui
-
Gestion des joueurs
- Ajouter/supprimer des joueurs
- Personnaliser avec des avatars
- Définir des points initiaux
-
Simulation de matchs
- Matchs entre deux joueurs
- Attribution automatique des points
- Mise à jour en temps réel du classement
-
Tableau de classement
- Visualisation du classement des joueurs
- Tri par points, matchs joués, etc.
Voici quelques captures d'écran de l'application :
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Luc CLEMENT - [email protected]
Projet GitHub : https://github.com/lc-4918/scoreboard

