# La Vitrine des PME Innovantes — v2

« Votre outil de décision stratégique » : visibilité, connexions et opportunités pour les PME de l'UEMOA, d'Afrique et de la diaspora.

Cette version reprend les rubriques et fonctionnalités du document de synthèse de La Vitrine des PME Innovantes et la structure de la page d'accueil de vitrinepmeinnovante.com. Elle est construite pour la vitesse, dans le même langage que l'ancien site (PHP / Laravel) : l'hébergement OVH actuel convient, et les tables gardent les noms de l'ancienne base.

## Pile technique

| Élément | Choix |
|---|---|
| Serveur | Laravel 12 (PHP 8.2+) |
| Interactivité | Livewire 3 (+ Alpine.js inclus), navigation sans rechargement (`wire:navigate`) |
| Styles | Tailwind CSS 4 + Vite, polices auto-hébergées |
| Cartes | Leaflet + OpenStreetMap, chargés à la demande (cartographie, fiches entreprises, formulaire) |
| Base locale | SQLite (MySQL en production) |

## Démarrer

```bash
composer install
npm install
cp .env.example .env && php artisan key:generate
php artisan migrate --seed
npm run build
php artisan serve --port=8200
```

Tests : `php artisan test` (base SQLite en mémoire).

## Comptes de démonstration (local uniquement)

Mot de passe commun : `Vitrine2026!` (défini dans `DatabaseSeeder::DEMO_PASSWORD`, à ne jamais utiliser en production).

| Profil | E-mail | Accès |
|---|---|---|
| Administrateur | `admin@vitrine.local` | Tout, dont la gestion des utilisateurs (profils, statut Pro) |
| Éditeur | `editeur@vitrine.local` | Rédige et soumet articles, opportunités, vidéos, portraits ; référentiel ; cartographie |
| Modérateur | `moderateur@vitrine.local` | Valide les fiches et les contenus, référentiel, cartographie |
| Entreprise | `entreprise@vitrine.local` | Sa fiche (Faso Agro Transform) avec position GPS, mises en relation |
| Investisseur | `investisseur@vitrine.local` | Vision investisseur |
| Membre | `membre@vitrine.local` | Nouveautés et notifications |
| Membre Pro | `pro@vitrine.local` | Comme un membre, plus la cartographie |

Règles d'accès :

- **Cartographie** (`/cartographie`, menu, accueil, pied de page) : administrateurs, éditeurs, modérateurs et comptes Pro uniquement (porte `view-map`).
- **Contenus** (`/espace/contenus` : articles et médias, opportunités, vidéos BPME TV, portraits) : les **éditeurs** rédigent, enregistrent en brouillon et **soumettent** ; ils ne publient jamais. Les **administrateurs et modérateurs** valident, refusent avec une note transmise à l'auteur, publient directement leurs propres contenus ou retirent un contenu du site. Un éditeur qui modifie un contenu en ligne le renvoie en validation. Chaque décision est notifiée et inscrite au journal de l'équipe.
- **Référentiel** (`/espace/referentiel` : secteurs, pays, villes) : ajout par toute l'équipe, suppression par administrateurs et modérateurs, jamais d'un élément encore utilisé par une fiche.
- **Abonnements** : l'entreprise choisit son bloc dans « Mon abonnement » ; un administrateur confirme le paiement Wave dans « Abonnements ».
- **Modération** : administrateurs et modérateurs. **Utilisateurs** : administrateurs.
- Éditeurs et modérateurs ne s'inscrivent pas eux-mêmes : un administrateur change le profil d'un compte dans `/espace/utilisateurs`, où il accorde aussi le statut Pro.

## Où se trouve quoi

