IUT Quest

Logo d'IUT Quest : un coureur stylisé à côté du nom du jeu, en blanc sur fond orange
Voir la démo Code sur GitHub

Fiche projet

Catégorie
Full-stack
Année
2026
Rôle
Développeur full-stack (front · tests · back)
Durée
1 mois
Type
SAÉ 4012, projet de groupe
Statut
Démo en ligne

Présentation

IUT Quest est un jeu de piste grandeur nature inspiré de Pékin Express, conçu pour le challenge inter-filières de l'IUT de Blois. Le temps d'une journée, jusqu'à 12 équipes de 6 à 10 personnes (étudiants, enseignants et personnel administratif) s'affrontent à travers toute la ville.

Le parcours s'étend sur les deux sites de l'IUT, la bibliothèque universitaire, le centre-ville et le château. Chaque équipe enchaîne six grandes épreuves collectives planifiées à l'avance, et pioche en parallèle dans un catalogue d'une centaine de défis libres en photo, vidéo ou texte, valant de 5 à 30 points selon leur difficulté. L'équipe qui totalise le plus de points repart avec le trophée.

Équipe (4 personnes)

Organisation : Kanban sur Trello, une branche Git par tâche, relecture systématique avant chaque merge.

Mon rôle

Stack technique

Fonctionnalités principales

Défis rencontrés

Points comptés en double

Problème : les points étaient crédités dès la soumission d'une preuve. Un simple retour arrière du navigateur suffisait à les compter deux fois, et un refus de l'admin ne les retirait pas.

Solution : un état explicite sur chaque défi (non validé, en cours de validation, validé), et l'attribution des points déplacée au seul moment où un admin tranche. Le score dépend de ce qui a été validé, plus de ce que fait le joueur.

Envoi de vidéos lourdes en 4G

Problème : l'envoi d'une vidéo de plusieurs dizaines de Mo bloquait l'interface, et la preuve pouvait être ouverte à la validation avant la fin du transfert.

Solution : photos compressées en WebP côté serveur, vidéos traitées par un job asynchrone avec FFmpeg. Le fichier est stocké temporairement et n'apparaît à la validation qu'une fois le traitement terminé.

Géolocalisation instable

Problème : le navigateur redemandait l'autorisation de géolocalisation à chaque changement de page, et les positions sur la carte devenaient incohérentes.

Solution : autorisation demandée une seule fois puis conservée en session. watchPosition prend le relais en continu et n'envoie la position à l'API qu'à intervalle régulier : assez souvent pour suivre la course, assez peu pour épargner la batterie.