Aller au contenu
Tous les projets

Fullstack — 2026

Church Register

Registre des visiteurs d'une église

Registre des visiteurs de l'Église La Maison de la Destinée, à Abidjan : le visiteur scanne un QR code, s'identifie par son numéro et enregistre sa 1re, 2e ou 3e visite depuis son téléphone. L'équipe d'accueil suit chaque nouvelle personne dans un dashboard sécurisé, jusqu'à son passage au statut de membre.

Aperçu du projet Church Register
Type
Fullstack
Année
2026

01Le problème

L'église enregistrait ses nouveaux venus avec une première application (Express, MongoDB, Create React App) qu'un audit de sécurité avait jugée dangereuse : l'identification publique exposait les données d'un visiteur à quiconque connaissait son numéro, des mots de passe figuraient dans le dépôt, les entrées n'étaient pas validées et aucun consentement n'était recueilli. Un numéro ivoirien saisi avec des espaces bloquait même l'inscription. Or ces fiches touchent aux convictions religieuses, une donnée sensible au regard de la loi ivoirienne sur les données personnelles. L'équipe d'accueil avait en plus besoin de bien plus qu'une liste : savoir qui revient, quelle famille de service est responsable ce mois-ci, et en rendre compte chaque mois.

02La solution

J'ai mené la refonte à partir de zéro, du cahier des charges au déploiement : une API Laravel 13 sur MariaDB qui sert aussi un SPA React 19 + TypeScript depuis la même origine — ni CORS, ni jeton dans le navigateur, une session Sanctum en cookie httpOnly. Le parcours public ne renvoie aucune donnée personnelle : un jeton chiffré, valable 15 minutes et à usage unique, porte l'identification d'un écran à l'autre. Chaque visite est idempotente — un renvoi après une coupure réseau ne crée jamais de doublon — et limitée à une par jour par un index unique ; les limites de débit tiennent compte du Wi-Fi de l'église, où toute l'assemblée partage une seule IP. Le parcours visiteur reste sous 100 Ko gzip, budget vérifié en CI, le dashboard n'étant chargé que sur /admin. Côté équipe : rôles et permissions, 2FA TOTP, verrouillage progressif des comptes, invitations par lien signé, journal d'audit, rotation mensuelle des familles d'accueil, rapports mensuels envoyés par e-mail sans double envoi et avec rattrapage automatique, exports CSV, Excel et PDF en streaming. Un push sur main publie une release atomique sur Hostinger par SSH, lance les migrations, vérifie la production par un test de fumée et revient seul en arrière en cas d'échec.

03Le résultat

En production sur registre.newinechurch.org. Le visiteur scanne le QR code de l'accueil et enregistre sa visite seul, depuis son propre téléphone ; l'équipe retrouve aussitôt sa fiche, y ajoute ses notes et suit sa progression. Depuis la mise en service, l'application s'est étendue aux usages du terrain : lien et affichage tablette dédiés à chaque culte spécial, affiches A5 prêtes à imprimer avec QR code, fiche d'inscription papier par événement, page « Suivez-nous » vers les réseaux de l'église, filtre et exports par congrégation. Plus de 1 100 tests automatiques (Pest et Vitest), l'analyse statique et l'audit des dépendances bloquent chaque push.

Stack technique

  • Laravel 13
  • PHP 8.3
  • React 19
  • TypeScript
  • Vite 8
  • MariaDB 11
  • Sanctum
  • TanStack Query
  • React Hook Form + Zod
  • Tailwind CSS 4
  • DomPDF
  • Brevo
  • Pest
  • Vitest
  • GitHub Actions
  • Hostinger

Projet suivant

New Wine Church