🎭 MyAvatar
Plateforme de gestion d'avatars personnalisés - Un clone de Gravatar développé avec Symfony 6.4
📖 Présentation du Projet
MyAvatar est une application web développée avec Symfony et Twig qui permet d'associer une adresse email à une photo de profil, à la manière du service Gravatar. Les utilisateurs peuvent gérer leur compte et leur avatar depuis une interface sécurisée. Toute application externe peut récupérer un avatar via une simple URL basée sur le hash SHA256 de l'adresse email.
Projet réalisé en équipe de 3 étudiants dans le cadre de ma formation en BUT Informatique. J'ai principalement travaillé sur l'espace personnel, les fonctionnalités dynamiques AJAX et l'espace administrateur.
📊 Statistiques du Projet
15+ Routes
Routes configurées pour la navigation et l'API
3 Contrôleurs
Contrôleurs principaux pour la logique métier
4 Commandes
Commandes console pour la gestion
100% Tests
Tests fonctionnels complets
🎯 Mes Contributions Principales
Dans ce projet d'équipe, j'ai pris en charge le développement de fonctionnalités clés nécessitant une bonne maîtrise de JavaScript, AJAX et de l'architecture Symfony. Mon travail s'est concentré sur l'expérience utilisateur et les interfaces dynamiques sans rechargement de page.
✨ Mes Réalisations Techniques
Espace Personnel Complet
- Interface de visualisation du profil utilisateur
- Upload et modification de photo de profil
- Suppression de la photo de profil
- Gestion des fichiers avec validation côté serveur
- Interface intuitive et responsive
Validation AJAX en Temps Réel
- Vérification instantanée du login disponible
- Vérification instantanée de l'email disponible
- Feedback visuel immédiat pour l'utilisateur
- Désactivation du submit si erreurs détectées
- Code JavaScript modulaire et réutilisable
Système de Masquage du Profil
- Toggle masquer/démasquer le profil public
- Mise à jour dynamique sans rechargement
- Blocage de l'accès public si profil masqué
- Gestion des permissions et sécurité
- Interface utilisateur intuitive
Panneau d'Administration
- Liste complète de tous les utilisateurs
- Suppression des utilisateurs non-admin
- Protection avec Security Voters
- Interface d'administration sécurisée
- Gestion des rôles et permissions
Interactions Dynamiques AJAX
- Mise à jour du profil sans rechargement
- Gestion asynchrone des requêtes
- Feedback utilisateur en temps réel
- Amélioration de l'expérience utilisateur
- Code JavaScript ES6 moderne
JavaScript Modulaire
- field_validation.js pour la validation
- toggle_profile_visibility.js pour le masquage
- photo_profil.js pour la gestion des photos
- Code organisé et maintenable
- Bonnes pratiques JavaScript
👥 Contexte du Projet
Projet réalisé en équipe de 3 étudiants dans le cadre de ma formation en BUT Informatique. Chaque membre de l'équipe a pris en charge des fonctionnalités spécifiques du projet :
Répartition des Tâches
- Liam SCHOTT (moi) : Espace personnel, validation AJAX, masquage du profil, interface administrateur
- BELHAJ Yaniss : Système d'inscription, modification du compte, API avatars publique, mode maintenance
- FAUS Hugo : Commandes console Symfony pour la gestion des utilisateurs
💻 Technologies Utilisées
🎓 Compétences Développées
- Symfony & Architecture MVC : Maîtrise du framework Symfony, développement avec architecture MVC, utilisation de Twig
- JavaScript & AJAX : Développement d'interfaces dynamiques, validation en temps réel, requêtes asynchrones
- Sécurité Web : Gestion des rôles et permissions, Security Voters, protection CSRF, hashage des mots de passe
- Base de données : Doctrine ORM, création d'entités, repositories personnalisés, migrations
- Travail d'équipe : Collaboration sur un projet structuré, utilisation de Git, répartition des tâches
🚀 Apprentissages Clés
Ce projet m'a permis de développer une solide expérience en développement web moderne avec Symfony. J'ai particulièrement apprécié de travailler sur les interfaces dynamiques avec JavaScript et AJAX, ce qui a grandement amélioré l'expérience utilisateur. La collaboration en équipe m'a également appris l'importance de la communication et de la structure du code pour faciliter le travail collaboratif.