Association de bienfaisance algérienne fondée en 2002, au cœur de l'oasis
d'El Goléa. Elle fait vivre une bibliothèque, un centre de bienfaisance,
un éco-parc et des maisons d'hôtes. J'ai livré un site public complet, un
back-office que l'équipe utilise seule, et une migration de base de
données faite sans couper le service.
L'équipe devait passer par un intervenant extérieur pour publier la
moindre actualité.
L'association a plus de vingt ans d'activité, quatre structures à gérer,
des donateurs, des parrains et des visiteurs à héberger. Personne en
interne ne pouvait modifier le site. Une photo à changer, une date à
corriger, une annonce à publier : chaque demande partait à
l'extérieur et attendait son tour.
Le public de l'association est réparti entre l'Algérie, la France et la
diaspora, et ne lit pas la même langue d'un pays à l'autre. Un site
publié dans une seule langue laissait donc de côté une partie des
donateurs, quelle que soit la langue retenue.
02
Ce que j'ai construit
Le site public
Le site présente l'association et ses quatre structures. Il contient les
actualités avec une page par article, une page de dons, un parcours de
parrainage, une réservation de séjour, un formulaire de contact et les
pages légales qu'impose la collecte de données personnelles. Tout est
rendu côté serveur, donc chaque page est indexable par les moteurs de
recherche et s'affiche correctement quand on la partage.
Le back-office
L'équipe dispose d'un espace protégé pour suivre les dons, les demandes
de parrainage et les réservations, et pour administrer le contenu du
site. L'administration des données est générique : une même
mécanique de liste, de création, d'édition et de suppression sert toutes
les entités, au lieu de réécrire le même écran pour chaque type de
donnée.
Le multilingue
La traduction est gérée côté serveur, avec un dictionnaire centralisé et
des métadonnées propres à chaque langue. Chaque langue a ses propres
adresses et ses propres pages, ce qui lui donne son propre référencement.
La migration
L'ancien système reposait sur Firebase. J'ai tout transféré vers
PostgreSQL : export complet de l'existant, transformation vers le
nouveau schéma, sauvegardes horodatées avant et après l'opération,
comptage des enregistrements de chaque côté. Le site est resté en ligne
pendant toute la bascule et aucune donnée n'a été perdue.
03
Ce qui était difficile
Migrer une base en service
Une migration se conduit comme une procédure, avec des étapes qu'on peut
vérifier une par une. Le passage d'un modèle de documents à un modèle
relationnel oblige à trancher des questions restées floues pendant des
années. Qu'est-ce qu'un parrainage, exactement ? Que fait-on d'un
donateur enregistré sans adresse ?
Ma règle de travail est toujours la même : sauvegarder avant,
sauvegarder après, compter les enregistrements des deux côtés, et garder
à chaque étape la possibilité de revenir à l'état précédent. C'est cette
dernière condition qui permet de lancer la bascule sur la base réelle
plutôt que sur une copie.
Traiter le multilingue dès la conception
Quand la traduction est ajoutée après coup, le contenu visible passe mais
les métadonnées restent dans la langue d'origine, et les moteurs de
recherche ne voient qu'une seule version du site. Décider dès le départ
que chaque langue a ses propres adresses demande un peu plus de travail
au démarrage et évite de tout reprendre ensuite.
Concevoir pour des bénévoles
Le back-office est utilisé par des bénévoles, pas par des utilisateurs
formés à l'outil. Les saisies sont validées strictement et les messages
d'erreur sont écrits en français courant. Une fausse manipulation ne peut
pas casser une page publique. Les libellés reprennent le vocabulaire de
l'association, et l'équipe peut publier ses actualités sans
passer par moi.
Ce que j'en retiens
Une association au budget serré ne peut pas payer un prestataire chaque
fois qu'il faut changer une photo. J'ai donc traité l'autonomie de
l'équipe comme une exigence du projet au même titre que les
fonctionnalités : le back-office et son vocabulaire ont été conçus
pour être utilisés sans moi.
04
La stack
SiteNext.js, routage par répertoires, rendu côté serveur, animations légères
DonnéesSupabase et PostgreSQL, avec des accès serveur et client séparés
MigrationExport Firestore, transformation vers le schéma relationnel, sauvegardes horodatées, comptage des enregistrements
AdministrationEspace protégé, suivi des dons, des parrainages et des réservations, administration générique du contenu
MultilingueTraduction côté serveur, dictionnaire centralisé, métadonnées par langue
FormulairesValidation par schéma, messages d'erreur écrits pour des bénévoles
ConformitéMentions légales, politique de confidentialité, collecte de données réduite au nécessaire
Un site à refaire, une base à migrer ?
Site vieillissant, prestataire parti, données bloquées dans un ancien
système. Décrivez-moi la situation et je vous dirai ce que la reprise
demande, en travail comme en délai.