Développement d’un programme logiciel en Python (POO) – Application de gestion de tournois d’échecs
Présentation de mon projet
Vous pouvez consulter le diaporama de ma soutenance en cliquant sur le lien ci-dessous :
🎓 Diaporama de ma SoutenanceConception et architecture du logiciel
Ce projet m’a permis d’appliquer concrètement les notions de programmation orientée objet (POO) et de conception logicielle MVC (Modèle-Vue-Contrôleur) dans un contexte réel.
L’objectif était de concevoir une application autonome, multiplateforme et hors ligne, permettant de gérer intégralement des tournois d’échecs pour un club local.
Toutes les données (joueurs, matchs, tours, tournois) sont persistées en JSON afin d’assurer la sauvegarde et la reprise du programme entre deux sessions.
Chaque entité – Player, Tournament, Round, Match – a été conçue comme une classe Python dotée de ses propres attributs, comportements et méthodes de sérialisation.
Le modèle Tournament gère par exemple le déroulement automatique des tours, l’attribution des points et la génération dynamique des paires selon les performances des joueurs.
Interface utilisateur en ligne de commande
Pour rendre l’expérience utilisateur agréable malgré l’absence d’interface graphique, j’ai utilisé les bibliothèques Rich et Questionary afin de concevoir des menus interactifs et une navigation entièrement textuelle mais fluide et colorée.
L’utilisateur peut facilement :
créer ou charger un tournoi existant ;
ajouter des joueurs avec leur identifiant national d’échecs ;
lancer, clôturer et consulter les tours ;
afficher des rapports détaillés (classements, matchs, historiques).
Les rapports sont présentés sous forme tabulaire, lisible et hiérarchisée, rendant le terminal aussi ergonomique qu’une application graphique.
Conformité PEP 8 et automatisation DevOps
Le projet a été développé dans une approche DevOps.
J’ai mis en place un pipeline CI qui exécute automatiquement Flake8 à chaque push afin de garantir la conformité à la PEP 8 et d’éviter toute régression de style.
Des rapports flake8-html sont générés à chaque exécution pour documenter la qualité du code, et des outils tels que Black et Isort ont été ajoutés pour uniformiser la mise en forme.
Chaque module (models, controllers, views) a été organisé dans un dossier dédié, facilitant la maintenance et la lecture du code.
Gestion de projet et conception documentaire
Avant d’écrire la moindre ligne de code, j’ai produit un cahier des charges complet, des diagrammes UML (cas d’utilisation et classes), et un backlog produit détaillé avec user stories et critères d’acceptation.
Ces éléments ont servi de base à la planification et à la validation fonctionnelle du projet.
Le développement a été suivi via GitHub Projects, avec des templates YAML pour structurer les issues, les tâches et les revues de code.
Ce processus rigoureux a permis de simuler un véritable environnement professionnel, intégrant analyse, conception, développement, validation et déploiement continu.
Description
CodeIguanas
19 septembre 2025
Contexte :
Dans ce projet, j’ai développé un logiciel de gestion de tournois d’échecs en Python, fonctionnant hors ligne via la ligne de commande.
Conçu selon le pattern MVC et les principes de programmation orientée objet, le programme gère des listes de joueurs, tournois, tours et matchs à partir de fichiers JSON.
J’ai également intégré des outils modernes tels que Rich et Questionary pour créer une interface CLI fluide et intuitive, ainsi qu’un pipeline CI automatisé avec Flake8 pour garantir la qualité du code.
Ce projet a illustré ma capacité à combiner conception logicielle, ergonomie en ligne de commande et pratiques DevOps.
Résultat final :
Le programme final est un outil complet, robuste et maintenable, exécuté via : python3 main.py
Il offre une gestion fluide des tournois, des sauvegardes automatiques, un mémoire persistent , et une interface CLI agréable.
Son architecture claire et modulaire en fait un excellent socle pour des extensions futures, comme une interface graphique ou une base de données SQL.
Outils et technologies :
Rich / Questionary → Interface CLI dynamique et interactive
Flake8 → Linting et assurance de conformité PEP8
Git & GitHub Projects → Suivi de projet et gestion de versions
Draw.io → Diagrammes UML de classes et de cas d’utilisation
Notion / Google Docs → Rédaction du cahier des charges et backlog produit
YAML Templates → Structuration des issues GitHub
JSON → Stockage et persistance des données