| URL | Rubrique (document de synthèse) |
|---|---|
| `/` | Accueil sur le modèle de vitrinepmeinnovante.com : carrousel, recherche multicritère (+ « Autour de moi »), types de structures, chiffres clés, plateforme, écosystème, espace UEMOA, PME à la une, secteurs, portail des opportunités, diaspora et financements, partenaires, portraits, témoignages, inscription aux opportunités |
| `/entreprises` | Entreprises : recherche PME / secteur / ville ; **Autour de moi** (géolocalisation, rayon 5 à 250 km, tri par distance ; `?autour=moi` la déclenche à l'ouverture) ; zones AES / UEMOA / Afrique / Diaspora ; filtres pays, ville, type, vérifiées, exportatrices, certifiées, financement, femmes entrepreneures, jeunes entrepreneurs (`/annuaire` redirige ici) |
| `/cartographie` | Cartographie interactive (équipe et membres Pro) |
| `/entreprises/{slug}` | Fiche entreprise : localisation (carte, GPS, itinéraire Google Maps) et mise en relation |
| `/opportunites` | Événements, projets, innovations, recrutement, appels d'offres, offres de financement, marchés |
| `/evenements` | Événements & salons (SBPME 2026) |
| `/financement` | PME en recherche de financement, offres, acteurs financiers |
| `/media` | Actualités, interviews, publireportages, communiqués, portraits, témoignages, petites annonces |
| `/bpme-tv` | BPME TV (vraies vidéos de youtube.com/@BPMETV, lecteur chargé au clic) |
| `/visages-audace-africaine` | Les Visages de l'Audace Africaine |
| `/outils` | Boîte à outils par thème (PME, ZLECAf, Diaspora, UEMOA, AES, Financement) : guides, liens, PDF ajoutés depuis « Contenus » |
| `/produits` | Place de marché : produits et services des entreprises (commande par WhatsApp ou demande de devis) |
| `/recherche` | Recherche globale (entreprises, produits, opportunités, articles, outils, portraits, vidéos) |
| `/diaspora-zlecaf`, `/financements-partenaires` | Pages reprises de l'ancien site |
| `/connexion`, `/inscription` | Connexion ; inscription par profil (entreprise, investisseur, membre) |
| `/espace` | Tableau de bord (différencié selon le profil) |
| `/espace/ma-fiche` | Fiche de l'entreprise (création → modération), position par GPS, clic sur la carte ou saisie |
| `/espace/mises-en-relation` | Demandes reçues par l'entreprise |
| `/espace/contenus` | Rédaction et validation des contenus (équipe) |
| `/espace/referentiel` | Secteurs, pays et villes (équipe) |
| `/espace/entreprises` | Toutes les fiches : suspendre, vérifier, « À la une » programmé, verrouiller, export CSV (admin, modérateur) |
| `/espace/publicites` | Bannières programmées par emplacement et période (admin, modérateur) |
| `/espace/produits` | Catalogue de l'entreprise (publié après modération) |
| `/espace/devenir-pro` | Accès Pro payant (données réservées des fiches) |
| `/espace/abonnement` | Formule Bloc A/B/C de l'entreprise |
| `/espace/abonnements` | Confirmation des paiements (admin) |
| `/espace/utilisateurs` | Profils et statut Pro des comptes (admin) |
| `/espace/vision-investisseur` | PME à potentiel, en recherche de financement, exportatrices, certifiées |
| `/espace/moderation` | Validation des fiches (admin, modérateur) |
| `/espace/notifications` | Notifications |

Le bandeau du haut (`resources/views/partials/partner-band.blade.php`) fait défiler les partenaires. Leur liste, avec les liens et les logos (SBPME 2026, vitrinepmeinnovante.com, BPME TV, réseaux PME PMI…), est dans `config/vitrine.php`, comme les réseaux sociaux, les types et les ressources de la rubrique Outils.

## Ce qui rend le site rapide

- **Images** : `scripts/optimize_images.php` produit de vrais WebP en plusieurs tailles à partir de `resources/images-src/`. Sur l'ancien site, les visuels d'accueil étaient des PNG de 1,7 Mo renommés en `.webp` ; ici, ils pèsent 45 Ko.
- **Rien de lourd n'est chargé sans raison** : Leaflet n'est téléchargé que sur les pages qui affichent une carte, les vidéos YouTube seulement au clic, et icônes comme drapeaux sont des SVG locaux.
- **Cache** : l'accueil et la carte sont mis en cache, puis recalculés automatiquement quand une entreprise ou une opportunité change.
- **Requêtes SQL** : chargement anticipé des relations ; en développement, `Model::preventLazyLoading()` bloque les requêtes N+1.
- **Cache navigateur** d'un an pour les fichiers versionnés (`public/.htaccess`).

## Données

Les entreprises, opportunités (sauf SBPME 2026), portraits et comptes sont **fictifs** : ils servent à la démonstration. Les articles du Salon des Banques & PME et les vidéos BPME TV sont réels.

## Mise en production

1. Copier `.env.production.example` en `.env` et le compléter (base MySQL, serveur d'e-mails `MAIL_*` : indispensable pour la confirmation d'adresse et le mot de passe oublié).
2. Installer et préparer :

```bash
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php artisan key:generate
php artisan migrate --force --seed
php artisan vitrine:admin direction@exemple.org "Nom Prénom"
php artisan vitrine:thumbnails   # copie locale des miniatures BPME TV
php artisan optimize
```

`--seed` n'ajoute en production que les données de référence (pays, villes, secteurs, articles du SBPME, vidéos BPME TV) : les comptes et entreprises de démonstration ne sont créés qu'en local. `vitrine:admin` affiche une seule fois un mot de passe aléatoire, à changer depuis « Mon profil ».

Tâche planifiée (cron du serveur, une ligne) : elle traite chaque minute la file d'attente des notifications.

```
* * * * * cd /chemin/du/site && php artisan schedule:run >> /dev/null 2>&1
```

Vérifications avant l'ouverture :

- `APP_ENV=production` et `APP_DEBUG=false` (sinon les erreurs affichent le code et la configuration) ;
- site servi en HTTPS uniquement : les liens sont générés en `https://`, le cookie de session n'est envoyé qu'en HTTPS et l'en-tête HSTS est actif ;
- le dossier public du serveur pointe sur `public/` (jamais sur la racine du projet, qui contient `.env`).

## Pas encore repris de l'ancien site

Abonnements et paiement Wave, boutique / marketplace, formations, API mobile, import des données de production, envoi des notifications par e-mail (elles sont aujourd'hui uniquement dans l'espace personnel).

Captures d'écran : `docs/captures/`.
