Contexte
Un cabinet de sages-femmes voulait plus qu'une plaquette : une ressource pour les patientes, entre deux consultations. Contrainte : aucune donnée de santé stockée, une déontologie stricte sur les avis, un site qui tienne sur un téléphone en 4G.
Ce que j'ai construit
- Treize outils côté patiente, sans compte ni serveur : compteur de contractions hors-ligne, mouvements de bébé, calendrier de grossesse avec agenda .ics et rappels, questionnaire bien-être sans stockage, projet de naissance, checklists, fertilité, prise de poids…
- Une assistante IA dont la base de connaissances est générée depuis les données du site — jamais une réponse écrite à la main — avec des garde-fous santé et un renvoi systématique vers la consultation.
- Vrai/Faux à 21 fiches sourcées, « quand consulter » par situation, « sage-femme, pour quoi faire » par âge de la vie, annuaire de sources officielles vérifiées, recherche interne.
- Boîte à idées d'articles et recueil d'avis avec modération avant publication (Workers Cloudflare + KV), parce qu'un avis de patiente ne se publie pas sans relecture.
- PWA installable qui marche hors-ligne, lecture audio des articles, confort de lecture (taille, contraste), données structurées et sitemap.
- Un blog en collections (16 articles) et quatre lettres automatisées par n8n : suivi de grossesse, post-partum, prévention, veille hebdomadaire.
- Six Workers Cloudflare autour du site : assistante, idées, avis, lettres, recherche interne, veille.
Preuves
- En ligne et en usage quotidien : le site public est lié ci-dessous.
- Une centaine de pages générées, 13 outils, 16 articles, 6 Workers, 6 workflows n8n — comptés dans le dépôt le 19/09/2026.
- Tests Playwright sur le site en ligne à chaque lot livré, sur ordinateur et téléphone.
Un incident réel, et comment je l'ai réglé
Le site servait une version de retard à chaque déploiement
- Constat
- Après un déploiement, la liste des consultations restait cassée en ligne, alors que le fichier corrigé était bien servi par l'hébergeur — et le lendemain, tout marchait.
- Cause
- Le service worker de la PWA servait scripts et styles en stale-while-revalidate : il rendait la version en cache et ne téléchargeait la nouvelle qu'en arrière-plan. Chaque visite voyait le déploiement précédent.
- Correctif
- Scripts et styles de même origine passés en network-first, version de cache incrémentée pour purger à l'activation. Et une règle : on vérifie un déploiement en contournant le service worker, jamais à travers lui.
Stack
Astro · Cloudflare Pages · Cloudflare Workers · KV · OpenAI · n8n · PWA