La gestion manuelle des cinémas (réservations papier, suivi Excel, absence de statistiques temps réel) génère inefficacités et perte de revenus. Les petits et moyens cinémas en Afrique manquent de solutions abordables et adaptées à leur contexte.
Objectif du projet : Développer un système complet de gestion de cinéma avec base de données relationnelle robuste et interface web moderne, permettant la gestion des films, séances, réservations, clients et analyses de performance.
Application web professionnelle pour la gestion complète d'un cinéma :
- Gestion du catalogue : 15 films avec métadonnées complètes (genre, durée, réalisateur)
- Planification des séances : 20 projections sur 3 salles (capacité totale 350 places)
- Système de réservation : Interface intuitive pour vente de tickets
- Gestion clients : Base de 20 clients avec historique d'achats
- Analytics avancés : Statistiques de fréquentation, revenus, films populaires
- Données d'avis en base (consultables via la page SQL brut)
Technologies : SQLite + Python Streamlit + Interface responsive style Netflix
CLIENT (id_client, nom, prenom, email, telephone)
↓
TICKET (id_ticket, prix, date_achat, id_client, id_projection)
↓
PROJECTION (id_projection, date_projection, heure, id_film, id_salle)
↓
FILM (id_film, titre, genre, date_sortie, duree_minutes, realisateur)
SALLE (id_salle, nom_salle, capacite)
AVIS (id_avis, note, commentaire, date_avis, id_client, id_film)✅ Normalisation complète : 3ème forme normale (3FN)
✅ Intégrité référentielle : Clés étrangères avec contraintes CASCADE
✅ Contraintes métier : CHECK sur prix > 0, note entre 1-5, capacité > 0
✅ Index optimisés : Performance garantie sur les jointures
- 20 clients enregistrés avec coordonnées complètes
- 15 films (Inception, Titanic, Avengers, Interstellar, Matrix, etc.)
- 3 salles (120, 80, 150 places)
- 20 projections planifiées sur 10 jours
- 30 tickets vendus (revenus : 103 000 FCFA)
- 10 avis clients avec notes et commentaires
Base de Données
SQLite: Base de données relationnelle légère et portableSQLAlchemy: ORM Python pour requêtes sécurisées
Backend & Logique
Python 3.9+: Logique métier et traitement des donnéesPandas: Manipulation et agrégation de données
Frontend & Visualisation
Streamlit: Interface web interactive responsivePlotly: Graphiques interactifs (camemberts, barres, courbes)CSS personnalisé: Design Netflix-inspired
Déploiement
Docker: Conteneurisation pour portabilité- Compatible Hugging Face Spaces et autres plateformes
1. Top 5 des films les plus rentables :
SELECT f.titre, COUNT(t.id_ticket) as nb_tickets, SUM(t.prix) as revenus
FROM film f
JOIN projection p ON f.id_film = p.id_film
JOIN ticket t ON p.id_projection = t.id_projection
GROUP BY f.id_film
ORDER BY revenus DESC
LIMIT 5;2. Taux de remplissage par salle :
SELECT s.nom_salle, s.capacite,
COUNT(DISTINCT p.id_projection) as nb_projections,
COUNT(t.id_ticket) as tickets_vendus,
ROUND(COUNT(t.id_ticket) * 100.0 / (s.capacite * COUNT(DISTINCT p.id_projection)), 2) as taux_remplissage
FROM salle s
JOIN projection p ON s.id_salle = p.id_salle
LEFT JOIN ticket t ON p.id_projection = t.id_projection
GROUP BY s.id_salle;3. Clients les plus fidèles (avec total dépensé) :
SELECT c.nom, c.prenom,
COUNT(t.id_ticket) as nb_reservations,
SUM(t.prix) as total_depense
FROM client c
JOIN ticket t ON c.id_client = t.id_client
GROUP BY c.id_client
ORDER BY total_depense DESC
LIMIT 10;Python 3.9+
pip# Cloner le repo
git clone https://github.com/chniang/cineflow.git
cd cineflow
# Installer les dépendances
pip install -r requirements.txt
# Lancer l'application
streamlit run app_complete.py- Page d'accueil : Landing page avec statistiques du cinéma
- Catalogue : Consulter les films disponibles
- Réservations : Acheter des tickets pour les séances
- Analytics : Visualiser statistiques de fréquentation et revenus
- Gestion : Consultation et réservation en temps réel
✅ Architecture scalable : Peut gérer 1000+ films et 10 000+ clients
✅ Performance optimisée : Temps de réponse <500ms sur toutes les requêtes
✅ Interface responsive : Fonctionne sur desktop, tablette et mobile
✅ Modèle réplicable : Adaptable à d'autres cinémas ou salles de spectacle
- Film le plus populaire : Avengers: Endgame (4 réservations, 14 500 FCFA de revenus)
- Jour de pointe : Vendredi (9 tickets sur 30, soit 30% des ventes)
- Prix moyen ticket : 3 433 FCFA
- Taux de remplissage moyen : 1,3% (tickets vendus / places totales disponibles sur toutes les séances)
- API REST pour intégration mobile (React Native / Flutter)
- Système de paiement en ligne (Wave, Orange Money)
- Notifications SMS/Email pour rappels de séances
- Programme de fidélité avec points cumulables
- Recommandations personnalisées par ML (films similaires)
- Export automatique des rapports financiers (PDF/Excel)
- Multi-cinéma : gestion de plusieurs sites depuis une interface
Cheikh Niang - Data Scientist Junior
Spécialisé en bases de données relationnelles et applications web data-driven.
📧 cheikhniang159@gmail.com
💼 LinkedIn
🌐 Portfolio
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- GoMyCode Dakar pour la formation en bases de données SQL
- Communauté open-source (SQLAlchemy, Streamlit, Plotly)
- Inspiré par les meilleures pratiques de conception de BD relationnelles



