drwh_tech — Division Technologie¶
Rôle du service¶
drwh_tech est le site complet de la division technologie de DAREWATCH CONSULTING. Il présente les services IT, les formations, les offres d'emploi (carrières), le blog technique, et permet aux prospects de prendre contact.
URL
Local : http://localhost:4201
Production : tech.darewatchgroup.com
Stack technique¶
graph LR
TS[TypeScript] --> NEXT[Next.js 14\nApp Router]
NEXT --> REACT[React 18]
NEXT --> TW[Tailwind CSS]
NEXT --> API[API Backend\nREST/JSON]
style TS fill:#2d79c7,color:#fff
style NEXT fill:#2d2e2e,color:#fff
style REACT fill:#0066FF,color:#fff
style TW fill:#27ae60,color:#fff
style API fill:#8e44ad,color:#fff
| Couche | Technologie | Rôle |
|---|---|---|
| Language | TypeScript | Typage statique, détection d'erreurs |
| Framework | Next.js 14 (App Router) | SSR, routage, optimisation |
| UI | React 18 | Composants interactifs |
| CSS | Tailwind CSS | Design utilitaire |
| Tests unitaires | Jest | Tests de composants |
| Tests e2e | Cypress | Tests de navigation |
Pages du site¶
| Page | URL | Description |
|---|---|---|
| Accueil | / |
Hero, services, réalisations, témoignages, blog |
| À Propos | /about |
Histoire, chiffres clés, timeline depuis 2022 |
| Services | /services |
Liste des services IT proposés |
| Carrières | /carriere |
Offres d'emploi (Développeur, Ingénieur Réseaux…) |
| Carrière (détail) | /carriere/[slug] |
Détail d'une offre d'emploi |
| Blog | /blog |
Articles et actualités tech |
| Article (détail) | /blog/[slug] |
Détail d'un article |
| Contact | /contact |
Formulaire de contact + FAQ |
Sections de la page d'accueil¶
La page d'accueil est composée de sections empilées :
graph TD
NAV[🔝 Navbar\nNavigation principale] --> HERO[🦸 HeroSection\nAccroche principale]
HERO --> ABOUT[ℹ️ AboutSection\nPrésentation courte]
ABOUT --> SERV[⚙️ ServicesSection\nAperçu des services]
SERV --> WORKS[🏆 WorksSection\nRéalisations clients]
WORKS --> TESTI[💬 TestimonialsSection\nTémoignages]
TESTI --> BLOG[📝 BlogSection\nDerniers articles]
BLOG --> FOOTER[📋 Footer]
style NAV fill:#2d2e2e,color:#fff
style HERO fill:#0066FF,color:#fff
style ABOUT fill:#27ae60,color:#fff
style SERV fill:#f39c12,color:#fff
style WORKS fill:#8e44ad,color:#fff
style TESTI fill:#e74c3c,color:#fff
style BLOG fill:#2196F3,color:#fff
style FOOTER fill:#2d2e2e,color:#fff
Architecture des fichiers¶
apps/drwh_tech/
├── src/
│ ├── app/ ← Pages (Next.js App Router)
│ │ ├── layout.tsx ← Layout global (head, fonts, analytics)
│ │ ├── page.tsx ← Page d'accueil
│ │ ├── navbar.tsx ← Barre de navigation
│ │ ├── about/
│ │ │ └── page.tsx ← Page À Propos
│ │ ├── services/
│ │ │ └── page.tsx ← Page Services
│ │ ├── carriere/
│ │ │ ├── page.tsx ← Liste des offres d'emploi
│ │ │ └── [slug]/page.tsx ← Détail d'une offre
│ │ ├── blog/
│ │ │ ├── page.tsx ← Liste des articles
│ │ │ └── [slug]/page.tsx ← Détail d'un article
│ │ └── contact/
│ │ └── page.tsx ← Page contact + FAQ
│ │
│ ├── components/ ← Composants réutilisables
│ │ ├── HeroSection.tsx
│ │ ├── AboutSection.tsx
│ │ ├── ServicesSection.tsx
│ │ ├── WorksSection.tsx
│ │ ├── TestimonialsSection.tsx
│ │ ├── BlogSection.tsx
│ │ ├── Header.tsx
│ │ └── Footer.tsx
│ │
│ ├── lib/ ← Utilitaires et services
│ │ ├── public.service.ts ← Appels API backend
│ │ ├── fallback-content.ts ← Données statiques de secours
│ │ └── types.ts ← Types TypeScript
│ │
│ └── types/ ← Interfaces TypeScript globales
│
├── next.config.js ← Configuration Next.js
├── tailwind.config.js ← Configuration Tailwind CSS
├── tsconfig.json ← Configuration TypeScript
└── project.json ← Configuration NX
Charte graphique¶
| Élément | Valeur | Usage |
|---|---|---|
| Couleur principale | #0066FF |
Boutons, liens, accents |
| Couleur secondaire | #004E89 |
Nuances, hover |
| Fond clair | #F7F7F7 |
Arrière-plans clairs |
| Fond sombre | #2D2E2E |
Footer, éléments sombres |
| Police | Inter (Google Fonts) | Tous les textes |
Stratégie de données : API + Fallback¶
flowchart TD
PAGE[Page Next.js] --> CALL[Appel API\npublic.service.ts]
CALL -->|Succès| DATA[✅ Données dynamiques\ndepuis le backend]
CALL -->|Erreur / Vide| FALLBACK[🔄 Données statiques\nfallback-content.ts]
DATA --> RENDER[Rendu de la page]
FALLBACK --> RENDER
style CALL fill:#0066FF,color:#fff
style DATA fill:#27ae60,color:#fff
style FALLBACK fill:#f39c12,color:#fff
Le service appelle d'abord public.service.ts (API backend). Si l'API répond avec une erreur ou des données vides, il bascule automatiquement sur les données de fallback (fallback-content.ts) pour garantir que le site reste fonctionnel.
Lancer le service en local¶
# Depuis la racine du monorepo
npm run dev:tech
# Le service sera disponible sur http://localhost:4201
Tests¶
# Tests unitaires
npm run test:tech
# Tests end-to-end (Cypress)
npm run e2e:tech
# Vérification TypeScript
npm run type-check
Modifier le contenu¶
| Contenu à modifier | Fichier |
|---|---|
| Menu de navigation | src/app/navbar.tsx |
| Page d'accueil | src/app/page.tsx |
| Section services homepage | src/components/ServicesSection.tsx |
| Page services | src/app/services/page.tsx |
| Données statiques (fallback) | src/lib/fallback-content.ts |
| Couleurs Tailwind | tailwind.config.js |