Application web complète de gestion administrative et financière pour l'ESR Basketball Academy, développée avec Ruby on Rails.
- 📸 Aperçu de l'application
- 🎯 À propos
- 🎯 Objectif du projet
- ✨ Fonctionnalités
- 🛠 Technologies utilisées
- 📦 Prérequis
- 🚀 Installation
- 🔑 Connexion à l'application
- ⚙️ Configuration
- 📖 Utilisation
- 📁 Structure du projet
- 🐳 Déploiement
- 🖼️ Galerie complète
- 🤝 Contribution
- 🐛 Problèmes connus
- 📝 Licence
- 👨💻 Auteur
- 🙏 Remerciements
Cette application a été conçue pour simplifier, organiser et automatiser la gestion quotidienne de l'ESR Basketball Academy.
Elle permet de centraliser dans une seule interface les opérations essentielles de l'académie :
- la gestion des joueurs ;
- la gestion des parents ;
- la gestion des entraîneurs ;
- la gestion des groupes ;
- la gestion des saisons ;
- le suivi des abonnements ;
- le suivi des assurances ;
- la gestion des achats ;
- la gestion des salaires ;
- le suivi des dépenses ;
- la gestion des crédits ;
- l'analyse financière à travers des tableaux de bord.
L'application vise à remplacer les suivis manuels dispersés par un système structuré, plus fiable et plus rapide à utiliser.
L'objectif principal du projet est de centraliser toutes les opérations administratives et financières de l'académie dans une plateforme unique, intuitive et performante.
Grâce à cette application, l'administration peut :
- gagner du temps sur les tâches répétitives ;
- réduire les erreurs de suivi manuel ;
- suivre les paiements et les échéances plus facilement ;
- consulter rapidement l'état financier de l'académie ;
- organiser les joueurs par groupes et saisons ;
- améliorer la prise de décision grâce aux statistiques et aux indicateurs.
Le système offre une meilleure visibilité sur l'activité globale de l'académie et facilite le suivi quotidien.
Le tableau de bord fournit une vue globale sur les performances et les données importantes de l'académie.
Fonctionnalités principales :
- métriques mensuelles et annuelles ;
- statistiques financières ;
- graphiques interactifs avec Chart.js / Chartkick ;
- indicateurs de performance clés ;
- calcul automatique des surplus et déficits ;
- résumé des revenus, dépenses et soldes ;
- visualisation rapide de l'activité récente.
L'application permet de gérer les principales entités liées à l'académie.
- création et modification des profils joueurs ;
- suivi des informations personnelles ;
- affectation à un groupe ;
- suivi des abonnements ;
- suivi des assurances ;
- suivi des achats ;
- historique des paiements.
- gestion des informations de contact ;
- association avec un ou plusieurs joueurs ;
- centralisation des informations familiales utiles.
- création des profils entraîneurs ;
- suivi des coordonnées ;
- gestion des salaires ;
- historique des paiements mensuels.
- organisation des joueurs par âge ou catégorie ;
- définition des horaires ;
- affectation des terrains ;
- suivi des groupes actifs.
- création et configuration des saisons sportives ;
- définition des dates de début et de fin ;
- configuration des montants d'abonnement ;
- configuration des montants d'assurance.
Le module financier permet de suivre avec précision les entrées et sorties d'argent.
- suivi des paiements mensuels ;
- dates d'expiration automatiques ;
- historique par joueur ;
- détection des abonnements expirés ;
- gestion des paiements en crédit.
- gestion des assurances par saison ;
- suivi du statut de paiement ;
- association directe avec les joueurs.
- suivi des achats de produits ou équipements ;
- association avec les joueurs ;
- historique des transactions.
- gestion des paiements des entraîneurs ;
- suivi mensuel ;
- historique par entraîneur.
- ajout des dépenses diverses ;
- catégorisation des charges ;
- suivi financier global.
- gestion des paiements différés ;
- suivi des montants restants ;
- visibilité sur les joueurs ayant un crédit actif.
L'application intègre plusieurs outils pour améliorer l'expérience d'utilisation et la productivité.
- filtres intelligents pour les joueurs actifs, expirés ou en crédit ;
- export CSV pour analyser les données en dehors de l'application ;
- recherche dynamique dans les tableaux ;
- pagination avec DataTables ;
- validations côté serveur avec Active Record ;
- validations côté client avec Bootstrap ;
- génération automatique des numéros de reçu ;
- calculs automatiques des montants et dates ;
- valeurs par défaut intelligentes dans les formulaires.
La sécurité est assurée par plusieurs mécanismes intégrés à Rails et à l'application.
- authentification sécurisée avec Devise ;
- accès administrateur ;
- protection CSRF ;
- validation des entrées utilisateur ;
- gestion des sessions ;
- séparation des données sensibles via variables d'environnement.
⚠️ Les identifiants par défaut fournis dans les seeds sont réservés au développement. Ils doivent être changés avant toute utilisation en production.
- Ruby 3.3.3
- Ruby on Rails 7.1.6
- SQLite3 pour le développement et les tests
- Puma comme serveur web
- HTML5
- ERB pour les templates Rails
- CSS3
- Bootstrap 5
- JavaScript ES6+
- Stimulus
- Turbo
- DataTables : tableaux interactifs avec recherche et pagination
- Chart.js : graphiques dynamiques
- Chartkick : intégration simple des graphiques avec Rails
- Flatpickr : sélecteur de dates moderne
devise: authentificationchartkick: visualisation de donnéesgroupdate: regroupement des données par datebootsnap: optimisation du temps de démarragekamal: déploiement avec Dockersentry-ruby: monitoring des erreurssentry-rails: intégration Sentry avec Rails
rubocop-rails-omakase: linting Ruby/Railsbrakeman: analyse de sécuritédebug: débogage- Rails console
- Rails migrations
- Seeds Rails
Avant de lancer le projet, assurez-vous d'avoir installé les outils suivants.
Version recommandée :
ruby 3.3.3Liens utiles :
- Télécharger Ruby
- Windows : RubyInstaller
Version utilisée :
rails 7.1.6Node.js 18+ est recommandé.
Installer Yarn :
npm install -g yarnLiens utiles :
Git est nécessaire pour cloner le projet.
SQLite3 est utilisé par défaut en développement et en test.
Installation Linux :
sudo apt-get install sqlite3Installation macOS :
brew install sqlite3Sur Windows, SQLite3 est généralement inclus avec RubyInstaller.
git clone https://github.com/BahaManai/ESR-Basket-Academy-ERP-Rails-App.git
cd ESR-Basket-Academy-ERP-Rails-Appbundle installyarn installCréer la base de données :
rails db:createExécuter les migrations :
rails db:migrateCharger les données initiales :
rails db:seedrails serverL'application sera accessible à l'adresse suivante :
http://localhost:3000
La page de connexion est la page d'accueil de l'application.
Après avoir exécuté la commande suivante :
rails db:seedVous pouvez utiliser le compte administrateur par défaut :
Email : admin79@example.com
Mot de passe : securepassword
🔒 Important : ces identifiants sont uniquement destinés à l'environnement de développement. En production, vous devez les changer immédiatement depuis l'interface ou les seeds.
Vous pouvez créer un fichier .env à la racine du projet pour stocker les informations sensibles.
Exemple :
# Email optionnel pour les notifications
GMAIL_USERNAME=votre_email@gmail.com
GMAIL_PASSWORD=votre_mot_de_passe_app
# Sentry optionnel pour le monitoring
SENTRY_DSN=votre_sentry_dsnLe fichier de configuration de la base de données se trouve ici :
config/database.yml
Par défaut, l'application utilise SQLite3 pour le développement et les tests.
Pour un environnement de production, il est recommandé d'utiliser une base de données plus robuste, comme :
- PostgreSQL ;
- MySQL.
Avant de déployer l'application en production, pensez à :
- changer les identifiants administrateur par défaut ;
- configurer les variables d'environnement ;
- utiliser une base de données adaptée à la production ;
- activer le monitoring des erreurs ;
- vérifier les secrets Rails ;
- exécuter les migrations ;
- précompiler les assets.
- Accédez à la section Saisons depuis le menu.
- Cliquez sur Nouvelle saison.
- Définissez les dates de début et de fin.
- Renseignez les montants d'abonnement et d'assurance.
- Enregistrez la saison.
- Accédez à Joueurs.
- Cliquez sur Nouveau joueur.
- Remplissez les informations personnelles.
- Créez ou associez un parent si nécessaire.
- Assignez le joueur à un groupe.
- Enregistrez le profil.
- Accédez au profil du joueur.
- Cliquez sur Modifier ou ouvrez la page de gestion du joueur.
- Dans la section Abonnements, cliquez sur Nouveau paiement.
- Renseignez les informations du paiement.
- Le système calcule automatiquement la date d'expiration.
- Enregistrez le paiement.
- Accédez au profil du joueur.
- Ouvrez la section Assurance.
- Sélectionnez la saison concernée.
- Ajoutez les informations de paiement.
- Enregistrez.
- Accédez à la section Entraîneurs.
- Ouvrez le profil de l'entraîneur.
- Ajoutez un paiement de salaire.
- Sélectionnez le mois concerné.
- Enregistrez le paiement.
- Accédez à la liste des joueurs.
- Appliquez les filtres souhaités.
- Cliquez sur Exporter CSV.
- Utilisez le fichier exporté pour l'analyse ou l'archivage.
ESR-Basket-Academy-ERP-Rails-App/
├── app/
│ ├── controllers/ # Contrôleurs Rails et logique applicative
│ ├── models/ # Modèles Active Record
│ ├── views/ # Vues ERB
│ ├── javascript/ # Stimulus, Turbo et JavaScript personnalisé
│ ├── assets/ # Images, styles et ressources front-end
│ └── helpers/ # Helpers utilisés dans les vues
├── config/
│ ├── routes.rb # Routes de l'application
│ ├── database.yml # Configuration de la base de données
│ └── environments/ # Configurations par environnement
├── db/
│ ├── migrate/ # Migrations de base de données
│ ├── schema.rb # Schéma actuel de la base
│ └── seeds.rb # Données initiales
├── public/ # Fichiers statiques publics
├── test/ # Tests de l'application
├── Gemfile # Dépendances Ruby
├── package.json # Dépendances JavaScript
└── README.md # Documentation du projet
L'application peut être déployée avec Kamal.
Configurer les secrets :
nano .kamal/secretsPréparer le serveur :
kamal setupDéployer l'application :
kamal deployCréer l'application Heroku :
heroku create esr-basket-academyAjouter PostgreSQL :
heroku addons:create heroku-postgresql:miniDéployer le projet :
git push heroku mainExécuter les migrations et les seeds :
heroku run rails db:migrate db:seedÉtapes recommandées :
- Installer Ruby, Node.js, Yarn et Git.
- Installer et configurer PostgreSQL ou MySQL.
- Installer un serveur web comme Nginx.
- Cloner le dépôt sur le serveur.
- Installer les dépendances avec
bundle installetyarn install. - Configurer les variables d'environnement.
- Exécuter les migrations.
- Précompiler les assets.
- Lancer l'application avec Puma, systemd ou un process manager.
Précompiler les assets :
rails assets:precompile
Tableau de bord - Métriques principales |
Tableau de bord - Graphiques et statistiques |
Gestion des abonnements |
Gestion des assurances |
Suivi des dépenses |
|
Page des entraîneurs |
Formulaire avec validations côté client |
Page de gestion - modification et ajout de salaire |
|
Liste des groupes |
Formulaire de modification d'un groupe |
Page de connexion sécurisée |
Les contributions sont les bienvenues.
Pour contribuer :
- Forkez le projet.
- Créez une branche pour votre fonctionnalité :
git checkout -b feature/AmazingFeature- Commitez vos changements :
git commit -m "Add AmazingFeature"- Poussez vers votre branche :
git push origin feature/AmazingFeature- Ouvrez une Pull Request.
Avant de proposer une contribution, pensez à :
- vérifier que l'application démarre correctement ;
- tester les fonctionnalités modifiées ;
- respecter la structure existante du projet ;
- écrire des noms de commits clairs ;
- éviter de commiter des fichiers sensibles comme
.env.
Les performances peuvent être plus lentes en environnement de développement.
Solutions possibles :
- exclure le dossier du projet de Windows Defender ;
- utiliser WSL2 ;
- éviter de placer le projet dans un dossier synchronisé avec un cloud.
SQLite3 est pratique pour le développement, mais peut être limité en production avec plusieurs utilisateurs simultanés.
Solution recommandée :
- migrer vers PostgreSQL ou MySQL en production.
Ce projet est sous licence MIT.
Voir le fichier LICENSE pour plus de détails.
Baha Manai
- GitHub : @BahaManai
- L'équipe de l'ESR Basketball Academy
- La communauté Ruby on Rails
- Les mainteneurs des gems utilisées
- Tous les contributeurs open source
⭐ Si ce projet vous a été utile, n'hésitez pas à lui donner une étoile sur GitHub !















