Application web Flask pour la gestion d'un club de tennis, des championnats par equipes, des tournois individuels FFT, du suivi medical et d'un module materiel (raquettes/cordages).
Le projet est organise en blueprints Flask:
- Admin
- Club
- Championship
- Tournament
- Medical
- Shop
La base est geree via SQLAlchemy, avec SQLite par defaut.
- Creation/suppression de clubs
- Selection du club actif via cookie signe
- Import initial des donnees clubs/joueurs depuis CSV
- Gestion des saisons (saison active, creation au format YYYY/YYYY)
- CRUD equipes et joueurs
- Gestion des blessures joueur
- Gestion des disponibilites par journee (simple/double/remplacant)
- Gestion des jokers avec controle de regle de classement
- Mutations/transferts de joueurs entre clubs
- Historique raquettes/cordages par joueur (entree active synchronisee)
- Calcul distance/temps de trajet entre clubs (Mapbox si cle configuree)
- Creation de championnats par division et saison
- Creation/configuration de poules
- Affectation des equipes aux poules
- Planification des rencontres
- Consultation des poules, matches et classements
- Simulations de poules et simulations batch avec historisation
- Filtrage multi-saisons
- Creation de tournoi interne ou ouvert
- Statuts: DRAFT, OPEN, IN_PROGRESS, CLOSED
- Categories (genre, tranche d'age, format, bornes de classement, series autorisees, surfaces)
- Inscriptions, desinscriptions, liste d'attente, promotion liste d'attente
- Tetes de serie (activation manuelle) et disponibilites joueurs
- Convocations/alertes de retard de saisie
- Saisie des resultats, WO, propagation des vainqueurs
- Requalification/remplacement selon regles metier implementees
- Suppression controlee de tableaux/tournois selon statut et matchs joues
Modes de generation des tableaux:
- Tableau classique (depart en ligne)
- Tableau en cascade (qualificatifs chaines par tranche)
- Tableau a sections (qualificatifs paralleles + final)
Planification/edition:
- Planification automatique des matchs
- Vue d'impression
- Route export PDF conservee en retro-compatibilite (redirection vers impression)
- Referentiel blessures/sites
- Liste des joueurs blesses
- Recherche joueurs
- Catalogue raquettes avec filtres avances (poids, tamis, equilibre, rigidite, swingweight, annee...)
- Detail raquette et suggestions de modeles similaires
- Import/scraping de raquettes (racquetfinder) avec fusion et mise a jour
- Outils de diagnostic scraping
- Assistant de selection raquette base profil joueur
- Catalogue cordages Racqix + API JSON de filtrage
- Import Racqix (raquettes + cordages)
- Ajout des modules Medical et Shop (absents du README precedent)
- Ajout des fonctions avancees du tournoi: liste d'attente, requalification, convocations, suppression controlee
- Precision sur l'export PDF: URL conservee mais redirection vers vue impression
- Mise a jour de la stack Flask (3.0+) et de la base par defaut (SQLite)
- Le README precedent indiquait PostgreSQL en prerequis, alors que la configuration active est SQLite (SQLALCHEMY_DATABASE_URI = sqlite:///tennis.sqlite3)
- /
- /licensees-by-gender
- /admin
- /club
- /championship
- /tournament
- /medical
- /shop
Exemples de routes tournoi:
- GET /tournament/
- GET|POST /tournament/create
- GET /tournament/
- POST /tournament//generate-draw/
- POST /tournament//generate-draw-tranche/
- POST /tournament//generate-section-draw/
- GET /tournament//draw/<draw_id>
- GET|POST /tournament//match//score
- POST /tournament//schedule/<draw_id>
- GET /tournament//print/<draw_id>
- GET /tournament//export-pdf/<draw_id>
- Backend: Flask 3, SQLAlchemy, Flask-Migrate
- Frontend: Jinja2, HTML, CSS, JavaScript
- Donnees: SQLite par defaut (adaptable a un autre SGBD)
- Integrations: Mapbox (optionnel), pandas, scraping web, reportlab/weasyprint (selon usage)
- Cloner le repository
git clone https://github.com/pmourey/tennis.git
cd tennis- Creer un environnement virtuel
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows- Installer les dependances
pip install -r requirements.txt- Lancer l'application
python app.pyAlternative WSGI: utiliser wsgi.py.
- Python 3.9+
- pip
- SQLite (inclus dans Python, par defaut)
- Optionnel: cle MAPBOX_API_KEY pour les fonctions d'itineraire
- Voir CONTRIBUTING.md pour contribuer
- Voir Wiki.md et docs/ pour la documentation projet
Projet sous licence MIT. Voir LICENSE.md.