Zivou
Des quiz en direct qui transforment une salle pleine de monde en une salle pleine de joueurs.
Web · iOS · Android

Salon animateur 
Question 
Podium 
Studio animateur

Rejoindre 
Répondre 
Remettre en ordre 
Résultats
Vingt secondes. Une question. À vous.
Voici ce que l’on ressent sur son téléphone pendant une manche Zivou : le chrono tourne, on touche, et la rapidité devient des points — calculés avec la même formule que le produit dans sa base de données.
De quoi un joueur a-t-il besoin pour rejoindre une partie Zivou ?
Les bonnes réponses rapides rapportent plus : 500 points pour la justesse, jusqu’à 500 de plus pour la rapidité.
Rejoignez zivou.stylotech.mu · code
482 916
8 joueurs dans le salon
- Kev
- Priya
- Ravi
- Anaïs
- Sofia
- Jean-Marc
- Leela
- Yash
- formats de questions
- 7
- chiffres pour rejoindre une partie
- 6
- application à installer pour les joueurs
- 0
- langues, français et anglais
- 2
À Maurice, réunions, intégrations et formations sont pleines de gens qui ont décroché. Les outils de quiz existent, mais ils sont pensés pour des salles de classe ailleurs, demandent à chaque invité de télécharger quelque chose et parlent rarement français. Zivou est un quiz qu’une entreprise lance pour ses équipes en deux minutes : un code à six chiffres, un pseudo, et la salle joue.
Zivou est un produit de StyloTech. Nous le concevons, le dessinons, le développons, l’exploitons et le maintenons — le client web React, le schéma Supabase avec sa sécurité au niveau des lignes et ses fonctions de correction, le modèle de formules et de facturation, les pages légales et le déploiement. Les applications Android et iOS sont en développement sur le même backend.
Chaque compte Entreprise commence par un essai de 90 jours, puis une formule mensuelle ou annuelle en roupies. Comme ce sont les animateurs qui paient et jamais les joueurs, les règles qui comptent — qui peut animer, combien peuvent rejoindre, ce que vaut une bonne réponse — vivent dans Postgres, pas dans le navigateur.
- App Store
- Google Play
- Application web
Les applications Android et iOS sont en développement. En attendant, l’application web est en ligne.
- Web
- iOS
- Android
- Client web
- React 19
- TypeScript
- Vite
- React Router
- Motion
- Web Audio
- Client mobile
- Flutter
- go_router
- mobile_scanner
- Lottie
- App Links
- Backend
- Supabase
- PostgreSQL
- Row Level Security
- Postgres RPC
- Supabase Auth
- Infrastructure
- Supabase Storage
- Edge Functions
- Firebase Cloud Messaging
- Custom SMTP
- GitHub
- Qualité & livraison
- Vitest
- Playwright
- axe-core
- SQL test suites
- Stratégie produit
- Design UI/UX
- Design system
- Architecture technique
- Développement frontend
- Développement backend
- Conception de la base de données
- Tests & assurance qualité
- Mise en production
- Maintenance
Ce que ça fait
Chaque élément répond à une tâche réelle le jour de l’épreuve, pas à une liste de fonctionnalités. Le site du produit les détaille un par un.
Sept façons de poser une question
Choix unique, vrai ou faux, choix multiples, réponse libre, nombre avec tolérance, sondage sans points et remise en ordre — chacun validé et corrigé selon ses propres règles dans la base de données.
Un code, pas d’application
Les joueurs scannent un QR ou saisissent un code à six chiffres, choisissent un pseudo et un avatar, et répondent depuis le navigateur de n’importe quel téléphone ou ordinateur. Aucun compte pour les invités.
L’animateur garde la main
Ouvrir le salon, retirer un joueur, démarrer, révéler et passer à la suite au rythme de la salle, avec plein écran et son pour un projecteur ou une visioconférence.
Une révélation qui vaut l’attente
Les réponses se verrouillent à l’envoi et le compteur monte en direct sur grand écran ; la révélation montre la répartition de la salle, la bonne réponse et l’explication de l’animateur.
Un score équitable
Une bonne réponse vaut de 500 à 1 000 points selon la rapidité, doublés sur les manches choisies, mesurés à l’horloge du serveur pour qu’un téléphone lent ne soit jamais pénalisé deux fois.
Un podium, puis une revanche
Les trois premiers montent sur un podium animé avec confettis ; la partie reste dans l’historique de l’animateur, et la revanche avec le même quiz se lance en un clic.
Un studio pour l’animateur
Partir d’un modèle ou d’un quiz vierge, réordonner et dupliquer les questions, régler le temps de 10 secondes à deux minutes, ajouter des explications et prévisualiser avec les vraies commandes de réponse.
Les entreprises animent, les joueurs gardent leurs scores
À l’inscription, on choisit un compte Entreprise pour animer ou un compte Participant gratuit qui conserve chaque résultat et classement des parties jouées en étant connecté.
Des formules appliquées là où il faut
Joueurs par partie, quiz enregistrés et salons simultanés sont vérifiés dans les fonctions d’animation ; l’export CSV des résultats accompagne les formules payantes.
Pensé pour de vrais téléphones
La remise en ordre se fait par glisser-déposer à la souris et par une poignée sur écran tactile ; un joueur dont la connexion tombe retrouve sa place.
Bilingue et accessible
Français et anglais partout, thèmes clair et sombre, effets sonores synthétisés que l’on peut couper, utilisation au clavier et mouvements réduits respectés.
La confidentialité comme fonctionnalité
Les joueurs ne sont visibles que par leur pseudo, les numéros de téléphone n’atteignent jamais une partie, et chaque utilisateur peut télécharger ses données ou supprimer son compte lui-même.
Une réponse, retracée
Un joueur touche une réponse sur son téléphone. Voici tout ce qui se passe entre ce geste et les points sur le grand écran.
Tiré des fonctions zivou_submit et zivou_state des migrations Supabase. Chaque nom ci-dessous apparaît dans le code tel quel.
- 01
Le téléphone n’envoie que la réponse
La saisie appelle zivou_submit avec la partie, le numéro de la question et un jeton de joueur aléatoire conservé sur l’appareil. Ni score, ni horodatage, rien que la base doive décider.
- AnswerInput
- zivou_submit
- p_token
- 02
Ce joueur est-il dans cette partie ?
Le jeton est comparé aux joueurs de la session. Il n’apparaît jamais dans une URL : un lien partagé dans une discussion ne permet pas de répondre à la place d’un autre.
- zivou_players
- token
Ce qui s’affiche en cas de refus
Un jeton inconnu ou étranger est invité à rejoindre la partie avant de répondre.
- 03
La question est-elle encore ouverte ?
La session doit être sur cette question précise, en cours et non expirée.
- status
- question_index
- expires_at
Ce qui s’affiche en cas de refus
Une réponse à une question déjà révélée, ou à la mauvaise, est refusée comme close.
- 04
La base garde l’heure
Le temps écoulé est clock_timestamp() moins le début de la question, rapporté à son propre chrono — l’horloge du téléphone n’est jamais consultée.
- clock_timestamp()
- question_started_at
- seconds
Ce qui s’affiche en cas de refus
Trop tôt : la question n’a pas commencé ; trop tard : le temps est écoulé.
- 05
Vérifiée selon son format
Un choix, plusieurs choix, quatre éléments dans l’ordre, un texte de 200 caractères au plus ou un nombre dans la limite d’un billion — chaque format a sa forme, vérifiée avant la correction.
- choice
- boolean
- multi
- text
- number
- poll
- order
Ce qui s’affiche en cas de refus
Une réponse mal formée est refusée avec un message propre à son format.
- 06
Corrigée avec ce que seule la base connaît
L’indice, l’ensemble, les réponses acceptées, la tolérance ou l’ordre corrects sont lus dans la copie du quiz côté serveur. Les sondages ne sont jamais notés.
- correctIndex
- correctIndices
- acceptedAnswers
- tolerance
- correctOrder
- 07
La rapidité devient des points
Une bonne réponse rapporte 500 points plus jusqu’à 500 de plus selon la rapidité, multipliés sur les manches à points doubles.
- 500 + floor(500.0 * (1 - elapsed / duration))
- pointsMultiplier
- 08
Une fois, et une seule
La réponse est enregistrée sous une clé partie, joueur et question ; un second appui est ignoré au lieu d’être compté.
- primary key (session_id, player_id, question_index)
- on conflict do nothing
- 09
Secrète jusqu’à la révélation
Tant que l’animateur n’a pas révélé, zivou_state retire tous les champs de bonne réponse de ce qu’elle envoie ; ensuite, elle renvoie la réponse, la répartition de la salle et le nouveau classement.
- zivou_state
- distribution
- players
Détail technique
Relevé dans le code source du projet, pas dans une plaquette commerciale.
- Modèle de données
- Supabase Postgres : 8 tables, toutes sous sécurité au niveau des lignes, avec 9 politiques d’accès et 22 fonctions SQL, construites au fil de 5 migrations
- Secret des réponses
- Les bonnes réponses ne quittent jamais la base avant la révélation : zivou_state les retire de la question renvoyée, et zivou_submit corrige chaque réponse côté serveur
- Chronométrage
- La rapidité est mesurée à l’horloge de la base, pas à celle du téléphone ; les égalités se départagent au temps total des bonnes réponses, et chaque joueur répond une seule fois par question
- Formules et essai
- Un déclencheur à l’inscription accorde l’essai de 90 jours une fois par compte ; limites de joueurs, de quiz et de salons sont refusées par les fonctions d’animation et d’inscription elles-mêmes
- Client web
- React 19 en TypeScript strict avec Vite, React Router et Motion ; chaque écran en français et en anglais, clair et sombre, avec son Web Audio et confettis sur canvas
- Contrôles qualité
- Tests unitaires Vitest et deux suites de tests SQL exécutées dans des transactions annulées — permissions, limites des formules, score, résultats et suppression de compte — plus des contrôles d’accessibilité axe automatisés
Des quiz en direct qui transforment une salle pleine de monde en une salle pleine de joueurs.
