Commit graph

15 commits

Author SHA1 Message Date
a07200f8cf refactor: déplacer les routes /subjects/:slug vers /s/:slug avec redirection permanente 2026-02-11 23:44:47 +01:00
399298156c feat: migrer les pages SSG vers SSR et consolider le contenu dans le script d'import
Toutes les pages (accueil, sujets, personnalités, détails) utilisent maintenant
createServerSupabaseClient() au lieu du client statique SSG. Cela permet aux mises
à jour de contenu d'être visibles immédiatement sans rebuild.

Le seed.sql est réduit au minimum (auth.users de test uniquement), tout le contenu
étant désormais géré par le script d'import idempotent (npm run import:content).

Ajout du script import:content:production pour cibler la base de production.
2026-02-11 23:29:35 +01:00
bef12dbc8e fix: ajouter le mot « pour » manquant dans les dernières prises de position
La phrase « s'est déclaré(e) Favorable » n'était pas claire sans la préposition, conformément à la version Ruby originale.
2026-02-11 23:15:44 +01:00
78fdf7f23e chore: installer et configurer Prettier, formater tout le codebase
Installe prettier, configure .prettierrc (singleQuote, no semi, trailingComma, LF) et .prettierignore. Ajoute les scripts format et format:check. Applique le formatage sur tous les fichiers sources.
2026-02-11 22:10:26 +01:00
5f675d122a refactor: architecture clients Supabase SSG/SSR/browser avec injection dans les repos
Introduit 3 clients Supabase distincts selon le contexte d'exécution :
- ssg.ts : singleton pour les lectures publiques (pages statiques, repos)
- ssr.ts : client par requête avec cookies pour les pages authentifiées
- browser.ts : client navigateur pour les composants client

Les repos deviennent des factories qui reçoivent le client Supabase en paramètre, permettant à l'appelant de choisir le contexte (SSG ou SSR).
2026-02-11 22:06:21 +01:00
3b2f6bfc47 feat: rendre la sidebar "Dernières prises de position" dynamique
Remplace les données en dur par une requête Supabase. Ajoute findLatest(limit) au StatementRepository avec le type LatestStatement. Le composant LastStatements devient un server component async avec Suspense, affiche les avatars et les liens vers les personnalités et sujets.
2026-02-11 18:43:23 +01:00
b3e2d4fcb3 feat: ajouter la page Contact et enrichir le composant Button
Page /contact avec bouton courriel. Le composant Button supporte désormais
les liens (href) en plus des boutons, avec couleur blanche forcée et masquage
des icônes ::after sur les boutons-liens.
2026-02-11 17:49:27 +01:00
dc87e03b02 feat: ajouter la page Mentions légales et améliorer les liens
Page /mentions-legales avec éditeur, hébergement, propriété intellectuelle et
données personnelles. Liens mailto avec icône enveloppe, liens textuels en rouge
souligné, icônes sans soulignement. Lien Mentions légales du footer fonctionnel.
2026-02-11 17:30:06 +01:00
9215785738 feat: ajouter la page Crédits et icône lien externe
Page /credits avec les 5 contributeurs (ordre alphabétique), historique du projet,
crédits photos et licence. Ajout d'une icône ↗ automatique sur tous les liens
externes du site. Lien Crédits du footer rendu fonctionnel.
2026-02-11 17:13:50 +01:00
3e652d70b2 fix: menu hamburger responsive pour le header
Le header passait sur 2-3 lignes sur mobile et tablette. Ajout d'un
burger menu qui masque la nav et les boutons auth sous 1024px.
2026-02-11 15:22:23 +01:00
d0a037b1c5 feat: ajouter modale login (stub) et page inscription newsletter Brevo
- Composants UI design system : TextField, Button, FormError
- Modale générique (backdrop, Escape, createPortal)
- LoginModal qui échoue systématiquement (auth pas encore active)
- Page /inscription avec formulaire Brevo membre-fondateur
- Header : boutons statiques remplacés par AuthSection client component
- Convention dossier par composant (ComponentName/index.tsx + .module.css)
2026-02-11 10:53:05 +01:00
72c3884811 feat: ajouter la page Mode d'emploi et extraire les composants réutilisables 2026-02-11 00:24:43 +01:00
c611015f17 feat: ajouter les pages détail personnalité et sujet
Crée les pages /p/[slug] et /subjects/[slug] qui étaient des liens morts
depuis les pages index. Ajoute le StatementRepository (domain + infra)
pour les requêtes jointes statements/positions/sujets/personnalités.

Composants partagés extraits : FigureAvatar, ErrorDisplay.
La page personnalité affiche les prises de position groupées par sujet
avec label explicite "Sa position :". La page sujet affiche les positions
avec les avatars des personnalités concernées.
2026-02-10 12:32:40 +01:00
5689eedb9e fix(lint): échapper les apostrophes dans le JSX 2026-02-09 00:41:14 +01:00
cf635430f2 feat(subjects): migrate general layout and Subjects page 2025-07-17 15:29:50 +02:00