Table des matières
Sprint 15 — Multi-sites, Marque Blanche & Réseau d'Agences
Objectif du Sprint
Transformer la plateforme en solution SaaS multi-marques capable de gérer :
- Plusieurs agences
- Plusieurs enseignes
- Plusieurs sites web
- Plusieurs domaines
- Plusieurs catalogues
- Plusieurs chartes graphiques
depuis une infrastructure unique.
À l'issue du Sprint 15 :
- Une agence peut exploiter plusieurs sites web
- Chaque site dispose de son identité graphique
- Les domaines personnalisés sont supportés
- Les réseaux d'agences sont gérés nativement
- Les biens peuvent être mutualisés
- Les réservations inter-agences sont possibles
Ce sprint marque le passage d'un SaaS mono-agence à une plateforme multi-enseignes.
Vision Architecture
Architecture cible
Plateforme SaaS ├── Réseau A │ ├── Agence A1 │ ├── Agence A2 │ └── Agence A3 │ ├── Réseau B │ ├── Agence B1 │ └── Agence B2 │ └── Réseau C
Exploitation
Chaque agence peut disposer :
Site Web Logo Couleurs Domaine Catalogue Pages CMS Emails
Périmètre
Modules concernés
MultiSiteModule WhiteLabelModule BrandingModule AgencyNetworkModule DomainManagementModule CatalogSharingModule
User Stories
US-1501 : Créer un site
En tant qu'administrateur réseau
Je souhaite créer un site
Afin de publier une nouvelle marque.
Endpoint
POST /sites
Informations
Nom Code Langue Agence Domaine principal
US-1502 : Configurer un domaine
Endpoint
POST /sites/{id}/domains
Exemple
www.agence-a.fr locations.agence-a.fr booking.agence-a.fr
Vérifications
DNS SSL Redirections
US-1503 : Gérer plusieurs domaines
Cas d'usage
1 Site ↓ N Domaines
Marque Blanche
US-1504 : Personnaliser l'identité visuelle
Paramètres
Logo Couleurs Typographie Favicon Images
Endpoint
PUT /sites/{id}/branding
US-1505 : Personnaliser les emails
Éléments
Expéditeur Logo Couleurs Signature
Thèmes
US-1506 : Gérer les thèmes
Endpoint
GET /themes POST /themes
Composants configurables
Header Footer Cartes biens Pages recherche Pages détail
Structure
Theme ↓ Tokens ↓ Composants ↓ Pages
Réseau d'agences
US-1507 : Créer un réseau
Endpoint
POST /agency-networks
Informations
Nom Code Description
US-1508 : Associer une agence
Endpoint
POST /agency-networks/{id}/agencies
Mutualisation
US-1509 : Mutualiser les biens
Objectif
Partager des biens entre agences.
Exemple
Agence Montpellier ↓ Bien visible ↓ Agence Nîmes ↓ Bien visible
Endpoint
POST /properties/{id}/sharing
US-1510 : Définir les règles de partage
Règles
Visible Réservable Commissionnable
Réservations inter-agences
US-1511 : Réserver un bien partagé
Workflow
Agence A ↓ Réservation ↓ Bien Agence B ↓ Commission
US-1512 : Calcul des commissions
Données
Agence source Agence propriétaire Montant Pourcentage
Calcul
:contentReference[oaicite:0]{index=0}
Catalogue multi-sites
US-1513 : Affecter un bien à plusieurs sites
Endpoint
POST /properties/{id}/sites
Exemple
Bien ↓ Site A Site B Site C
US-1514 : Gérer la visibilité
Modes
PUBLIC PRIVATE NETWORK AGENCY_ONLY
CMS léger
US-1515 : Gérer les pages
Endpoint
GET /sites/{id}/pages
POST /sites/{id}/pages
Pages
Accueil À propos Services Contact Mentions légales
US-1516 : Gérer les menus
Configuration
Navigation Footer Liens externes
Modèle Prisma
Site
model Site {
id String @id @default(uuid())
tenantId String
code String @unique
name String
active Boolean
createdAt DateTime @default(now())
}
SiteDomain
model SiteDomain {
id String @id @default(uuid())
siteId String
domain String
isPrimary Boolean
}
Branding
model Branding {
id String @id @default(uuid())
siteId String
logoUrl String?
primaryColor String?
secondaryColor String?
}
AgencyNetwork
model AgencyNetwork {
id String @id @default(uuid())
code String @unique
name String
}
PropertySharing
model PropertySharing {
id String @id @default(uuid())
propertyId String
agencyId String
visibility String
}
Architecture Backend
src/modules/network ├── sites │ ├── branding │ ├── domains │ ├── networks │ ├── sharing │ └── cms
Domain Services
SiteService BrandingService DomainService AgencyNetworkService PropertySharingService CmsService
Événements métier
SiteCreated
SiteCreated
DomainValidated
DomainValidated
PropertyShared
PropertyShared
Frontend
Back Office
Pages :
/admin/sites /admin/sites/[id] /admin/branding /admin/networks /admin/sharing /admin/cms
Front Office
Génération dynamique :
www.agence-a.fr www.agence-b.fr www.agence-c.fr
Composants
ThemeEditor BrandingManager DomainManager NetworkExplorer SharingRulesEditor CmsPageEditor
Swagger
Tags
Sites Branding Domains Networks Sharing CMS
Volume API
Environ :
50 endpoints
Tests
Unitaires
SiteService BrandingService DomainService AgencyNetworkService
Intégration
Création site ↓ Branding ↓ Domaine ↓ Publication
E2E
Création réseau ↓ Création agence ↓ Création site ↓ Publication bien ↓ Réservation inter-agence
Définition de terminé
Le Sprint 15 est terminé lorsque :
- Multi-sites opérationnel
- Marque blanche opérationnelle
- Domaines personnalisés opérationnels
- Réseaux d'agences opérationnels
- Mutualisation opérationnelle
- Réservations inter-agences opérationnelles
- CMS opérationnel
- Swagger à jour
- Tests verts
- CI verte
Livrables
- MultiSiteModule
- WhiteLabelModule
- BrandingModule
- AgencyNetworkModule
- DomainManagementModule
- CatalogSharingModule
- CMSModule
- DTO
- Swagger
- Tests
- Migrations Prisma
Bilan Release 3.1
À l'issue du Sprint 15 :
- SaaS multi-tenant avancé
- Réseaux d'agences
- Multi-sites
- Marque blanche
- Mutualisation des catalogues
- Réservations inter-agences
La plateforme devient commercialisable auprès de groupes immobiliers, franchises, réseaux de conciergeries et opérateurs multi-marques.
Sprint suivant
Sprint 16 — Mobile, PWA & Expérience Terrain
Objectif :
Permettre aux utilisateurs, propriétaires et équipes terrain d'utiliser la plateforme depuis mobile avec ou sans connexion.
Modules concernés :
MobileModule PWAModule OfflineModule CheckInModule CheckOutModule FieldOperationsModule
Fonctionnalités :
- Progressive Web App
- Mode hors ligne
- Check-in mobile
- Check-out mobile
- États des lieux numériques
- Signature sur mobile
- Photos terrain
- Synchronisation différée
À l'issue du Sprint 16, la plateforme sera pleinement exploitable sur le terrain.