Add 3D scroll animation demo with Four cleaning phases - #4
Open
matheoceleste-sudo wants to merge 32 commits into
Open
Add 3D scroll animation demo with Four cleaning phases#4matheoceleste-sudo wants to merge 32 commits into
matheoceleste-sudo wants to merge 32 commits into
Conversation
Interactive animation showcasing cleaning services with 4-phase scroll journey: - Phase 1: Boat cleaning with 3D model - Phase 2: Boat textile/upholstery cleaning - Phase 3: Jet interior with premium seating - Phase 4: Car detailing Features: - Smooth camera movement tied to scroll progress - Dynamic background color transitions - Rotating 3D objects with metallic materials - Phase labels and progress tracking - Responsive design Uses Three.js for 3D rendering and GSAP ScrollTrigger for scroll animations. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
Scroll-driven journey through 4 realistic scenes (Pexels photos): boat cleaning, marine upholstery, private jet interior, car detailing. Crossfade + Ken Burns zoom + parallax text, MathClean branding (gold/dark, Cormorant Garamond), progress bar, dots, final CTA. Single self-contained file, no JS dependencies, CSS gradient fallbacks if an image fails to load. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Reinsert complete site (index, assets, 9 service pages, 6 zone pages, robots.txt, sitemap.xml) under mathclean-site/ - Rebuild experience page: scenes now transition by decomposing into a 3D tile grid that scatters radially, flips 180° and reassembles into the next photo, driven by scroll (wave stagger from center, eased, reduced-motion fallback) - Enrich all 6 zone pages with unique local content (1500+ visible characters each) plus a "Pourquoi choisir MathClean" section - Link the 3D experience from the homepage menu and sitemap Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Homepage hero: sticky 4-scene photo journey; scrolling zooms into the current image while it fades to reveal the next (boat, marine upholstery, jet interior, car detailing), with per-scene captions linking to service pages, dots, cue, reduced-motion fallback and CSS gradient fallbacks - Base updated to latest site version (reservation page, anim.css/js, filled service pages) - Service pages: unique "zones d'intervention" copy (400+ chars each), Seine-et-Marne (77) link added - Zone pages re-enriched with unique local content (1500+ chars) - Standalone experience.html removed (now on homepage) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
… page
- Homepage: majestic yacht photo as first scene; every service card now
shows a real photo
- Service pages: service photo as subhero background; automobile page
lists 9 add-on options (10-20 EUR) to raise average basket
- Reservation page rebuilt:
* month calendar (book any future date, past days disabled)
* car: two 3h slots (9-12 / 13-16) with option checkboxes and live
price estimate; textiles (sofa/mattress/rug): 1h slots from 9h to 20h
* cross-blocking: a car slot blocks overlapping textile hours and
vice versa (persisted in localStorage on the device)
* quote-only services: slots replaced by a required detailed
description plus unlimited photo/video attachments
- merci.html: animated thank-you page (emoji, recontact message, back
home button) shared by booking and quote forms via formsubmit _next
redirect wired in app.js
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| 🔵 In progress View logs |
cloudflare-docs | c9edb4e | Jul 25 2026, 03:42 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| 🔵 In progress View logs |
mathclean | c9edb4e | Jul 25 2026, 04:13 PM |
- New service: nettoyage d'avion (dedicated SEO page with jet photo, aerodrome coverage, 400+ chars zones section; card on homepage; option in booking picker as quote-based; linked in all footers and sitemap; hero jet caption now links to it) - Booking: new required vehicle step for car cleaning — Citadine 29 EUR, Berline 39, SUV/4x4 49, Monospace/Van 59; estimate = vehicle + options - Car options revised: coffre 5, poils d'animaux 5 (10 if heavy, mutually exclusive pair), shampoing sièges 10, jantes 20 - All "dès 49 €" car prices updated to 29 EUR across homepage (FAQ, JSON-LD, cards, hero caption), automobile service page (tier price list) and zone pages; trunk option 10 -> 5 EUR in FAQ Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Homepage scene 1: new yacht photo (pointed bow, 3/4 front view, docked at port) with a canvas water-jet animation — continuous spray from off-screen bottom-right sweeping across the hull; while the visitor holds the mouse down the jet originates from the cursor and follows it, reverting to auto mode on release; ballistic droplets with splash particles, fades out on scroll, disabled for prefers-reduced-motion - Car cleaning description detailed with emojis (full interior vacuuming, carpet shampoo, high-temperature allergen/dust-mite disinfection on seats, steering wheel, mats and flat surfaces) on the automobile service page and homepage FAQ (+ JSON-LD) - Airplane service now also in hero subtitle and the contact form's service selector Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Fix mobile nav bug: the drawer was position:fixed inside the fixed header whose scrolled-state backdrop-filter turns it into a containing block, breaking the drawer once the page scrolls (menu items drifted off-screen). Replaced with an absolute panel anchored under the header — immune to backdrop-filter, scrollable, solid background - Remove the water-jet canvas animation from the homepage hero - Floating "Réserver" pill bottom-right on every page (except booking and thank-you pages), injected via app.js with path-aware link - Header: gold pill now "Réserver" -> reservation.html; "Contact" link added next to FAQ on all 18 pages - Homepage contact section: "Des questions à nous poser ?" / "Nous contacter" replace the old quote wording - Booking page: detailed-description textarea and photo/video upload now live inside step 2 in the left column (bound to the form via the form attribute); the calendar stays visible for quote requests as an optional desired date Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Every quote/booking CTA on the 10 service pages now deep-links to reservation.html?service=<name>; the booking page reads the param and preselects the service so the flow continues immediately - Selecting a service auto-scrolls to the next step; a helper message under the disabled submit button explains exactly what is missing (describe your need / pick vehicle / date / slot) - Forms (booking + homepage contact) now submit via AJAX to formsubmit and always land on merci.html; classic POST with _next kept as network-failure fallback; button shows "Envoi en cours…" while sending - merci.html: added bold underlined "Retour au site" text link under the existing back-home button Verified end-to-end in headless Chromium: service page CTA -> preselected quote -> submit -> merci.html; calendar booking -> submit -> merci.html with the slot blocked on return. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Reviews section replaced with the infinite-scroll marquee from the user's MAJ2 design (6 reviews, duplicated track, pause on hover, edge fade mask, reduced-motion fallback) - New #tarifs section with three pricing cards (Automobile from 29 EUR with vehicle tiers and +5 EUR trunk option, Ameublement from 39 EUR featured, Sur mesure on quote incl. boat/plane) — prices aligned with current offer, CTAs deep-link to the booking page; "Tarifs" added to the homepage menu - Both formsubmit endpoints (homepage contact + booking) now point to matheoceleste@gmail.com - Fixed unclosed @media braces from CSS extraction that swallowed the pricing rules Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- CRITICAL FIX: 9/10 service pages had a canonical URL missing the /services/ path segment, pointing to a 404 instead of the real page — this actively harms indexing/ranking. Fixed to match actual file paths. - Added Service + BreadcrumbList JSON-LD to all 10 service pages, and LocalBusiness + BreadcrumbList JSON-LD to all 6 zone pages (previously only the homepage had structured data) - Reinforced target keywords the user wants to rank for: "nettoyage voiture" added alongside "nettoyage automobile" in title/meta/body; "nettoyage de textile" added to canapé/matelas/tapis meta descriptions and to the homepage services intro - Added role="img" aria-label to the 4 hero background-image divs (previously zero alt/accessible text on any photo site-wide) - Added Tremblay-en-France (93290, HQ city) to the Seine-Saint-Denis zone page city list and to the canapé service page body copy - sitemap.xml: added <lastmod> to every URL Verified: all JSON-LD blocks parse as valid JSON, every canonical now resolves to an existing file, pages render with no console errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Created zones/val-de-marne-94.html and zones/val-doise-95.html: every service page already claimed coverage of these two departments in body text, but no landing page existed for them (unlike the other 6 departments) - direct gap vs. the "8 Departements" homepage stat. Same template as existing zone pages: unique 1250-1450+ char content, city lists, LocalBusiness + BreadcrumbList JSON-LD, canonical. - Wired the 2 new pages everywhere: homepage zones grid (now 8) and footer, all 10 service pages (body city links + footer), all 6 existing zone pages' footers, and sitemap.xml - Added a favicon (existing lion.svg) to all 19 previously-faviconless pages - Fixed homepage LocalBusiness JSON-LD areaServed list: was missing Seine-et-Marne, Val-de-Marne and Val-d'Oise entirely Verified across all 21 HTML pages: every JSON-LD block parses as valid JSON, every canonical resolves to an existing file, zero broken internal links, new pages render correctly with correct title/H1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
Homepage hero: punchier headline "Comme neuf. Sans effort." with a trust-badge row (intervention sous 24h / devis gratuit / experts 7j/7) and two clear CTAs (Réserver mon intervention / Demander un devis) — kept the existing yacht scene and scroll journey untouched. Booking page: added the G-Clean-style wizard chrome on top of the existing flow — a rating/trust pill (4,9/5 · +250 avis · dès 29 €), a sticky "ÉTAPE 0X / 04" progress bar with a gold fill and step labels (Prestation / Détails / Date & créneau / Coordonnées) that advances as the user completes each stage, and a "Besoin d'aide ?" phone line. All existing logic is preserved intact: vehicle tiers, options, calendar, 1h/3h slots, cross-blocking, quote mode with photo/video upload, and the merci.html redirect. Verified in-browser: hero renders with badges over the yacht; progress bar steps 01→02→03→04 (38%→62%→100%) as service/vehicle/date/slot are chosen; no console errors. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
…py fixes - Reservation: the 'décrire votre besoin' textarea now renders as a full dark rectangle like the other fields (it sits outside <form> via the form= attribute, so the global 'form textarea' rule never reached it — added dedicated #stepDevis styling) - Homepage hero: added a 'Prochaines disponibilités' panel (city · day · hour, days computed dynamically in JS) and kept the trust markers (Intervention sous 24h / Devis gratuit / Experts qualifiés); reservation trust pill now also shows 'Intervention sous 24h · Experts qualifiés' - Replaced 'premium' wording in the hero eyebrow and subtitle with 'Service de nettoyage à Paris & Île-de-France' - Services nav item is now a dropdown: opens on hover (desktop) and on click (desktop + mobile, inline accordion), listing all 10 services each suffixed 'à Paris'; applied to every page - Added an 'Autres services' section with a photo card per service at the bottom of all 18 service and zone pages, linking to each service page (span images given display:block so the 118px thumbnail renders; dark fallback colour if a photo fails to load) Verified in-browser: dropdown hover+click, dispo dates, autres grid (9 cards, 118px thumbs), textarea 597x170 dark; all JSON-LD valid, no broken internal links, no console errors. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Homepage hero journey reordered: first scene is now a bright cosy living room (light colours), and the yacht moved to the final scene. New scene order: salon → automobile → jet → bateau (yacht). Captions updated to match; added a dark scrim over the scenes so the white hero text stays readable over the lighter first image. - Added a 'Qui sommes-nous' presentation section right after the hero (before the stats band): a warm, trust-building intro of MathClean (744 chars, well over the 300 requested) in a two-column layout with a photo and the lion signature 'Une exigence de roi'. Verified in-browser: first scene shows the light interior with readable text, last scene shows 'Nettoyage de bateau' (yacht), presentation renders in two columns; no console errors. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
…ayout - New light palette (cream / beige / off-white) applied site-wide by repurposing the CSS variables plus a dedicated light-theme override block; text is now dark ink, gold accents deepened for contrast on light. - Body now carries a fixed living-room (salon) background image, the same on every page; content sits in centred cream "sheets" (the section .wrap becomes an A4-like column) floating over that background. - Homepage: replaced the dark immersive multi-photo scroll hero with a clean light hero (same headline, badges, dispo panel and CTAs) that fits the single fixed-background model requested. - Patched page-inline dark styles (reservation trust pill, progress bar, merci page, grey #d8d4ca text) with !important overrides so they read correctly on cream. Verified in-browser across home, service, reservation and merci pages: consistent cream sheets, readable dark text, gold accents, no console errors; all JSON-LD valid, no broken links. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
…otos - Darkened all body text to near-black (--blanc #12100c, --gris #39332a) and overrode the hardcoded light greys (#cdc9bf / #d8d4ca) used by prose, city chips, pricing lists, autres-services and svc-anim copy so everything reads as black on the cream sheets. - Restored the animated immersive photo hero on the homepage (salon → car → jet → yacht scroll journey) while the rest of the site keeps the light cream theme; scoped the hero's text/badges/dispo back to light so they stay readable over the dark photos, and made the homepage header (brand + menu) light while it sits over that hero, dark once scrolled. - Replaced the SVG "before/after" animations on the 9 service pages with real 16:10 service photos (car, sofa, mattress, rug, boat, terrace, premises, office, post-works), each themed to its page. Verified in-browser: hero h1/badges light over dark photos; header brand light on hero; service prose text near-black; svc-shot photos in place, zero anim-stage left; all JSON-LD valid, no console errors. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- New conditions-generales.html (light theme, same header/footer/menu), 13 articles covering: objet, identité, devis, prix, paiement, exécution (obligation de moyens), obligations du client, annulation, droit de rétractation (L221-18/L221-25), responsabilité & assurance, réclamations, RGPD, médiation & droit applicable. - Marked with a visible "à compléter / faire valider par un juriste" notice and [bracketed] placeholders for the legal details not on file (forme juridique, SIRET, TVA, assurance, médiateur, dates). - Linked from the homepage footer; noindex,follow. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
Reverts the conditions-generales.html page and its homepage footer link: the user wanted general terms to attach to their quotes, not a site page. The terms are delivered separately as an editable Word document and a print-ready PDF. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
…chies - Ajout d'une image Open Graph de marque (1200x630) + balises og:image/twitter:card sur les 20 pages - Ajout des balises og:site_name, og:locale et Twitter Card summary_large_image - Balises Open Graph complètes ajoutées à reservation.html - Balises géo locales (geo.region FR-IDF, geo.placename) + robots max-image-preview - LocalBusiness JSON-LD enrichi : logo, géoloc, horaires structurés, catalogue d'offres (9 services), paiements, email - Ajout d'un schéma WebSite sur la page d'accueil - Sitemap : dates mises à jour, changefreq, balise image Google Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- 190 photos de contenu converties de background-image CSS vers de vraies balises <img> - Attribut alt descriptif et optimisé SEO sur chaque image (indexation Google Images) - loading=lazy + decoding=async pour la performance (Core Web Vitals) - width/height explicites pour éviter le décalage de mise en page (CLS) - Photos concernées : cartes services accueil, photo équipe, photo principale de chaque service (svc-shot), grilles 'autres services' (ac-img) - CSS mis à jour avec object-fit:cover pour un rendu identique - Animations hero (.jimg) et fonds hero (.subhero) conservés en décoratif Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- CTA 'Laissez-nous un avis Google' dans la section Avis clients (logo Google officiel) - Bouton configurable via une seule variable GOOGLE_PLACE_ID dans app.js - Fallback vers une recherche Google Maps tant que la fiche n'est pas créée - Style assorti au thème (carte crème, étoiles dorées, bouton or) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
…le Business - Adresse LocalBusiness mise a jour vers l'adresse reelle de la fiche Google (4 Rue Nicolas Copernic, 93290 Tremblay-en-France) - Coordonnees geographiques corrigees pour Tremblay-en-France - Coherence NAP (Nom-Adresse-Telephone) site <-> fiche Google pour renforcer le referencement local Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- 3 pages legales creees (mentions-legales, politique-confidentialite, politique-cookies) - Adaptees au statut auto-entrepreneur (TVA art. 293 B), infos reelles pre-remplies, SIRET a completer - Liens legaux ajoutes dans le pied de page des 20 pages du site - Bandeau cookies discret et non-bloquant (site sans traceur publicitaire) - Pages ajoutees au sitemap (priorite basse) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Le bouton 'Services' n'entraine plus la fermeture du menu mobile (exclusion de .sub-toggle du handler de fermeture) - Auparavant : taper Services ouvrait le sous-menu ET fermait le menu simultanement -> rien ne s'affichait - Noms des services affiches en entier sur mobile (white-space:normal, plus de troncature a droite) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Section 'a propos' (accueil) : paragraphe et signature passes en texte tres fonce (etaient gris clair #d8d4ca / blanc #f5f2ea) - Section garanties (pages service/zone) : descriptions passees en fonce (etaient #d8d4ca sur creme) - Variable --gris du theme clair assombrie (#2a251d) pour renforcer tout le texte secondaire - Hero anime conserve en texte clair (sur photos sombres) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
…page) - Ajout par service d'un bloc unique : 'Pourquoi nous', methode etape par etape, FAQ - Contenu specifique a chaque prestation (automobile, avion, bateau, bureau, canape, chantier, locaux, matelas, tapis, terrasse) - Schema FAQPage (JSON-LD) ajoute sur chaque page -> eligibilite aux resultats enrichis Google - Texte en fonce, lisible sur creme Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Analyse des concurrents (injection-extraction, sec en 2h, anti-acariens, produits ecolo, ciblage par ville, credit impot) - Chaque page service : +2 sections (produits eco-responsables & materiel pro + 'Ou faire nettoyer' avec villes ciblees et adresse cliquable Google Maps) - Meta descriptions reecrites avec mots-cles a forte intention - Pages services passees de ~5200 a 8500-10850 caracteres de contenu unique - Nouvelle page 'Astuces & conseils' (contenu editorial, liens internes, schema Article + FAQPage) - Lien 'Astuces & conseils' ajoute au pied de page de tout le site + sitemap - Adresse (NAP) alignee sur la fiche Google Business pour le referencement local Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
- Nouveau logo 'MC' (cercle dore + initiales serif) sur les 25 pages (header + signature + favicon) - Favicon lion.svg mis a jour avec le monogramme - Image de partage social (og-image) regeneree avec le monogramme MC Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7
…e + favicon + og-image" This reverts commit be0a517.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds a new interactive 3D scroll animation demo (
scroll-3d-demo.html) that showcases the MathClean brand through a multi-phase scrolling experience. The demo features Four distinct cleaning service phases (Boat, Textile, Jet Interior, and Car) with synchronized 3D object animations, dynamic camera movements, and phase-based visual transitions.Key Features
Technical Implementation
Test Plan
N/A - This is a new demo file with no automated tests. Visual verification of the scroll animation, phase transitions, and 3D object rendering can be performed by opening the HTML file in a modern browser and scrolling through the full viewport height.
https://claude.ai/code/session_017YjS2TKuHBScCCiw9ENrE7