feat: préparation Payload CMS — couche d'abstraction contenu

Sépare données et affichage pour basculer vers Payload CMS sans réécrire les composants.

Nouveaux fichiers :
- lib/site-config.ts : source unique de vérité pour toutes les données du site (as const)
- lib/content.ts : couche async entre données et composants (static aujourd'hui, Payload demain)
- types/content.ts : types TypeScript partagés (Service, Realisation, Partner, BlogPost, etc.)
- payload/ : schémas CollectionConfig et GlobalConfig commentés prêts à activer

Données enrichies dans siteConfig :
- partners : ajout du champ desc pour chaque partenaire
- realisations : 6 entrées complètes avec categorie et color
- blogPosts : 6 articles avec slug, titre, extrait, cat, date, readTime

Refactorisations (composants → content layer) :
- Navbar, Footer : importent siteConfig directement (client component)
- app/page.tsx : async, Promise.all sur getServices/getTestimonials/getFAQ/getValues/getPartners/getRealisations
- app/services/page.tsx : getServices() + getSiteConfig()
- app/contact/page.tsx : getSiteConfig() pour phone, email, address, zones
- app/realisations/page.tsx : getRealisations() + getSiteConfig()
- app/partenaires/page.tsx : getPartners()
- app/blog/page.tsx : getBlogPosts()
- app/blog/[slug]/page.tsx : getBlogPost() + getBlogPosts() pour generateStaticParams
- LocalSEOPage.tsx : siteConfig pour services list, phone, address
- 5 pages service (construction-maison, renovation, assainissement, creation-acces, demolition) : getSiteConfig() pour phone
- Pages légales et SEO locales : siteConfig importé pour données dynamiques

Corrections URL :
- Toutes les URLs canoniques obc-maconnerie.fr → obc-terrassement.fr (30+ fichiers)
- layout.tsx : BASE_URL depuis siteConfig.url
- robots.ts, sitemap.ts : BASE_URL depuis siteConfig.url
- api/contact/route.ts : email fallback → obc-terrassement.fr

https://claude.ai/code/session_01Uec4iHjcPwB1pU41idWEdF
This commit is contained in:
Claude
2026-02-27 13:05:19 +00:00
parent 3adcec00b7
commit 15c60a274c
40 changed files with 1534 additions and 860 deletions

54
payload/README.md Normal file
View File

@@ -0,0 +1,54 @@
# Payload CMS — Préparation
Ce dossier contient les schémas Payload CMS commentés, prêts à être activés
quand le projet bascule de contenu statique vers un CMS administrable.
## Architecture cible
```
payload/
├── collections/
│ ├── Articles.ts → Articles de blog
│ ├── Realisations.ts → Galerie chantiers
│ ├── Services.ts → Services proposés
│ ├── Testimonials.ts → Avis clients
│ └── FAQ.ts → Questions fréquentes
└── globals/
└── SiteSettings.ts → Paramètres globaux du site
```
## Migration (3 étapes)
### Étape 1 — Installer Payload CMS
```bash
npm install payload @payloadcms/db-postgres @payloadcms/richtext-lexical
```
### Étape 2 — Activer les collections
Décommenter le code dans chaque fichier `collections/*.ts` et `globals/*.ts`,
puis créer `payload.config.ts` à la racine :
```ts
import { buildConfig } from 'payload'
import { Services } from './payload/collections/Services'
import { Realisations } from './payload/collections/Realisations'
import { Articles } from './payload/collections/Articles'
import { Testimonials } from './payload/collections/Testimonials'
import { FAQ } from './payload/collections/FAQ'
import { SiteSettings } from './payload/globals/SiteSettings'
export default buildConfig({
collections: [Services, Realisations, Articles, Testimonials, FAQ],
globals: [SiteSettings],
// ...db, admin, etc.
})
```
### Étape 3 — Mettre à jour lib/content.ts
Remplacer les `return siteConfig.xxx` par les appels Payload commentés.
**Les composants n'ont pas à changer.**
## Données actuelles
Toutes les données sont dans `lib/site-config.ts`.
Les composants les consomment via `lib/content.ts`.