# Plateforme multisite monétisable (Laravel 12 · Tailwind CSS 4 · Vite)

Une seule application pour lancer et piloter plusieurs sites thématiques, chacun avec son domaine, son identité visuelle, ses contenus, son SEO et sa configuration Google AdSense, depuis un back-office centralisé.

> Aucun revenu n'est garanti et l'approbation AdSense n'est jamais automatique : la plateforme fournit l'outillage technique et les garde-fous, la valeur du contenu reste déterminante.

## Démarrage rapide (local)

Prérequis : PHP 8.2+, Composer, Node 20+, MySQL 8+ (base `adsense` en utf8mb4, moteur InnoDB forcé par la configuration).

```bash
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate --seed
php artisan storage:link
npm install
npm run build
php artisan serve
```

Le seeder crée le super administrateur défini par `ADMIN_EMAIL` / `ADMIN_PASSWORD` dans `.env` (mot de passe aléatoire affiché une fois si vide), et douze sites de démonstration, chacun avec son propre thème visuel.

| URL locale | Contenu |
|---|---|
| http://admin.localhost:8000 | Back-office |
| http://calculfacile.localhost:8000 | Pilote n°1 « CalculFacile » (publié, thème utilitaire) |
| http://potager.localhost:8000 | Pilote n°2 « Potager Malin » (en développement, non indexé) |
| http://cerveauvif.localhost:8000 | Pilote n°3 « CerveauVif » : 5 jeux de réflexion (thème jeux) |
| http://matchpulse.localhost:8000 | Pilote n°4 « MatchPulse » : scores de football en direct (thème sport) |
| http://immocalcul.localhost:8000 | Pilote n°5 « ImmoCalcul » : simulateurs immobiliers (niche à forte valeur publicitaire) |
| http://consomaison.localhost:8000 | Pilote n°6 « ConsoMaison » : calculateurs énergie (consommation, chauffage, solaire) |
| http://textora.localhost:8000 | Pilote n°7 « Textora » : correcteur d'orthographe multilingue, compteur de caractères, outils de texte |
| http://toolnest.localhost:8000 | Pilote n°8 « ToolNest » : outils gratuits sans inscription (pourcentage, âge, TVA, unités, devises, mots de passe, QR codes) |
| http://iconova.localhost:8000 | Pilote n°9 « Iconova » : 2 154 icônes Lucide (ISC) en 5 langues dont l'arabe, éditeur SVG/PNG/React |
| http://savoirama.localhost:8000 | Pilote n°10 « Savoirama » : quiz de culture générale corrigés, fiches de révision, quiz du jour |
| http://pasapas.localhost:8000 | Pilote n°11 « Pas à Pas » : tutoriels web, IA et productivité (thème documentation) |
| http://compressa.localhost:8000 | « Compressa » : 20 outils de conversion et compression d'images, PDF et documents (traitement dans le navigateur) |
| http://cineradar.localhost:8000 | « CinéRadar » : films et séries gérés dans le back-office, vidéos (envoi par morceaux, sans limite de taille), avis modérés |
| http://aurore.localhost:8000 | « Maison Aurore » : boutique en ligne (thème boutique) — catalogue, variantes, panier, paiement, commandes |
| http://nomadeo.localhost:8000 | « Nomadeo » : dropshipping (thème market) — fournisseurs, flux prix/stock, marges, suivi fournisseur |
| http://mijote.localhost:8000 | « Mijoté » : recettes de cuisine (thème kitchen) — catégories, ingrédients, étapes, temps, filtres, portions ajustables |
| http://constellation.localhost:8000 | « Constellation » : annuaire central de tous les sites du réseau |

Les navigateurs modernes résolvent `*.localhost` vers votre machine : aucun fichier hosts à modifier. Si le port 8000 est déjà pris : `php artisan serve --port=8010` (remplacer 8000 par 8010 dans les URL). Pour le rechargement à chaud pendant le développement : `npm run dev`.

## Fonctionnalités

