Je me suis concentrée sur la partie développement, à la fois front-end et back-end. J’ai conçu et développé des pages dynamiques en PHP pour afficher les jeux, gérer les filtres de recherche et permettre les modifications côté utilisateur. J’ai également implémenté la logique de requêtes SQL pour interagir avec la base de données, en veillant à optimiser les performances et à sécuriser les entrées. J’ai travaillé sur la mise en place de la pagination, la gestion des droits d’accès selon les rôles utilisateurs, ainsi que sur des fonctionnalités spécifiques comme l’ajout ou la modification d’un jeu dans l’inventaire.
Ce projet m’a permis de renforcer mes compétences en développement web, notamment dans la manière de structurer un projet en respectant le modèle MVC. J’ai appris concrètement comment séparer les responsabilités entre le modèle (la base de données et sa logique d’accès), la vue (l’affichage des données à l’utilisateur) et le contrôleur (le traitement des actions et la communication entre le modèle et la vue). Cela m’a permis de développer un code plus propre, plus maintenable et évolutif. J’ai également gagné en autonomie dans la gestion d’un projet web, en précision dans le débogage, et en efficacité dans l’écriture de requêtes SQL complexes.
L’une des principales difficultés a été l’intégration entre le front-end et le back-end, notamment pour le traitement des formulaires et l’affichage dynamique des résultats. Pour y faire face, j’ai mis en place des tests manuels réguliers, ajouté des messages d’erreur explicites côté serveur, et retravaillé le traitement des données pour assurer leur cohérence tout au long du cycle de vie de l’application. J’ai également amélioré l’organisation du code en respectant le découpage MVC, ce qui a facilité la maintenance collective du projet.
J’ai participé à la conception et au développement de l’application mobile (Flutter / Dart), de la définition
des fonctionnalités jusqu’à l’implémentation de la recommandation. L’utilisateur complète un profil (temps
disponible, préférences, solo/groupe, goûts…), puis l’application propose un Top 3, des suggestions
complémentaires et un bouton « Surpriz’Me » (recommandation aléatoire) pour sortir des habitudes.
Nous avons mis en place 3 logiques de recommandation (une par catégorie : activités, films, jeux) et
des
mécanismes de personnalisation progressive à partir des interactions (likes / dislikes), tout en gardant un
fonctionnement hors connexion avec stockage local.
Ce projet m’a permis d’aller au-delà du simple “ça marche”. J’ai appris à transformer des préférences
humaines en données exploitables, à comparer des approches de recommandation et à mesurer l’impact des choix
techniques sur l’expérience.
J’ai aussi découvert des contraintes propres au mobile : fluidité de l’interface, temps de réponse, mémoire et
consommation de ressources, surtout dans une application qui fonctionne en local.
La difficulté principale a été de gérer 3 algorithmes de recommandation différents tout en gardant une
expérience utilisateur cohérente. Comme nous n’avions pas tous les mêmes goûts, il fallait trouver un juste
équilibre dans les critères et dans l’interface (formulaire de profil, affichage du Top 3, suggestions,
bouton « Surpriz’Me ») pour que l’app reste agréable et “logique” pour n’importe quel utilisateur.
Pour résoudre ces difficultés, nous avons amélioré la communication entre les membres du groupe, défini plus
clairement le fonctionnement des différentes recommandations et réalisé plusieurs tests avec différents
profils utilisateurs afin d’ajuster progressivement les résultats et améliorer l’expérience proposée dans
l’application.
Nous avons créé une interface graphique en Python avec Pygame (bibliothque python) pour afficher le resultat
du
diagramme. J’ai participé au chargement des données (coordonnées), à leur stockage et à la transformation des
points en “germes” (position + représentation graphique).
Pour générer le diagramme, nous avons utilisé une méthode basée sur le calcul de distance : pour chaque
pixel de l’écran, on calcule la distance avec tous les points présents, puis on attribue la couleur du point
le plus proche.
Les points sont stockés dans un fichier JSON pour faciliter les modifications, et nous avons ajouté
une fonctionnalité d’export en image PNG pour améliorer la visualisation.
Cette SAÉ m’a appris à partir d’un sujet mathématique/théorique pour aller vers une visualisation concrète.
J’ai aussi appris à manipuler des données externes (fichier JSON) et à construire une interface simple mais
fonctionnelle.
Nous avons également comparé nos implémentations avec des solutions proposées par des IA (logique de
calcul, pistes d’optimisation), ce qui m’a permis de mieux comprendre les choix techniques derrière chaque
approche.
L’une des principales difficultés a été la partie algorithmique : il fallait comprendre les concepts
mathématiques derrière le diagramme et avancer progressivement. Une autre limite importante était la
performance : le calcul “pixel par pixel” rendait l’exécution assez lente.
Nous avons testé régulièrement sur différents jeux de points, ajusté au fur et à mesure, et utilisé la
comparaison avec des IA pour explorer d’autres manières de résoudre le problème quand nécessaire.
J’ai développé des fonctions complexes en Python pour gérer le calcul des distances et l’optimisation des parcours, tout en assurant la gestion des entrées utilisateurs. J’ai également documenté le code de manière claire et réalisé des tests unitaires pour garantir la fiabilité du programme. Ce projet s’est fait en binôme, ce qui a impliqué une collaboration étroite et une communication régulière.
Cette expérience m’a permis de renforcer mes compétences en programmation Python, notamment dans la conception d’algorithmes complexes. J’ai amélioré ma capacité à structurer un code clair et efficace, ainsi qu’à documenter et tester rigoureusement mes solutions techniques. Le travail en binôme a développé mes aptitudes à collaborer, communiquer et organiser le travail en équipe.
La principale difficulté a été de gérer la complexité des fonctions d’optimisation et d’assurer leur fiabilité. Pour y faire face, j’ai adopté une méthode de développement avec des tests fréquents et des validations régulières, ce qui a permis d’améliorer la robustesse du code et ma méthodologie de travail.