# Structure actuelle du site — HR CONSULTING & CO

> Document de référence pour la reprise/migration vers **Laravel**.
> Site actuel : **Next.js 12 (Pages Router) + Chakra UI**, en **français**.
> Backend de contenu actuel : **WordPress headless via GraphQL** (`api.hrconsultingco.ci/graphql`) + données statiques (`old/src/data/*.js`).

---

## 1. Menu principal (Navbar)

Source : [old/src/components/Navbar/links.js](old/src/components/Navbar/links.js)

| # | Libellé          | Lien (route)   | Page                                  |
|---|------------------|----------------|---------------------------------------|
| 1 | Accueil          | `/`            | Page d'accueil                        |
| 2 | A propos         | `/about`       | À propos                              |
| 3 | Services         | `/services`    | Liste des services                    |
| 4 | Formations       | `/formations`  | Liste des formations                  |
| 5 | Nos Formateurs   | `/instructors` | Liste des formateurs                  |
| 6 | Actualités       | `/news`        | Actualités / blog                     |
| 7 | Contact          | `/contact`     | Formulaire de contact                 |

**Bouton d'action (CTA)** présent dans la navbar (desktop + mobile) :

| Libellé        | Lien            | Page                  |
|----------------|-----------------|-----------------------|
| Déposer un CV  | `/send-resume`  | Formulaire de dépôt CV |

> ⚠️ Le menu n'a **pas de sous-menus déroulants** : la navigation est plate (un seul niveau). Le menu mobile (hamburger) reprend exactement les mêmes liens + le bouton « Déposer un CV ».

---

## 2. Menu pied de page (Footer)

Source : [old/src/components/Footer/index.jsx](old/src/components/Footer/index.jsx)

Le footer est organisé en 4 colonnes :

### Colonne 1 — Présentation
Texte de présentation du cabinet (recrutement, formation, conseil, gestion RH).

### Colonne 2 — « Liens Pratiques »
| Libellé    | Lien          |
|------------|---------------|
| A propos   | `/about`      |
| Services   | `/services`   |
| Formations | `/formations` |
| Actualités | `/news`       |

### Colonne 3 — « Informations » (coordonnées)
- Adresse : ABIDJAN - Marcory, 1er étage à droite, lot 36 Avenue TSF, en face de la SIB Ste Thérèse
- Tel : (+255) 20 00 09 47
- Tel : (+255) 21 26 94 06
- Tel : (+255) 02 91 62 90
- E-mail : secretariat@hrconsultingco.ci

### Colonne 4 — « Newsletter »
- Champ e-mail + bouton « S'abonner » → POST `/api/subscribe` (API newsletter WordPress externe).

### Bas de page
- Mention : « © 2022 Hr Consulting & Co. All rights reserved »
- Réseaux sociaux (liens actuellement vides `#`) : Twitter, YouTube, Instagram.

---

## 3. Arborescence des pages (routes)

```
/                         → Accueil
├── /about                → A propos
├── /services             → Services (liste)
├── /formations           → Formations (liste, depuis GraphQL)
│   └── /formations/[id]  → Détail d'une formation (page dynamique + formulaire de commande)
├── /instructors          → Nos Formateurs (liste)
├── /news                 → Actualités (liste, depuis GraphQL)
├── /contact              → Contact (formulaire)
├── /send-resume          → Déposer un CV (formulaire + pièce jointe)
├── /custom-formation     → Demande de formation sur-mesure (formulaire)
└── /404                  → Page non trouvée
```

> Pages **non liées dans le menu** mais accessibles : `/formations/[id]`, `/send-resume` (via CTA), `/custom-formation` (via carte « Formation sur mesure » dans `/formations`).
> Liens présents dans les données mais **sans page existante** : `/conseils` (référencé dans `old/src/data/services.js`), plusieurs `href: '#'` dans `old/src/data/home-services.js` (placeholders).

---

## 4. Détail du contenu par page

