Site de l’AS Saint-Rogatien
Le site public du club, qui remplace un WordPress : des pages générées à l’avance avec Nuxt, un contenu en JSON, et pas de base de données.
En productionCode source privé
- Nuxt 4
- Vue 3
- TypeScript
- Tailwind 4
- Docker
- nginx
- Coolify
Contexte
Le site du club sert de vitrine à ceux qui découvrent la St Ro, et d’information pour les licenciés. Il remplace le WordPress que le club utilisait de 2020 à 2026, et il est en ligne sur le domaine officiel depuis octobre 2026.
Ce que j’ai fait
- Un site Nuxt 4 pré-généré : les pages sont fabriquées une fois pour toutes au moment du build, puis servies telles quelles par nginx.
- Pas de base de données ni d’espace d’administration : tout le contenu (équipes, plannings, articles) tient dans quelques fichiers JSON versionnés avec le code.
- La reprise des articles de l’ancien WordPress.
- Un petit service qui transmet par e-mail les formulaires du site, protégé contre les robots sans captcha.
- Un déploiement automatique : trois images Docker, construites par Coolify à chaque push sur
main.
Deux décisions
- Publier sans reconstruire le site. Le contenu est lu au build, puis relu à l’exécution depuis une image nginx dédiée : mettre à jour un horaire ne demande pas de tout reconstruire, et la copie du build sert de repli.
- Un seul script écrit le contenu, et il vérifie avant d’écrire : l’équipe existe, l’heure de rendez-vous précède le match, l’article a une longueur minimale. Une erreur d’horaire peut envoyer une équipe au mauvais gymnase, donc le script la refuse.
Garde-fous
Le typage TypeScript et les vérifications faites à la publication.
// Pour mes projets de 2026, je travaille avec des agents IA (Claude Code) : je cadre le besoin, j’écris la spécification, puis je relis et je valide le code.