Server : Apache System : Linux webd003.cluster111.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : edevmultrx ( 811899) PHP Version : 7.4.33 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/edevmultrx/www/terra-d-oro/ |
# Terra d'Oro — CLAUDE.md > Site de location de villas de luxe et restaurant en Corse. > **Stack** : PHP 8.1+ vanilla, HTML/CSS/JS vanilla — zéro dépendance (pas de Composer, pas de npm). --- ## Commandes de développement ```bash # Lancer le serveur local php -S localhost:8000 router.php # Initialiser / réinitialiser la base SQLite php core/init.php # Synchronisation manuelle iCal (en local) curl "http://localhost:8000/api/sync.php?key=SYNC_KEY" # En production — cron toutes les 15 min */15 * * * * curl -s "https://www.terradoro.com/api/sync.php?key=SYNC_KEY" > /dev/null 2>&1 ``` --- ## Architecture du projet ``` Terra d-Oro/ ├── admin/ # Panel admin (HTTP Basic Auth) ├── api/ # Endpoints JSON (availability, booking, sync, Stripe, iCal) ├── core/ # Noyau applicatif │ ├── config.php # Constantes, credentials, thème │ ├── db.php # Connexion PDO + schéma DDL + seeding │ ├── init.php # Script CLI d'initialisation de la DB │ ├── helpers.php # Fonctions globales (render_view, format_price, CSRF…) │ ├── antigravity.php # Micro-routeur │ ├── payment.php # Intégration Stripe │ └── ical/ # Sync calendrier (ICalParser, ICalGenerator, SyncManager) ├── data/ # Données runtime (terra.db, cache iCal, logs sync) ├── public/ # Racine web (index.php, css/, js/, img/, video/) ├── views/ # Templates PHP (layout, villas, booking, legal…) ├── logs/ # Logs applicatifs ├── router.php # Routeur pour le serveur PHP intégré ├── DEPLOY.md # Guide complet de déploiement (394 lignes) └── terra_doro_mysql.sql # Export schéma MySQL pour production ``` --- ## Base de données - **Dev** : SQLite 3 (`data/terra.db`) — créée automatiquement par `core/db.php` - **Prod** : MySQL/MariaDB (o2switch) - **Tables** : `terra_doro_units`, `terra_doro_bookings`, `terra_doro_ical_sources`, `terra_doro_recommendations` --- ## Flux de réservation 1. Sélection des dates sur la page villa 2. Vérification disponibilité → `api/availability.php` 3. Soumission formulaire → `api/booking-attempt.php` (status `pending`) 4. Paiement Stripe (acompte 30%) → redirection checkout 5. Webhook Stripe → `api/stripe-webhook.php` → status `confirmed` 6. Page de confirmation --- ## Sync iCal (Airbnb / Booking.com) - **Entrant** : cron → `api/sync.php` → fetch .ics OTAs → parse → upsert en DB - **Sortant** : `api/ical-feed.php?unit=villa-folacca` → .ics généré pour import OTA --- ## Design - **Palette botanique** : olive `#556B2F`, sauge `#8A9A5B`, crème `#F2EDE4`, charcoal `#2C2C2C` - **Typo** : Cormorant Garamond (titres), Inter (corps) - **Responsive** : mobile-first, vanilla CSS --- ## Conventions - Tout le code est en **vanilla PHP/JS/CSS** — pas de framework, pas de bundler. - Les fichiers `.pen` sont gérés exclusivement via les outils Pencil MCP. - Le routeur (`antigravity.php`) utilise un tableau associatif simple pour le mapping URL → vue. - CSRF tokens obligatoires sur tous les formulaires. - Les credentials sensibles sont dans `core/config.php` (ne pas commiter en clair en prod). --- ## Hébergement production - **Hébergeur** : o2switch (cPanel) - **PHP** : 8.1+ avec extensions `pdo_sqlite`, `curl`, `mbstring`, `fileinfo` - **SSL** : Let's Encrypt - **SMTP** : ssl0.ovh.net:465 (reservations@terra-doro.com) - **Voir** : `DEPLOY.md` pour le guide complet de mise en production --- ## Tâches en cours / Statut - [x] Architecture complète du site (routeur, vues, admin) - [x] Système de réservation avec paiement Stripe - [x] Synchronisation iCal bidirectionnelle (Airbnb, Booking.com) - [x] Panel admin (dashboard, gestion réservations, config iCal) - [x] Pages villas (Folacca, Tamaricciu) avec galeries et formulaires - [x] Page restaurant avec réservation - [x] Pages légales (mentions, CGV, confidentialité) - [x] Guide de déploiement (DEPLOY.md) - [ ] Upload des assets photo/vidéo finaux - [ ] Déploiement en production sur o2switch - [ ] Configuration DNS et SSL - [ ] Tests end-to-end avec Stripe en mode live