### `/` — Accueil
Source : [old/src/pages/index.js](old/src/pages/index.js). Composée de sections empilées :
1. **HeroSection** — bannière d'accroche
2. **WelcomeSection** — cibles : « GE, PME, PMI et TPE », « Institution Publiques », « À la recherche d'emploi ? » (`old/src/data/welcome-services.js`)
3. **WhyChooseUsSection** — pourquoi nous choisir
4. **ServicesSection** — aperçu des services (`old/src/data/home-services.js` : Formation, Recrutement, Conseil, Travail Temporaire, Coaching Individuel & Collectif, Formation Sur-Mesure)
5. **TestimonialsSection** — témoignages (GraphQL)
6. **NewsSection** — dernières actualités (GraphQL)
7. **StatisticsSection** — chiffres clés (`old/src/data/statistics.js`)
8. **ResumeSection** — incitation au dépôt de CV

Données chargées en SSR : `testimonials`, `news`.

### `/about` — A propos
Titre « HR CONSULTING & CO », texte de présentation, image, bouton vers `/contact`.

### `/services` — Services
Liste de cartes (alternance gauche/droite) depuis `old/src/data/services.js` :
- **Formations** → `/formations`
- **Recrutement** → `/send-resume`
- **Conseils** → `/conseils` *(page inexistante)*

### `/formations` — Formations
Liste des formations chargée via **GraphQL** (SSR). Carte supplémentaire fixe « Formation sur mesure » → `/custom-formation`.

### `/formations/[id]` — Détail formation
Page dynamique (GraphQL, `mapResultSsr`) : titre, description, image + composant **OrderFormation** (formulaire de commande de formation).

### `/instructors` — Nos Formateurs
Liste de cartes formateurs (SSR).

### `/news` — Actualités
Grille de cartes d'articles chargée via **GraphQL** (catégorie `news`, 6 articles).

### `/contact` — Contact
Composant **ContactForm** → POST `/api/contact`.

### `/send-resume` — Déposer un CV
Composant **ResumeForm** → POST `/api/send-resume` (avec pièce jointe, limite 8 Mo).

### `/custom-formation` — Formation sur-mesure
Composant **CustomFormation** → POST `/api/custom-formation`.

---

## 5. Endpoints API (à reconstruire côté Laravel)

Source : [old/src/pages/api/](old/src/pages/api/)

| Route API                  | Méthode | Rôle                                                        | Backend visé                    |
|----------------------------|---------|-------------------------------------------------------------|---------------------------------|
| `/api/contact`             | POST    | Formulaire de contact → e-mail                              | SMTP (Nodemailer)               |
| `/api/send-resume`         | POST    | Dépôt de CV → e-mail + pièce jointe                         | SMTP                            |
| `/api/order-formation`     | POST    | Commande d'une formation → e-mail                           | SMTP                            |
| `/api/custom-formation`    | POST    | Demande de formation sur-mesure → e-mail                    | SMTP                            |
| `/api/subscribe`           | POST    | Inscription newsletter                                      | API REST WordPress externe      |
| `/api/send-email`          | POST    | Envoi e-mail générique                                      | SMTP                            |

> Toutes les routes e-mail valident les champs requis puis génèrent un HTML depuis un template (`old/src/pages/api/views/*.template.js`).

---

## 6. Sources de données à migrer

| Type de contenu          | Source actuelle                              | Migration Laravel suggérée          |
|--------------------------|----------------------------------------------|-------------------------------------|
| Actualités / articles    | WordPress GraphQL (catégorie `news`)         | Table `posts` / `news` (Eloquent)   |
| Formations               | WordPress GraphQL                            | Table `formations`                  |
| Témoignages              | WordPress GraphQL                            | Table `testimonials`                |
| Formateurs               | SSR (`instructors`)                          | Table `instructors`                 |
| Services                 | Statique `old/src/data/services.js`              | Table `services` ou seed/config     |
| Services accueil         | Statique `old/src/data/home-services.js`         | Seed / config                       |
| Sections d'accueil       | Statique `old/src/data/welcome-services.js`, `statistics.js` | Seed / config           |

---

## 7. Correspondance routes → Laravel (proposition)

