
PROJET ETUDIANT : Amélioration d’une application Django
Ce projet consiste en la modernisation et la mise en production d’une application web développée avec Django, avec un fort accent mis sur les pratiques DevOps, l’automatisation du déploiement et la qualité logicielle.
L’application permet la gestion d’annonces de locations immobilières et de profils utilisateurs à travers une architecture Django. Au-delà des fonctionnalités web, le projet met en œuvre une chaîne complète d’intégration et de déploiement continus (CI/CD), la conteneurisation de l’application, la supervision des erreurs, les tests automatisés et la documentation technique.
J’ai particulièrement porté mon attention sur :
- Refactorisation et modernisation de l’architecture Django avec une architecture modulaire
- Mise en place de tests automatisés avec Pytest
- Intégration et déploiement continus avec GitHub Actions
- Conteneurisation de l’application avec Docker
- Déploiement automatisé sur Heroku via conteneur Docker
- Configuration de production avec Gunicorn et WhiteNoise
- Intégration de Sentry pour la supervision des erreurs et le monitoring
- Gestion personnalisée des pages d’erreur 404 et 500
- Génération de documentation technique avec Sphinx et Read the Docs
- Vérification de la qualité du code avec Flake8
- Gestion sécurisée des variables d’environnement et des secrets
Ce projet m’a permis de travailler sur des problématiques proches d’un contexte professionnel réel : architecture modulaire, migration de bases de données, gestion des dépendances, debugging avancé, tests, pipeline CI/CD, déploiement automatique, qualité logicielle et maintenabilité du code.
Problématiques rencontrées :
1. Déploiement Docker sur Heroku avec GitHub Actions
Problème : Le pipeline CI/CD construisait correctement l’image Docker, mais le déploiement Heroku échouait à plusieurs reprises avec des erreurs liées au container stack, au registre Docker Heroku ou à la phase de release.
Solution : Reconfiguration du stack Heroku.
Ce que j’ai appris :
- configurer un pipeline CI/CD complet avec GitHub Actions
- déboguer un environnement de déploiement cloud
- interpréter les logs Docker et Heroku
2. Gestion des fichiers statiques Django en production
Problème : Après le déploiement, les fichiers CSS, JavaScript et images n’étaient plus accessibles en production. L’application fonctionnait, mais l’interface était cassée.
Solution : J’ai configuré WhiteNoise pour servir les fichiers statiques directement depuis le conteneur Docker.
Ce que j’ai appris :
- comprendre le cycle de gestion des fichiers statiques dans Django
- distinguer environnement local et environnement de production
- configurer WhiteNoise et Gunicorn ensemble
3. Gestion des erreurs 404/500 avec Django et Sentry
Problème :
Je souhaitais remplacer les blocs try/except manuels par les handlers Django tout en conservant des templates d’erreur personnalisés, le monitoring des erreurs avec Sentry et des tests automatisés fonctionnels.
Solution : J’ai refactorisé les vues pour utiliser les outils natifs Django, puis adapté les tests.
Ce que j’ai appris :
- comprendre le fonctionnement interne des handlers Django
- différencier erreurs applicatives et erreurs HTTP
- tester correctement les pages 404 et 500
- intégrer Sentry sans complexifier inutilement le code
4. Gestion des variables d’environnement et des secrets
Problème :
Le déploiement nécessitait plusieurs variables sensibles :
- clés API
- configuration Django
- configuration Sentry
- paramètres Heroku
Solution : J’ai centralisé la gestion des variables d’environnement via :
- les secrets GitHub
- les variables Heroku
- des fichiers .env pour le développement local
Ce que j’ai appris :
- sécuriser une application web en production
- distinguer configuration locale et configuration cloud
- manipuler les secrets dans GitHub Actions ou les variables dans Heroku
- améliorer la portabilité et la maintenabilité d’un projet
En quelques mots-clés :
- Python
- Django
- Pytest
- Docker
- CI/CD
- GitHub Actions
- Heroku
- Gunicorn
- WhiteNoise
- Sentry
- DevOps
- backend
- Tests automatisés
- Intégration continue
- Déploiement continu
- Monitoring
- Logging
- Sphinx
- Read the Docs
- Variables d’environnement
- Conteneurisation
- Documentation technique
- Qualité logicielle
- Gestion des erreurs
- GitHub
- Architecture modulaire
V01
Le code source : repository GitHub
Exemple d’exécution :

A bientôt ! 😉
