Mon CV
← Retour aux projets

🎓 OrientAction

Plateforme de mise en relation lycéens-étudiants avec algorithme de matching intelligent

Django 5.0 PostgreSQL Redis HTMX 2.0 Bootstrap 5 Oracle Cloud (OCI)
🚀 Voir le projet en ligne

📌 Le Projet en Bref

OrientAction est une plateforme web qui aide les lycéens dans leur orientation post-bac en les mettant en relation avec des étudiants ayant suivi le parcours qu'ils envisagent. L'application utilise un algorithme de matching intelligent basé sur 11 critères pondérés pour proposer les profils les plus pertinents.

🎯 Problème Résolu

Les lycéens en phase d'orientation manquent souvent de témoignages directs et personnalisés d'étudiants. Les forums et réseaux sociaux classiques ne permettent pas un matching précis basé sur les critères d'orientation comme la filière, la ville ou les spécialités choisies. OrientAction apporte une solution sur-mesure en proposant un algorithme de matching intelligent, couplé à un système de gamification pour encourager l'engagement des étudiants, et une messagerie en temps réel pour faciliter les échanges.

🛠️ Stack Technique

🐍 Backend

Django 5.0 (Python 3.11)

Architecture modulaire (4 apps)

💾 Base de Données

PostgreSQL 15

Indexes optimisés

⚡ Cache

Redis 7.0

Rate limiting

🎨 Frontend

Bootstrap 5 + HTMX 2.0

Interface responsive

🚀 Déploiement

Oracle Cloud (OCI)

Nginx + Gunicorn + SSL

🔧 DevOps

Ubuntu 22.04 LTS

Systemd + Git

🏗️ Architecture

Internet → DNS (orientaction.assad.ovh)

Oracle Cloud Firewall (Ports 80/443)

Nginx (Reverse Proxy + SSL)

Gunicorn (3 workers)

Django App (4 modules)

PostgreSQL + Redis

4 apps Django : Accounts (auth) · Core (matching) · Messaging (chat) · Student Helper (gamification)

✨ Fonctionnalités Principales

🎯 Algorithme de Matching

Le cœur d'OrientAction repose sur un algorithme de matching intelligent qui calcule un score de compatibilité entre lycéens et étudiants. L'algorithme analyse 11 critères pondérés selon leur importance : la filière d'études compte pour 30%, la ville souhaitée pour 15%, le type d'établissement pour 10%, et les spécialités du lycée pour 8%, complétés par 7 autres critères secondaires.

Grâce à l'utilisation intensive du cache Redis et des indexes PostgreSQL optimisés, l'algorithme maintient un temps de réponse inférieur à 200ms même avec une base de plus de 500 étudiants.

🏆 Gamification

Pour encourager l'engagement des étudiants sur la plateforme, j'ai développé un système complet de gamification. Le système attribue automatiquement 14 badges différents grâce aux Django Signals qui détectent les actions des utilisateurs. Chaque activité génère des points de réputation, permettant aux étudiants de progresser à travers différents niveaux, du statut Débutant jusqu'à Expert. Un classement public met en valeur les étudiants les plus actifs et utiles, créant ainsi une dynamique d'émulation positive.

💬 Messagerie Temps Réel

La messagerie privée entre lycéens et étudiants utilise HTMX 2.0 pour offrir une expérience fluide sans rechargement de page. Un système de polling automatique toutes les 3 secondes assure la mise à jour des messages en temps réel. Pour prévenir les abus, j'ai implémenté un rate limiting qui limite l'envoi à 30 messages par heure maximum par utilisateur, géré efficacement grâce à Redis. L'interface responsive s'adapte parfaitement aux écrans mobiles comme aux ordinateurs de bureau.

🔐 Sécurité Renforcée

La sécurité d'OrientAction repose sur une approche multi-niveaux. Le chiffrement SSL/TLS via Let's Encrypt garantit la confidentialité des échanges avec un grade A+ validé par SSL Labs. Les headers HTTP sécurisés (HSTS, CSP) protègent contre les attaques courantes, complétés par les protections CSRF et XSS intégrées à Django. Le rate limiting géré par Redis prévient les tentatives d'abus, tandis que le firewall OCI couplé à UFW sécurise l'infrastructure au niveau réseau.

☁️ Déploiement Production sur Oracle Cloud

🤔 Pourquoi Oracle Cloud (OCI) ?

J'ai choisi Oracle Cloud Infrastructure pour plusieurs raisons stratégiques. D'abord, l'Always Free Tier offre une infrastructure gratuite à vie avec des ressources suffisantes pour ce projet (1 vCPU, 1 GB RAM, 50 GB de stockage). Ensuite, contrairement aux solutions PaaS comme Heroku, OCI m'a permis d'avoir un contrôle total sur le serveur avec un accès root complet, me donnant une expérience DevOps réelle et concrète. Enfin, la fiabilité de l'infrastructure professionnelle d'Oracle garantit une disponibilité optimale pour l'application.

