drwh_group — Site Principal¶
Rôle du service¶
drwh_group est la vitrine principale de DAREWATCH CONSULTING SARL. Quand un visiteur accède au site principal, il arrive ici. Cette page présente l'entreprise et oriente les visiteurs vers les deux autres pôles (Tech et Immo).
URL
Local : http://localhost:8002
Production : darewatchgroup.com
Stack technique¶
graph LR
PHP[PHP 8.2+] --> LAR[Laravel 11]
LAR --> LW[Livewire]
LAR --> BLADE[Blade\nTemplating]
LAR --> BS[Bootstrap 5\nCSS]
style PHP fill:#8e44ad,color:#fff
style LAR fill:#e74c3c,color:#fff
style LW fill:#f39c12,color:#fff
style BLADE fill:#27ae60,color:#fff
style BS fill:#0066FF,color:#fff
| Couche | Technologie | Rôle |
|---|---|---|
| Language | PHP 8.2+ | Langage backend |
| Framework | Laravel 11 | Structure MVC, routing, validation |
| Interactions | Livewire | Composants dynamiques sans rechargement |
| Vues | Blade | Moteur de templates HTML |
| CSS | Bootstrap 5 | Design et mise en page |
Pages disponibles¶
| Page | URL | Description |
|---|---|---|
| Accueil | / |
Landing page avec hero, statistiques et liens vers Tech & Immo |
| Contact | /contact |
Formulaire de contact dynamique (Livewire) |
| Services | /services |
Présentation des domaines d'activité de Darewatch |
| Articles | /articles |
Articles et actualités de l'entreprise |
Architecture du service¶
apps/drwh_group/
├── app/
│ ├── Http/
│ │ ├── Controllers/
│ │ │ └── PageController.php ← Contrôleur principal des pages
│ │ └── Requests/ ← Validation des formulaires
│ └── Livewire/
│ └── ContactForm.php ← Composant formulaire de contact
├── resources/
│ └── views/
│ ├── layouts/
│ │ └── app.blade.php ← Template de base (navbar + footer)
│ ├── pages/
│ │ ├── home.blade.php ← Page d'accueil
│ │ ├── contact.blade.php ← Page contact
│ │ ├── articles.blade.php ← Page articles
│ │ └── services.blade.php ← Page services
│ ├── composants/ ← Composants réutilisables (cards, boutons…)
│ ├── sections/ ← Grandes sections de page (hero, about…)
│ └── livewire/ ← Vues des composants Livewire
├── routes/
│ └── web.php ← Définition des URLs
├── public/
│ ├── css/ ← Styles compilés
│ ├── js/ ← Scripts compilés
│ └── images/ ← Images statiques
├── config/ ← Configuration Laravel
├── database/
│ ├── migrations/ ← Schéma de base de données
│ └── seeders/ ← Données initiales
└── .env ← Variables d'environnement
Comment fonctionne le formulaire de contact ?¶
sequenceDiagram
participant U as Utilisateur
participant LW as Livewire (Front)
participant LC as ContactForm.php
participant API as API Backend
U->>LW: Remplit le formulaire
LW->>LC: Validation en temps réel
LC-->>LW: Erreurs affichées
U->>LW: Soumet le formulaire
LW->>LC: Données envoyées
LC->>API: POST /api/contact
API-->>LC: 200 OK
LC-->>LW: Message envoyé ✓
LW-->>U: Confirmation affichée
// apps/drwh_group/app/Livewire/ContactForm.php
class ContactForm extends Component
{
public string $name = '';
public string $email = '';
public string $message = '';
public bool $sent = false;
protected $rules = [
'name' => 'required|min:2',
'email' => 'required|email',
'message' => 'required|min:10',
];
public function submit()
{
$this->validate();
// Envoi à l'API backend
$this->sent = true;
$this->reset(['name', 'email', 'message']);
}
}
```
=== "Vue Blade (HTML)"
```html
<!-- resources/views/livewire/contact-form.blade.php -->
<form wire:submit.prevent="submit">
<input wire:model="name" placeholder="Votre nom" />
@error('name') <span>{{ $message }}</span> @enderror
<input wire:model="email" type="email" />
@error('email') <span>{{ $message }}</span> @enderror
<textarea wire:model="message"></textarea>
@error('message') <span>{{ $message }}</span> @enderror
<button type="submit">Envoyer</button>
@if($sent)
<p>Message envoyé avec succès !</p>
@endif
</form>
```
---
## Structure des routes
```php
// apps/drwh_group/routes/web.php
Route::get('/', [PageController::class, 'home'])->name('home');
Route::get('/contact', [PageController::class, 'contact'])->name('contact');
Route::get('/services', [PageController::class, 'services'])->name('services');
Route::get('/articles', [PageController::class, 'articles'])->name('articles');
Lancer le service en local¶
# Depuis la racine du monorepo
cd apps/drwh_group
php artisan serve --port=8002
# Ou via npm (depuis la racine)
npm run dev:group
Le service sera accessible à http://localhost:8002
Modifier le design¶
Pour modifier le menu de navigation :
Pour modifier le contenu d'une page :
Pour modifier les styles :