Axiobad Axiobad
Connexion

Documentation

Guide d'utilisation — Axiobad

Ce guide explique comment utiliser l'application Axiobad au quotidien. Il est aussi consultable en ligne, une fois connecté, via le menu du compte (en bas du menu latéral) → Documentation.

Sommaire

Se connecter

Rendez-vous sur l'URL de votre club (le sous-domaine dépend de l'instance : chaque club a la sienne) et connectez-vous avec votre email et votre mot de passe. Le menu latéral n'est visible qu'une fois connecté ; la page d'accueil (et la connexion) redirigent vers le calendrier.

Une fois connecté, le menu latéral (à gauche) regroupe les fonctionnalités par section (Jouer / Club / Bureau) — un bouton en haut de la zone de contenu permet de le réduire en icônes seules pour gagner de la place, et il se transforme en tiroir accessible via le bouton ☰ sur mobile. Le sélecteur en haut à droite permet de choisir le thème clair, sombre, ou de suivre le système (sombre par défaut tant qu'aucun choix explicite n'a été fait).

Premier compte administrateur du club :

⚠️ Ce mot de passe doit impérativement être changé : l'application vous redirige automatiquement vers la page de changement de mot de passe dès la première connexion, et bloque l'accès au reste de l'application tant que ce n'est pas fait. Ce compte administrateur par défaut est protégé : il ne peut être ni désactivé ni supprimé, et n'est pas soumis au suivi des adhésions.

Mot de passe oublié : cliquer sur « Mot de passe oublié ? » sous le formulaire de connexion, saisir son email — si un compte actif y correspond, un lien pour définir un nouveau mot de passe est envoyé (valable 7 jours). Pour ne pas révéler quels emails ont un compte, le message affiché est le même que l'email corresponde ou non à un compte existant.

Le bureau peut aussi déclencher cet envoi directement depuis la fiche d'un licencié (page Licenciés → bouton « Réinitialiser le mot de passe », visible pour tout compte déjà activé).

