Chronag

Chronométrage des temps de parole

Documentation technique & utilisateur — v2 MVP

Qu'est-ce que Chronag ?

Outil de chronométrage collaboratif des temps de parole lors de sessions.

Chronag permet à des organisations d'orchestrer des événements (assemblées, débats, conférences…) en mesurant précisément le temps de parole de chaque participant lors de tours de parole successifs.

Le chronomètre est synchronisé en temps réel entre tous les postes connectés à une même session grâce au protocole Mercure, permettant à un opérateur de démarrer/arrêter le compteur pendant qu'un présentateur surveille son propre temps sur un autre écran.

En fin d'événement, un rapport consolidé cumule les temps de parole de toutes les sessions pour fournir une vue analytique complète.

Temps réel
Mercure / SSE
Multi-utilisateurs
Rôles par niveau
Rapports
Cumul par session
Import CSV
Participants

Architecture des données

Hiérarchie des entités principales gérées par Doctrine ORM.

Organisation  ← entité racine (slug unique)
└── Evenement  ← créé par un organisateur
    ├── Participant[]  ← liste fixe, import CSV
    ├── EventUser[]   ← comptes ayant accès
    └── Session[]     ← tour de parole
        └── SpeechEntry[]
            ├── participant  → Participant
            ├── startedAt   DateTime
            ├── stoppedAt   DateTime|null
            └── duration    int (secondes)
Organisation

Entité racine identifiée par un slug (ex. mairie-de-lyon). Regroupe les événements et les membres (Membership).

Événement

Conteneur principal. L'organisateur y ajoute les participants (manuellement ou via CSV) et accorde des accès aux opérateurs (EventUser).

Session & SpeechEntry

Une session = un tour de parole. Chaque intervention (SpeechEntry) enregistre le participant, les horodatages et la durée calculée.

Rôles et permissions

Trois niveaux d'accès indépendants — plateforme, organisation, événement.

ROLE_SUPER_ADMIN
Administrateur plateforme

Accès à /admin/**. Compte créé manuellement, non accessible au public.

  • ✓ Créer / gérer les organisations
  • ✓ Créer / gérer les comptes utilisateurs
  • ✓ Vue globale de tous les événements
  • ✓ Hérite de ROLE_USER
ORGANISATEUR
Organisateur

Rôle au niveau de l'organisation (via Membership).

  • ✓ Créer et configurer des événements
  • ✓ Gérer la liste des participants
  • ✓ Import / export CSV des participants
  • ✓ Accorder l'accès aux opérateurs (EventUser)
  • ✓ Consulter les rapports
EVENT USER
Opérateur d'événement

Accès limité à un événement spécifique (via EventUser).

  • ✓ Créer des sessions (tours de parole)
  • ✓ Démarrer / arrêter le chronomètre
  • ✓ Sélectionner le participant actif
  • ✓ Consulter le rapport de l'événement
Pas d'inscription publique. Les comptes sont créés par l'administrateur plateforme. Un email contenant un lien /setup/{token} est envoyé à l'utilisateur pour qu'il définisse son mot de passe.

Fonctionnalités principales

Modules couverts par la documentation utilisateur.

Gestion des organisations

Création, configuration, liste des membres. Chaque organisation dispose d'un espace dédié accessible via son slug.

Gestion des événements

Création d'un événement, ajout de participants (formulaire ou import CSV), attribution d'accès aux opérateurs.

Gestion des participants

Liste fixe définie par l'organisateur. Import en masse via fichier CSV. Export possible pour archivage.

Chronomètre temps réel

Interface dédiée par session. Démarrage / arrêt / remise à zéro synchronisés via Mercure (SSE) sur tous les clients connectés.

Sessions (tours de parole)

Création d'une session, sélection du participant actif, enregistrement automatique de chaque intervention.

Rapports

Vue consolidée au niveau de l'événement : cumul des temps de parole par participant sur l'ensemble des sessions.

Flux de travail typique

Scénario nominal de bout en bout pour la documentation utilisateur.

Côté organisateur
1
Créer l'événement
Depuis le tableau de bord de l'organisation, cliquer sur « Nouvel événement » et renseigner le titre et la date.
2
Ajouter les participants
Saisie manuelle ou import d'un fichier CSV (colonnes : prénom, nom, organisation…).
3
Accorder les accès opérateurs
Depuis la page de l'événement, inviter un ou plusieurs utilisateurs existants en tant qu'EventUser.
4
Consulter le rapport final
Accéder au rapport de l'événement pour visualiser les temps cumulés par participant.
Côté opérateur
1
Créer une session
Depuis la page de l'événement, ouvrir un nouveau tour de parole et lui donner un libellé.
2
Ouvrir l'interface chrono
Accéder à la vue chronomètre de la session. L'affichage est synchronisé en temps réel sur tous les écrans connectés.
3
Sélectionner le participant et démarrer
Choisir le participant dans la liste, cliquer sur Démarrer. Le temps s'écoule en direct.
4
Arrêter et passer au suivant
Cliquer sur Arrêter : l'intervention est enregistrée. Sélectionner le prochain participant et recommencer.

Routes clés

Référence rapide pour l'équipe technique.

Méthode Chemin Nom de route Accès requis Description
GET /login app_login Public Formulaire de connexion
GET / app_dashboard ROLE_USER Tableau de bord utilisateur
GET /organisations/{slug}/evenements/{id} app_evenement_show ROLE_USER Page d'un événement
POST /organisations/{slug}/evenements/nouveau app_evenement_new Organisateur Créer un événement
GET /organisations/{slug}/evenements/{eid}/sessions/{sid} app_session_show EventUser Détail d'une session
GET /organisations/{slug}/evenements/{eid}/sessions/{sid}/chrono app_timer EventUser Interface chronomètre temps réel
GET /organisations/{slug}/evenements/{id}/rapport app_report_show EventUser Rapport consolidé de l'événement
GET /admin app_admin_dashboard ROLE_SUPER_ADMIN Tableau de bord d'administration
GET /setup/{token} app_setup Token Définition du mot de passe (premier accès)

Stack technique

Technologies utilisées — informations pour l'équipe documentation technique.

Backend
PHP 8.4 Symfony 8.0 Doctrine ORM MySQL 8.0 Mercure (SSE) FrankenPHP Twig Symfony Mailer
Frontend
Bootstrap 5 Stimulus Turbo (Hotwire) Live Components ImportMap Inter (Google Fonts)
Infrastructure (Docker)
MySQL — port 3307 Mercure — port 9090 Mailpit SMTP — port 1025 Mailpit UI — port 8025
Sécurité
Symfony Security Custom Voters CSRF Protection Remember Me (7j) Password Hasher (auto)

Démarrage de l'environnement

Prérequis et commandes pour faire tourner Chronag en local.

# 1. Démarrer les services Docker (BDD, Mercure, Mailpit)
docker compose up -d

# 2. Installer les dépendances PHP
composer install

# 3. Appliquer les migrations de base de données
php bin/console doctrine:migrations:migrate

# 4. (Optionnel) Charger les fixtures de démonstration
php bin/console doctrine:fixtures:load

# 5. Démarrer le serveur de développement
symfony server:start
Prérequis système
  • PHP ≥ 8.4
  • Composer 2
  • Docker & Docker Compose
  • Symfony CLI
  • Node.js (assets)
Premier super-admin : aucune interface publique ne permet de créer le premier compte administrateur. Il doit être créé via une commande console ou directement en base de données, puis l'email de définition de mot de passe est envoyé depuis /admin/users.