Un classement juste, en direct
Six équipes marquent des points en même temps et l'écran projeté doit suivre sans jamais être rechargé. Sans garde-fou, n'importe quel écran connecté aurait aussi pu modifier le score d'une autre équipe.
Chaque équipe écrit uniquement dans son propre document Firestore ; l'écran de classement s'abonne à la collection avec onSnapshot() et retrie à chaque changement. Les règles de sécurité Firestore refusent toute écriture sur le score d'une autre équipe.
// L'écran projeté écoute les scores, sans jamais écrire
const q = query(collection(db, 'teams'), orderBy('score', 'desc'));
useEffect(() => onSnapshot(q, (snap) => {
// Chaque point marqué par une équipe arrive ici, à tous les écrans
setTeams(snap.docs.map((d) => ({ id: d.id, ...d.data() })));
}), []);