```
Route::get('/',                    [HomeController::class, 'index']);
Route::get('/about',               [PageController::class, 'about']);
Route::get('/services',            [ServiceController::class, 'index']);
Route::get('/formations',          [FormationController::class, 'index']);
Route::get('/formations/{id}',     [FormationController::class, 'show']);
Route::get('/instructors',         [InstructorController::class, 'index']);
Route::get('/news',                [NewsController::class, 'index']);
Route::get('/contact',             [ContactController::class, 'create']);
Route::post('/contact',            [ContactController::class, 'store']);
Route::get('/send-resume',         [ResumeController::class, 'create']);
Route::post('/send-resume',        [ResumeController::class, 'store']);
Route::get('/custom-formation',    [FormationController::class, 'customCreate']);
Route::post('/custom-formation',   [FormationController::class, 'customStore']);
Route::post('/order-formation',    [FormationController::class, 'order']);
Route::post('/subscribe',          [NewsletterController::class, 'store']);
```

---

## 8. Analyse du contenu `old/src/data/` (réel vs. à compléter)

| Fichier | Contenu | État | Décision migration |
|---|---|---|---|
| `statistics.js` | **1795** professionnels formés (5 ans), **85** entreprises bénéficiaires, **60** formateurs experts | ✅ Réel, exploitable | Reprendre tel quel (table `settings` ou `statistics`) |
| `welcome-services.js` | 3 cibles : **GE/PME/PMI/TPE**, **Institutions Publiques**, **Demandeurs d'emploi** | ✅ Réel, bons textes | Reprendre tel quel |
| `services.js` | 3 services : Formations, Recrutement, **Conseils** (vers `/conseils` inexistant) | ⚠️ Réel mais incomplet | Réconcilier avec home-services |
| `home-services.js` | 6 pôles : Formation, Recrutement, Conseil, **Travail Temporaire**, **Coaching Ind. & Collectif**, **Formation Sur-Mesure** | ✅ Réel | Source de référence des services |
| `formations.js` | 8 entrées, **2 titres dupliqués**, sans description ni image | ❌ Placeholder | À saisir en backoffice |
| `instructors.js` | 6× « GUIE BI ZÊH GHISLAIN », sans photo/bio/rôle | ❌ Placeholder | À saisir en backoffice |
| `testimonials.js` | 2 entrées, descriptions **lorem ipsum** (Konan Gertude / Ben Gerard) | ❌ Placeholder | À saisir en backoffice |
| `news.js` | 6 entrées, **même titre** « SOMMET AFRICAIN DES PROFESSIONNELS DU RH », lorem ipsum | ❌ Placeholder | À saisir en backoffice (WYSIWYG) |

### Réconciliation des services
Les **6 pôles** de `home-services.js` font foi (positionnement du cabinet : *formation · conseil · recrutement · gestion RH*). Liste retenue :
1. **Formation** (+ Formation Sur-Mesure)
2. **Recrutement**
3. **Conseil**
4. **Gestion RH** *(positionnement du cabinet — à formaliser)*
5. **Travail Temporaire**
6. **Coaching Individuel & Collectif**

> Le lien cassé `/conseils` est remplacé par une vraie page service `/services/{slug}`.

---

## 9. Menus & sous-menus ajustés (proposition)

Le menu actuel est plat. Vu la richesse des pôles, on introduit **un sous-menu déroulant sur « Services »** (et l'entrée Actualités devient une vraie rubrique News gérée en backoffice).

```
Accueil              → /
A propos             → /about
Services  ▾          → /services
  ├ Formation                  → /services/formation
  ├ Recrutement                → /services/recrutement
  ├ Conseil                    → /services/conseil
  ├ Gestion RH                 → /services/gestion-rh
  ├ Travail Temporaire         → /services/travail-temporaire
  └ Coaching Ind. & Collectif  → /services/coaching
Formations           → /formations   (catalogue, détail /formations/{slug})
Nos Formateurs       → /instructors
Actualités           → /news         (article /news/{slug})
Contact              → /contact
[CTA] Déposer un CV  → /send-resume
```

> Variante simple (si pas de méga-menu souhaité) : garder « Services » sans sous-menu et lister les pôles dans la page `/services`. Les sous-menus sont gérables dynamiquement en backoffice (table `services` triée par `sort_order`).
