# Picseyes — Catalogue de location

Site PHP reconstruit à partir de l'archive **telline.fr** (catalogue récupéré avant fermeture).
Stack : **PHP 8.3 · MySQL/InnoDB · MVC PSR-4 sans Composer** — cohérente avec XPROJECT.

## Contenu récupéré

- **422 produits** (nom, description nettoyée, images, catégories)
- **94 catégories** : 22 principales + 72 sous-catégories (libellés FR)
- **505 images** produits (≈ 42 Mo), résolues vers le meilleur format disponible
- **823 liens** produit ↔ catégorie

## Arborescence

```
picseyes/
├── public/                 ← racine web (docroot Apache)
│   ├── index.php           front controller + routeur + autoload PSR-4
│   ├── .htaccess           réécriture d'URL
│   ├── assets/css/style.css design « instrument cinéma », variables CSS
│   ├── assets/js/app.js     galerie produit
│   └── storage/products/    images (.jpg/.png)
├── app/
│   ├── Core/               Router, Database (PDO), Controller
│   ├── Controllers/        Home, Catalogue, Product, Contact
│   ├── Models/             Product, Category
│   └── Views/              layouts, pages, partials
├── config/config.php       BDD, marque, coordonnées
└── sql/
    ├── schema.sql          tables (MySQL 8)
    └── seed.sql            données (422 produits)
```

## Déploiement (snew.fr)

1. **Uploader** le dossier via FileZilla.
2. **Créer la base** MySQL `picseyes` (utf8mb4).
3. **Importer** dans phpMyAdmin, dans l'ordre : `sql/schema.sql` puis `sql/seed.sql`.
4. **Configurer** `config/config.php` → bloc `db` (host, database, username, password) + bloc `contact`.
5. **Docroot** : pointer le vhost / sous-dossier sur `public/`.
   - Déploiement en sous-dossier (ex. `snew.fr/picseyes/public/`) : renseigner `'base_url' => '/picseyes/public'`.
6. **Permissions** : `public/storage/` lisible par Apache (les images y sont servies en statique).

> Après chaque upload de code, **vider l'OPcache** (`opcache_reset.php`).

## Test local immédiat (sans MySQL)

Une base SQLite de démonstration est incluse (`public/storage/catalogue.sqlite`).

```bash
# dans config/config.php : 'driver' => 'sqlite' et 'env' => 'local'
php -S 127.0.0.1:8000 -t public public/router.php
```

## Routes

| URL                       | Page                                   |
|---------------------------|----------------------------------------|
| `/`                       | Accueil (catégories + derniers ajouts) |
| `/catalogue`              | Toutes les catégories                  |
| `/categorie/{slug}`       | Produits d'une catégorie (+ filtres)   |
| `/produit/{slug}`         | Fiche produit + demande de devis       |
| `/recherche?q=…`          | Recherche                              |
| `/devis` (`GET`/`POST`)   | Formulaire de devis                    |

## Rebrander / personnaliser

- **Marque & coordonnées** : `config/config.php` (`app.name`, `contact.*`).
- **Couleurs / typo** : variables CSS en tête de `public/assets/css/style.css`
  (`--accent`, `--bg`, fontes…). Un seul endroit à modifier.
- **Logo** : actuellement le nom textuel « Picseyes » + pastille REC.
  Remplacer dans `app/Views/partials/header.php`.

## À brancher ensuite

- **Envoi des devis** : `ContactController::submit()` appelle `mail()` —
  à remplacer par le SMTP / la file de Picseyes.
- **Prix** : le modèle est « tarif sur demande ». Un champ prix peut être ajouté
  à la table `products` si besoin.
- **Identité Picseyes** : logo, palette définitive, mentions légales / CGL.

## Notes sur les données

- 141 produits ont une description (le site d'origine n'en fournissait pas pour les autres).
- Descriptions nettoyées : troncatures Yoast `[…]` retirées, complétées depuis le corps de page.
- 419/422 produits ont au moins une image ; 3 sans visuel (affichage « Pas de visuel »).