🚀 Stack de Déploiement

L'application tourne sur une instance VM.Standard.E2.1.Micro sous Ubuntu 22.04. Le serveur web Nginx agit comme reverse proxy et sert les fichiers statiques directement, tandis que Gunicorn gère l'application Django avec 3 workers communiquant via Unix socket. La base de données PostgreSQL 15 est optimisée pour fonctionner efficacement avec 1GB de RAM, et Redis 7.0 fournit le cache avec une limite de 256MB. Les certificats SSL Let's Encrypt se renouvellent automatiquement via Certbot, et le domaine orientaction.assad.ovh est géré chez OVH. Enfin, Systemd assure le redémarrage automatique des services en cas de problème.

⚠️ Défis Techniques Rencontrés

❌ Problème : Superuser user_type

Erreur lors de la création du superuser : le modèle User custom n'accepte que 'lyceen' ou 'etudiant'.

✅ Solution Appliquée

Création avec user_type='etudiant'. Les permissions admin sont gérées par is_superuser et is_staff, indépendamment du type métier.

❌ Problème : Gunicorn crash au démarrage

Le service systemd démarre puis s'arrête immédiatement. Logs : dossier /logs/ inexistant.

✅ Solution Appliquée

Création du dossier logs, vérification des permissions (chown ubuntu:www-data), test manuel de Gunicorn avant activation du service.

❌ Problème : Fichiers statiques 404

CSS/JS non chargés en production, erreurs 404 sur /static/.

✅ Solution Appliquée

Vérification : collectstatic exécuté, permissions fichiers (755), alias Nginx correct, reload Nginx.

📊 Résultats & Métriques

En Ligne
< 200ms
Temps Réponse
A+
SSL Labs
99.9%
Uptime
~5000
Lignes Python
15+
Modèles Django

🎓 Compétences Démontrées

🐍 Backend & Architecture

Maîtrise avancée de Django 5.0 avec développement d'une architecture modulaire répartie en 4 applications distinctes. Optimisation de l'ORM Django via des indexes stratégiques et l'utilisation de select_related/prefetch_related. Conception et implémentation d'algorithmes métier complexes comme le système de matching multi-critères.

☁️ DevOps & Cloud

Expérience complète de déploiement production sur Oracle Cloud Infrastructure, incluant la configuration de Nginx comme reverse proxy et Gunicorn comme serveur WSGI. Gestion des services via Systemd et administration complète de serveurs Linux Ubuntu en environnement production.

💾 Bases de Données

Conception et gestion de bases PostgreSQL avec migrations, optimisations de requêtes et modélisation de données complexes utilisant relations et JSONField. Implémentation de Redis pour le cache applicatif et le rate limiting. Mise en place de stratégies de backup automatisées.

🔒 Sécurité & Performance

Configuration complète SSL/TLS et headers HTTP sécurisés. Protection contre les vulnérabilités CSRF et XSS. Optimisation des performances avec cache Redis permettant des temps de réponse inférieurs à 200ms. Mise en place de rate limiting et configuration de pare-feu multi-niveaux.

🚀 Évolutions Envisagées

Court Terme

Les prochaines évolutions incluent l'implémentation de notifications en temps réel via WebSockets pour alerter instantanément les utilisateurs des nouveaux messages et matchs. Un système d'emails automatiques viendra compléter les notifications, et une recherche avancée multi-critères permettra aux lycéens d'affiner encore plus leurs recherches. Enfin, un dashboard analytics offrira des statistiques détaillées sur l'utilisation de la plateforme.

Long Terme

Sur le long terme, je prévois de développer une application mobile avec React Native pour améliorer l'accessibilité. L'intégration d'un chatbot IA basé sur GPT-4 pourrait assister les lycéens dans leurs questionnements d'orientation. Un système de visioconférence intégré via WebRTC permettrait des échanges plus riches entre lycéens et étudiants. Enfin, une API publique ouvrirait la plateforme aux établissements scolaires souhaitant l'intégrer dans leurs outils.

💡 Ce que ce projet démontre

OrientAction illustre ma capacité à gérer un projet de A à Z, depuis la conception initiale jusqu'à la maintenance en production. Je maîtrise l'ensemble de la stack full-stack, combinant un backend Django avancé, un frontend responsive et des compétences DevOps concrètes pour le déploiement production.

Le projet met également en lumière mes compétences en résolution de problèmes, que ce soit pour le debugging, les optimisations de performance ou la correction d'erreurs en environnement de production. L'architecture professionnelle adoptée garantit un code modulaire, sécurisé, scalable et facilement maintenable.

Au-delà de l'aspect technique, OrientAction apporte une réelle valeur business en proposant une solution concrète à un problème d'orientation que rencontrent des milliers de lycéens chaque année.

OrientAction allie technique, innovation et utilité sociale.
Un projet complet qui démontre ma capacité à développer et déployer une application web professionnelle.

🌐 Voir l'application en ligne
← Retour aux projets