🎭 MyAvatar

Plateforme de gestion d'avatars personnalisés - Un clone de Gravatar développé avec Symfony 6.4

Symfony 6.4 PHP 8.1+ Doctrine ORM Twig JavaScript ES6 AJAX Security

📖 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.

🔗 Voir le code source sur GitLab

📊 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

PHP 8.1+ Symfony 6.4 Doctrine ORM Twig JavaScript ES6 AJAX / Fetch API Security Bundle PHPUnit

🎓 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.