Exigences sur le mot de passe (à l'activation du compte comme à chaque changement) : au moins 8 caractères, avec une majuscule, une minuscule et un chiffre. Il est aussi refusé s'il apparaît dans une base de fuites de données connues (vérification via l'API Have I Been Pwned, qui ne reçoit jamais le mot de passe en clair) — si ce service externe est indisponible, la vérification de fuite est simplement ignorée, cela ne bloque jamais la création ou le changement du mot de passe.

Revérification périodique : cette même vérification de fuite est refaite automatiquement à chaque connexion (au plus une fois tous les 7 jours par compte), pour rattraper les mots de passe acceptés sans avoir pu être vérifiés à l'origine, et détecter ceux qui deviendraient compromis après coup (fuite découverte sur un autre site). Si un mot de passe est trouvé compromis, un bandeau d'avertissement s'affiche sur toutes les pages tant qu'il n'a pas été changé — cela n'empêche pas de continuer à utiliser l'application.

Rôles et permissions

Chaque licencié peut cumuler plusieurs rôles :

Rôle Description Accès
Licencié Rôle de base, attribué automatiquement à tout le monde Consulter le calendrier et les créneaux, indiquer sa présence, gérer son profil
Membre du bureau Rôle administrateur Tout ce que peut faire un licencié + gestion des licenciés, saisons, gymnases, créneaux et stock
Entraîneur Peut encadrer des créneaux Peut être sélectionné comme entraîneur sur un créneau encadré ; accède à l'historique des présences
Cordeur Gère les demandes de cordage Voit toutes les demandes de cordage et fait avancer leur statut
Accès au stock Accède au module stock Comme un membre du bureau, mais uniquement pour le stock (les membres du bureau y accèdent déjà)

Les rôles se gèrent depuis la fiche de création ou de modification d'un licencié (page Licenciés, bureau uniquement).

Gérer les licenciés (bureau)

Menu Bureau → Licenciés (visible uniquement par les membres du bureau).

Créer un licencié

  1. Cliquer sur + Nouveau licencié.
  2. Renseigner prénom, nom, email, et cocher éventuellement "Membre du bureau" et/ou "Entraîneur".
  3. Valider : un email d'activation est automatiquement envoyé au licencié, avec un lien valable 7 jours pour qu'il définisse lui-même son mot de passe.

Tant que le licencié n'a pas cliqué sur le lien et défini son mot de passe, son statut apparaît comme "En attente d'activation" dans la liste. Une fois activé, il apparaît comme "Actif".

Mineurs et responsables légaux

L'email est optionnel à la création d'un licencié. Le laisser vide crée un licencié sans compte de connexion — typiquement un enfant mineur — qui n'apparaît jamais dans les statuts d'activation (il affiche "Sans compte") et ne peut jamais se connecter lui-même.

  1. Cliquer sur + Nouveau licencié, renseigner prénom/nom, laisser l'email vide.
  2. Dans la section Mineur et responsables légaux, choisir un ou deux responsables légaux parmi les licenciés existants (il faut donc créer le·s parent·s en premier).
  3. Compléter les champs utiles à la sécurité de l'enfant : personnes autorisées à venir le récupérer, contact d'urgence (nom, téléphone), autorisation de sortie seul(e), droit à l'image.
  4. Le champ allergies / informations de santé est une donnée sensible : il n'est visible que du bureau, des entraîneurs et des responsables légaux (affiché sur la fiche présence du licencié). Ne le renseigner que si c'est utile pour la sécurité de l'enfant.

Un responsable légal retrouve tous ses enfants mineurs dans le menu Ma famille : leurs prochains créneaux (avec possibilité de répondre présent/absent en leur nom) et le statut/ paiement de leur adhésion. « Ma famille » est visible de tous les licenciés connectés, même sans enfant à charge (la liste est alors vide).

Rechercher, trier, désactiver, supprimer

Modifier le classement d'un licencié

Il n'existe pas d'API publique fiable de la Fédération Française de Badminton pour récupérer automatiquement un classement (testé : ni api.ffbad.org, ni badiste.fr, ni myffbad.fr n'offrent un accès exploitable). Le classement simple/double/mixte se saisit donc manuellement — par le bureau depuis la fiche du licencié, ou par le licencié lui-même depuis son profil — sur l'échelle officielle FFBaD (NC, P12, P11, P10, D9, D8, D7, R6, R5, R4, N3, N2, N1, du plus faible au plus fort), en la consultant sur myffbad.fr.

Importer des licenciés en masse (CSV)

Depuis la page Licenciés, lien Importer en masse (CSV) :

  1. Télécharger le modèle CSV (bouton dédié) : colonnes prenom, nom, email, bureau, entraineur, séparateur point-virgule.
  2. Compléter une ligne par licencié à créer. Pour les colonnes bureau et entraineur, indiquer oui ou non.
  3. Importer le fichier complété. Un email d'activation est envoyé automatiquement à chaque nouveau licencié créé, comme pour une création individuelle. Les lignes avec un email déjà utilisé ou invalide sont ignorées et listées après l'import (rien n'est perdu, seules ces lignes ne sont pas importées).

Saisons et adhésions (bureau)

Menu Bureau → Licenciés (ou Bureau → Adhésions et paiements, qui pointe vers la même page) → lien Gérer les saisons.

Gérer les gymnases (bureau)

Menu Jouer → Gymnases (liste visible par tous, actions réservées au bureau).

Gérer les équipes (bureau, capitaines)

Menu Club → Équipes, visible par tous les connectés.

Gérer les créneaux (bureau)

Menu Jouer → Créneaux.

Créer un créneau

  1. Cliquer sur + Nouveau créneau.
  2. Renseigner le nom et l'activité (Badminton par défaut ; Footing et Musculation suggérés, mais texte libre pour toute autre activité).
  3. Choisir le gymnase, le jour de la semaine, l'heure de début et de fin.
  4. Optionnel : dates de répétition (début/fin) si le créneau doit être borné dans le temps — des boutons Effacer à côté de chaque champ permettent de vider la date facilement.
  5. Choisir la catégorie (Adultes ou Enfants).
  6. Cocher Loisir et/ou Compétiteur (cumulables), et éventuellement Ouvert aux personnes extérieures au club et/ou Ouvert aux ados — informations affichées partout où le créneau apparaît (liste, détail, calendrier).
  7. Si besoin, un classement minimum requis (échelle FFBaD) pour filtrer les licenciés d'un certain niveau (laisser vide si aucun niveau minimum).
  8. Cocher Créneau encadré si un entraîneur doit être associé, puis le sélectionner dans la liste (seuls les licenciés ayant le rôle Entraîneur apparaissent).
  9. Optionnel : capacité maximale et heure limite d'annulation (voir ci-dessous).
  10. Valider.

Rechercher, activer/désactiver, supprimer

Capacité et liste d'attente

Si une capacité maximale est renseignée sur un créneau :

Exceptions ponctuelles sur une occurrence

Pour annuler ou modifier un créneau récurrent une seule fois, sans toucher aux autres occurrences ni au créneau lui-même :

  1. Depuis le calendrier, sur l'occurrence concernée, cliquer sur « Annuler / modifier cette occurrence » (visible du bureau uniquement).
  2. Choisir Annuler cette séance, ou Modifier exceptionnellement (gymnase, horaire, capacité, entraîneur différents juste pour cette date), et ajouter une note optionnelle visible de tous.
  3. Une séance annulée n'accepte plus de réponse de présence, et est signalée en rouge partout où elle apparaît (calendrier, Mon espace, Ma famille).
  4. Depuis la fiche de l'occurrence, un bouton « Rétablir cette occurrence normalement » annule l'exception et revient au fonctionnement standard du créneau récurrent.

Fermeture par période (vacances scolaires...)

Depuis la liste des créneaux, lien Fermeture par période : indiquer une date de début, une date de fin et un motif optionnel — toutes les occurrences de tous les créneaux actifs sur cette période sont annulées d'un coup (chacune peut être rétablie individuellement ensuite si besoin).

Le calendrier

Menu Jouer → Calendrier : vue du mois en cours par défaut (mois précédent/suivant navigable). Un lien « Vue semaine » en haut de la page bascule vers une grille centrée sur une seule semaine (précédente/suivante navigable) — pratique pour se concentrer sur les prochains jours sans le bruit visuel du reste du mois. Un lien « Vue mois » permet de revenir à la vue mensuelle.

Indiquer sa présence à un créneau (tous les licenciés)

Par défaut, chaque licencié voit uniquement les créneaux qui correspondent à sa catégorie d'âge (déduite de sa date de naissance) et à son niveau (si un classement minimum est requis). Un lien Voir tous les créneaux permet d'afficher l'ensemble des créneaux du club. Les membres du bureau voient toujours tous les créneaux (y compris désactivés).

Sur chaque créneau (liste ou calendrier), deux boutons : Je viens / Je ne viens pas. Le choix est enregistré instantanément, semaine par semaine, et peut être changé à tout moment avant le créneau.

Gérer le stock (bureau)

Menu Bureau → Stock (réservé au bureau).

Inventaire physique

Menu Stock → Inventaire du stock.

  1. Nouvelle campagne : fige la quantité théorique de chaque article (vêtements et volants) au moment de la création.
  2. Pour chaque ligne, saisir la quantité comptée lors de l'inventaire physique, et un motif optionnel en cas d'écart (utile pour comprendre plus tard).
  3. Valider l'inventaire : chaque écart constaté (comptée ≠ théorique) régularise automatiquement le stock — un vrai mouvement d'entrée ou de sortie est créé (motif « Régularisation inventaire »), visible dans l'historique de l'article. Une fois validée, la campagne est figée et ne peut plus être modifiée.
  4. Exporter en CSV à tout moment (théorique, comptée, écart, motif).

Historique des présences (bureau, entraîneurs)

Pour chaque licencié, son taux de présence (nombre de « je viens » ÷ nombre de réponses données, tous créneaux confondus) est visible directement dans la colonne Présence de la liste des licenciés (bureau). Cliquer dessus (ou sur « Classement des présences » en haut de la liste) ouvre la fiche détail : récapitulatif, graphique de présence sur les 6 derniers mois glissants, et historique complet des réponses (date, créneau, présent ou absent).

Les entraîneurs qui ne sont pas du bureau n'ont pas accès à la liste des licenciés : ils retrouvent ce même classement des présences via le menu Présences, qui n'apparaît que pour eux, avec une recherche instantanée par nom de licencié.

Cordage (tous les licenciés, cordeurs)

Menu Club → Cordage.

Stock de cordage (cordeurs, bureau)

Menu Cordage → Stock de cordage, accessible à tout licencié avec le rôle Cordeur (pas besoin du rôle bureau/stock) :

Vie du club / Évènements (tous les licenciés)

Menu Club → Vie du club.

Championnats / Interclubs (tous les licenciés, bureau)

Menu Club → Interclubs.

Communication ciblée (bureau)

Menu Bureau → Communication.

  1. Choisir la cible dans le menu déroulant : tous les licenciés, une équipe, les licenciés d'un créneau, les non-répondants à la prochaine occurrence d'un créneau, les participants confirmés d'un évènement, les adhésions impayées de la saison en cours, les responsables légaux, ou par catégorie d'âge (adultes/enfants).
  2. Le nombre et la liste des destinataires s'affichent immédiatement — seuls les licenciés ayant un compte de connexion actif sont comptés.
  3. Saisir le sujet et le message (ou charger un modèle existant, voir ci-dessous), joindre éventuellement un fichier, puis valider.
  4. L'envoi et ses résultats (succès, échecs éventuels avec le détail des adresses en échec) apparaissent dans l'historique des envois, en bas de la page.

Modèles réutilisables : le menu déroulant « Charger un modèle » (visible dès qu'au moins un modèle existe) préremplit le sujet et le message. Le bouton « Enregistrer comme modèle » sauvegarde le sujet/message actuellement saisi sous un nom donné, pour le réutiliser plus tard. Les modèles peuvent être supprimés depuis « Gérer les modèles ».

Pièce jointe : un fichier optionnel peut être joint (champ « Pièce jointe ») — il est envoyé avec le message à tous les destinataires.

Programmation différée : renseigner une date et une heure futures avant de valider programme l'envoi au lieu de l'envoyer immédiatement. La communication apparaît alors dans l'historique avec le statut « En attente », et peut être annulée tant qu'elle n'a pas été envoyée (bouton « Annuler »). L'envoi effectif est déclenché par une tâche planifiée côté serveur (vérifiée toutes les 5 minutes) — la liste des destinataires est figée au moment de la programmation, elle ne change pas si la composition du groupe cible évolue entre-temps.

Tableau de bord (bureau)

Menu Bureau → Tableau de bord, réservé au bureau.

Centre de tâches

En haut de la page, une liste d'alertes signale ce qui mérite l'attention du bureau — cliquer dessus mène directement à la page concernée :

Aucune alerte ne s'affiche si rien ne nécessite d'action.

Vue d'ensemble du club en un coup d'œil :

Mon espace (tous les licenciés)

Menu Mon espace, votre page personnelle en un coup d'œil :

Mon profil

Chaque licencié peut compléter et modifier lui-même son profil en cliquant sur son nom en bas du menu latéral → Modifier mon profil :

Le menu du compte propose aussi un accès direct à la documentation et à la déconnexion.

Double authentification (MFA)

Depuis Mon profil → Double authentification (MFA), chaque licencié peut activer, à titre optionnel, une double authentification : un second code est alors demandé à chaque connexion, en plus du mot de passe. Deux méthodes sont proposées, activables ensemble ou séparément :

Si plusieurs méthodes sont activées, un lien sur la page de connexion permet de choisir laquelle utiliser.

Journal d'audit (bureau)

Menu Bureau → Journal d'audit.

Trace les actions sensibles effectuées dans l'application : paiement ajouté ou supprimé, consultation ou modification des informations de santé d'un licencié, changement de responsable légal, suppression de compte (simple ou forcée), changement de rôle, correction de stock lors d'un inventaire, annulation de créneau, modification d'adhésion.

Chaque entrée indique la date, l'auteur de l'action, l'objet concerné et, quand c'est pertinent, l'ancienne et la nouvelle valeur — jamais le contenu réel des informations de santé, pour ne pas dupliquer une donnée sensible dans le journal lui-même. Deux filtres sont disponibles : par type d'action et par auteur.

Mes données personnelles (RGPD)

Depuis Mon compte :

Depuis Ma famille, un responsable légal peut aussi télécharger les données de chacun de ses enfants (même export JSON).

La saisie d'une information de santé (allergies) sur la fiche d'un licencié ou d'un mineur exige de cocher la case de consentement explicite — sans cette case, l'enregistrement est refusé. Tout octroi ou retrait de ce consentement est tracé dans le journal d'audit.

Les liens Politique de confidentialité, Mentions légales et Registre des traitements, en pied de page de chaque écran, détaillent les données collectées et vos droits.

Anonymisation (bureau)

À la différence de la suppression, anonymiser un compte (bouton disponible sur un compte désactivé, page Licenciés) efface son identité et ses données personnelles tout en conservant ses données comptables (adhésions, paiements) pour les obligations légales. Un compte désactivé depuis plus de 3 ans est anonymisé automatiquement (tâche planifiée mensuelle) — cette durée correspond à la politique de conservation du club, détaillée dans le registre des traitements.

Notifications automatiques

Axiobad envoie des emails automatiquement, sans action du bureau :

Ces notifications sont désactivées par défaut pour tout nouveau licencié. Pour les activer, cocher « Recevoir les notifications automatiques par email » sur la page Mon compte. Le bureau peut aussi changer ce réglage pour n'importe quel licencié depuis sa fiche (page Licenciés → Modifier). Cela n'affecte pas l'email d'activation de compte (essentiel), ni les communications ciblées envoyées manuellement par le bureau (voir ci-dessus) — seulement ces rappels automatiques.

Le bureau peut consulter qui a reçu quoi et quand via Bureau → Historique des notifications (voir plus bas). Il n'y a pas encore de réglage plus fin côté licencié (choisir quels types de rappels recevoir).

Notifications push sur un appareil

En complément de l'email, chaque licencié peut activer les notifications push navigateur sur un ou plusieurs de ses appareils (téléphone, ordinateur), depuis la page Mon compte → section « Notifications push sur cet appareil » → bouton « Activer les notifications push sur cet appareil ». Le navigateur demande alors l'autorisation d'afficher des notifications ; une fois accordée, cet appareil reçoit désormais les mêmes évènements que ceux envoyés par email (raquette prête, rappels quotidiens...), même quand Axiobad n'est pas ouvert. Le bouton se transforme en « Désactiver » pour couper les notifications sur cet appareil précis — les autres appareils éventuellement abonnés ne sont pas affectés.

Cette activation est par appareil et par navigateur, indépendante de la préférence email ci-dessus : un licencié peut par exemple ne recevoir que du push sur son téléphone et couper les emails, ou l'inverse. Si le serveur n'a pas de clé VAPID configurée, la section l'indique et le push reste simplement indisponible (voir la section Mise en place du README pour l'activer en production).

Historique des notifications (bureau)

Menu Bureau → Historique des notifications : liste chaque notification automatique et chaque communication ciblée envoyée, avec la date, le destinataire, le sujet, un court extrait, et si l'envoi a réussi par email et/ou par notification push. Filtrable par destinataire. Ne stocke pas le corps intégral du message.

Configuration email (production)

Pour que les emails d'invitation partent réellement en production, la variable d'environnement MAILER_DSN doit pointer vers un vrai service d'envoi SMTP dans .env.prod.local sur le serveur, par exemple avec Amazon SES (utilisé en production pour Axiobad, 62 000 emails/mois gratuits depuis une instance EC2) :

MAILER_DSN=smtp://IDENTIFIANT:MOT_DE_PASSE@email-smtp.RÉGION.amazonaws.com:587
MAILER_FROM=noreply@votre-domaine.fr

Un compte SES neuf démarre en mode sandbox (envoi limité aux adresses vérifiées manuellement) : il faut demander la sortie du sandbox (« production access ») dans la console SES pour pouvoir envoyer à n'importe quelle adresse de licencié. Le domaine d'envoi doit aussi être vérifié (DKIM).

En développement local (sans serveur mail configuré), l'email n'est pas réellement envoyé (DSN null://null) — c'est le comportement par défaut si MAILER_DSN n'est pas renseigné.

Puis redémarrer les conteneurs (docker compose -f compose.yaml -f compose.prod.yaml --env-file .env.prod.local up -d).