- **Multisite** par nom de domaine (+ alias redirigés en 301), thèmes surchargeables, couleurs et typographie par site, modules activables (articles, outils, jeux, résultats sportifs en direct, recherche, RSS). 12 thèmes (classique, utilitaire, sport, jeux, éditorial, boîte à outils, studio, nature, patrimoine, énergie, quiz, documentation) avec en-tête, pied de page, accueil et jetons de design propres.
- **Back-office** : navigation par icônes, tableau de bord avec tendances et « Actions recommandées » (pages à fort trafic non monétisées, ads.txt, préparation AdSense), tableaux triables, éditeur avec aperçu Google et objectif de mots, formulaires par sections, tableau de bord global, suivi par site (développement → publication → référencement → monétisation), score de préparation AdSense, articles/pages/catégories/outils en Markdown, utilisateurs et rôles (super admin, admin, éditeur, auteur).
- **AdSense** : identifiant central ou par site, annonces automatiques et/ou manuelles, 6 emplacements activables (dont Multiplex après le contenu), `ads.txt` généré et vérifié, Consent Mode v2 + CMP certifiée, aucune annonce réelle hors production, règles anti-clics accidentels et anti-contenu mince.
- **SEO** : balises title/description/canonical, Open Graph, JSON-LD (WebSite, Article, BreadcrumbList, FAQPage, WebApplication), sitemap XML et robots.txt dynamiques par site, flux RSS, Search Console et GA4 par site.
- **Performances** : pages publiques sans cookie avec cache pleine page invalidé automatiquement, JS public ≈ 2,6 Ko, outils chargés à la demande, aucune police web.
- **Direct sportif (MatchPulse)** : données réelles API-Football / API-Basketball (clé `API_SPORTS_KEY`), tableau de bord du jour (filtres sport, compétition, statut, équipe), chronomètre, centre de match (chronologie, statistiques comparées et leur évolution, compositions sur terrain, statistiques et comparaison des joueurs, classement), fiches équipes et joueurs, synchronisation planifiée économe en quota, relais temps réel Node.js (Server-Sent Events) avec repli automatique, statut « en attente » si les données ne sont plus confirmées.
- **Jeux de réflexion** : Sudoku (grilles générées à solution unique), Memory, calcul mental chronométré, Simon, Mastermind ; records conservés dans le navigateur.
- **Multilingue** : langue principale sans préfixe, langues supplémentaires (en, es, de, ar) sous `/en/`, `/es/`, `/de/`, `/ar/` (arabe en RTL complet) avec segments d'URL traduits, interface traduite, balises hreflang, sitemap multilingue. Traduction automatique des contenus (DeepL ou LibreTranslate, en file d'attente) puis relecture dans le back-office : une traduction non relue est `noindex` et sans annonce (politique Google sur le contenu traduit automatiquement). Une langue n'est publiée que lorsqu'elle a du contenu.
- **Outils texte et utilitaires** : correcteur d'orthographe/grammaire (proxy LanguageTool, 10 000 caractères, limité à 20 requêtes/min), compteur de caractères, lorem ipsum, casse, âge, devises (taux BCE), mots de passe (générés localement), QR codes (générés localement), convertisseur de couleurs HEX / RGB / RGBA / HSL / HSLA (aperçu avec transparence, opacité, contraste WCAG, copie de chaque valeur).
- **Page Contact sur tous les sites** (`/contact`, `/en/contact`, `/es/contacto`, `/de/kontakt`, `/ar/ittisal`) : formulaire sans cookie protégé (champ piège, jeton horodaté signé, vérification d'origine, 5 messages / 10 min par IP), messages enregistrés dans l'onglet « Messages » du site (non lus, recherche, réponse par e-mail) et envoyés à l'adresse définie dans Paramètres → Formulaire de contact (sinon l'e-mail du site). Une page publiée de slug `contact` sert d'introduction au formulaire. Pas d'annonce sur cette page.
- **Gestion de contenu** : éditeur visuel (Tiptap, HTML nettoyé côté serveur) pour pages, articles et outils ; 33 blocs configurables avec options de design par bloc (polices, tailles, couleurs, alignement, largeur, marges, image de fond, visibilité mobile/ordinateur) (bandeau, texte, image, galerie, vidéo, FAQ, tarifs, témoignages, produits, formulaire, emplacement publicitaire encadré…) à ajouter, dupliquer, masquer, réordonner et réutiliser ; médiathèque par site (envoi par morceaux, miniatures WebP) ; aperçu avant publication, publication programmée, page d'accueil personnalisée. Voir docs/09.
- **Boutique et dropshipping** (modules shop / dropshipping) : catalogue avec variantes, panier calculé par le serveur, Stripe / virement / paiement à la livraison, commandes, factures, remboursements, retours, codes promo, campagnes, livraison, clients, tableau de bord des ventes et marges ; fournisseurs avec règles de prix et flux CSV/JSON. Voir docs/09.
- **Menu de l'en-tête** (onglet « Menu » de chaque site) : ajouter, modifier, masquer, supprimer et réordonner (glisser-déposer ou flèches) des onglets vers une section du site, une page, une catégorie ou un lien (interne ou externe, nouvel onglet), avec libellés traduits par langue ; « Importer le menu automatique » pour partir de l'existant, « Revenir au menu automatique » pour annuler. Fonctionne avec tous les thèmes, y compris sport, cinéma et fichiers.
- **Quiz** : questions corrigées et expliquées lisibles sans JavaScript, score instantané, quiz du jour, données structurées `Quiz`, édition au format texte dans le back-office, traduction qui conserve les bonnes réponses.
- **Réseau de sites** : annuaire central, page « Nos autres sites », une suggestion contextuelle par thématique (jamais de bloc de liens systématique), vue « Langues & réseau » dans le back-office.
- **Statistiques** : pages vues anonymes agrégées (sans cookie, robots exclus), pages les plus consultées, import des rapports AdSense (CSV) avec RPM et CTR.

## Commandes utiles

```bash
php artisan test                      # 123 tests fonctionnels
php artisan livescore:sync --force    # synchronise les matchs en direct
php artisan platform:translate slug   # traduit un site (langues activées), puis : php artisan queue:work
php artisan platform:site slug domaine.fr "Nom du site" --theme=default
php artisan platform:check-ads-txt    # vérifie ads.txt en ligne (planifié chaque jour)
```

## Documentation

1. [Idées de projets et sélection](docs/01-idees-de-projets.md)
2. [Architecture et stratégie multisite](docs/02-architecture.md)
3. [AdSense : intégration et conformité](docs/03-adsense-conformite.md)
4. [Tests, déploiement et acquisition de trafic](docs/04-deploiement-et-acquisition.md)
5. [Stratégie de revenus et feuille de route des sites](docs/05-strategie-revenus.md)
6. [Nouveaux sites, thèmes, multilingue et réseau](docs/06-nouveaux-sites-et-reseau.md)
7. [Direct sportif : source de données, synchronisation, temps réel](docs/07-direct-sportif.md)
8. [Compressa et CinéRadar](docs/08-compressa-et-cineradar.md)
9. [Gestion de contenu, boutique en ligne et dropshipping](docs/09-cms-boutique-dropshipping.md)
10. [Personnalisation, nouveaux blocs, pages légales et site de recettes](docs/10-personnalisation-et-recettes.md)
