Skip to content

Publish eight services with blue design, local SEO and enquiry safeguards - #4

Merged
Dayne-Valourite merged 13 commits into
mainfrom
feature/local-seo-patient-journey
Sep 18, 2026
Merged

Dayne-Valourite merged 13 commits into
mainfrom
feature/local-seo-patient-journey

Conversation

@Valourite-Sfotware

@Valourite-Sfotware Valourite-Sfotware commented Sep 14, 2026 •

Copy link
Copy Markdown
Collaborator

Local SEO, eight public services and preserved blue website design

Adds an eight-service patient journey with consistent metadata, canonical URLs, clinic structured data, sitemap/indexing controls and protected synchronous enquiry delivery. Preserves the restored original layouts, typography, image compositions and current blue palette.

Physiotherapy imagery

Seven coordinated generated illustrations replace the three repeatedly used treatment photos, with distinct homepage scenes and relevant per-page selections. Existing blue styling, arched/rounded containers and animations are preserved. Captions/alt text identify illustrations; generated people and rooms are not used as practitioner portraits or clinic identity images.

Responsive WebP variants (480/768/1200px), intrinsic dimensions, lazy below-fold loading, a matched responsive hero preload and per-page social metadata are configuration-driven. All seven 480px files total 111 KB; all 21 variants total 728 KB. Existing recursive image deployment is covered by an expanded preflight/copy test. IMAGE-ASSETS.md documents the audit, prompts, regeneration decisions and usage map.

Current validation: 111 PHP tests / 1365 assertions, 4 JavaScript tests, Pint, PHPStan, production build, shell syntax and diff checks pass. All 13 public pages checked at desktop/mobile widths; final source anatomy and rendered crops inspected, homepage lazy loading/reveals verified, no broken visible images or horizontal overflow observed. Production assets rebuilt with identical CSS/JS output. Motion-preference behaviour is automated-test covered; actual OS preference/high-DPR hardware emulation was unavailable. No merge or deployment.

Testimonials

Adds “What our patients say” after the treatment images and before About: three desktop cards, stacked mobile cards, existing blue/serif/rounded styling and gentle scroll-reveal stagger. The user subsequently confirmed the screenshot quotations are genuine and permitted for publication. The three top-row quotes from Sarah M., Priya N. and Lerato K. now populate the cards verbatim; no star ratings are displayed.

The supplied quotes now replace samples in every environment. Three labelled neutral samples remain only as a local/staging fallback when there are no approved entries. Production renders only complete, explicitly approved genuine entries and omits the entire section when empty. Samples live in a separate configuration list and cannot be published by toggling their approval flag. Optional source links require a valid supplied HTTP(S) URL. No Review/aggregate-rating schema or external widget. CONTENT-TODO.md documents where to enter quotes, permitted display names, source URLs and approval.

Testimonial-specific validation before the imagery update: 109 PHP tests / 1049 assertions, 4 JavaScript tests, Pint, PHPStan, production build, shell syntax and diff checks pass. Desktop/mobile browser verified three/one columns, spacing, no overflow and scroll-triggered 0/90/180ms entrances. Production sample exclusion, confirmed quote rendering/order, escaping and source-link checks are automated. No source URLs were supplied; no links are invented. Existing reduced-motion tests/CSS apply; actual browser motion-preference emulation remains unavailable. Assets rebuilt. No merge or deployment.

Animation and content refinement

Verified reference 42880b2 and compared its JS/CSS/Blade. Restored disconnected 30px/850ms scroll entrances and 0/90/180/270ms service-card staggers; applied consistent entrances to internal content. Content stays visible before observation or if JavaScript fails. Existing hover, drift, header and mobile-navigation interactions remain; parallax now responds to reduced-motion and mobile changes. The approved static illustration strip remains unchanged instead of restoring the removed carousel.

Rewrote all eight services around distinct patient questions, assessment focus, care and follow-up. Removed repeated service-page administration in favour of Patient Information, added relevant related links to the original three services, and separated homepage practitioner/first-visit/location/appointment content. Clinical background uses NHS/CSP sources; references and their limits are recorded in SEO-REVIEW.md. Practice-specific facts remain those supplied by the user.

Public content and optional information

  • All eight service pages, About and Patient Information are published in configuration; Contact’s booking information is now normal public content. Home and the hub expose eight ordered crawlable cards, and indexable production discovery contains all 13 URLs.
  • The user waived Cheryl’s content approval step. Missing optional facts do not prevent publication. No live site changes occur until a separately authorised merge/deployment.
  • Names, titles and editable draft biographies based only on supplied degree/experience facts are public. Cheryl’s equine experience is biographical, not a practice service. Exact qualifications, universities, languages, longer biographies and approved portraits have empty/null fields with supply instructions in config/site.php.
  • Additional optional fee/payment/medical-aid/missed-appointment facts are similarly stored without invented policies. CONTENT-TODO.md lists every key, what to supply, its eventual location, confirmed facts and external release tasks.
  • Public pages hide incomplete optional fields and portraits cleanly. No missing-information notices appear in any environment; outstanding facts stay in comments and CONTENT-TODO.md.

Preserved safeguards

The website Basic Auth gate and unused credentials/configuration are removed. Local and staging pages open anonymously while staying noindex, with crawling disallowed and an empty sitemap. Staging is accessible to anyone with its URL; noindex is not access protection. Deployment-token authentication is unchanged. Publication gating remains available if a page is disabled later. The verified location gate, canonical configuration, synchronous mail, replay protection, generic analytics deduplication and production deployment preflight remain intact.

The original design was restored from Git reference 42880b2; backup branch backup/seo-before-layout-restoration-2026-09-14 preserves the earlier SEO work. The central blue theme retains accessible text and focus states. Unsupported testimonials, credentials and unconfirmed promotional claims were not restored.

Validation

95 PHP tests / 953 assertions and 4 JavaScript tests pass, plus Pint, PHPStan, production asset build, shell syntax and diff checks. Browser scrolled all 13 pages at 390px and 1440px: no overflow, one H1 each, eligible reveals triggered. Verified card hover/lift, header/parallax, service navigation and mobile toggle/Escape/focus/link-close. With scripts blocked in the temporary loopback QA transport, all pages remained readable at both widths. Assets rebuilt; fake/mocked mail only.

Reduced-motion and missing/throwing observer paths have automated coverage, with reduced-motion CSS retained. The browser tool cannot emulate OS motion preference, so an actual reduced-motion browser session remains a manual verification limitation. The Livewire form still requires JavaScript; no-JS checks cover content and links. No hosted staging/production testing, merge or deployment.

Remaining release work

Optional content is tracked in CONTENT-TODO.md; it is not a release blocker. Valourite still needs to verify server environment overrides, effective cached production indexing/canonical settings, recipients and contact/location values, and obtain Google-account access for external listing/Search Console work. Existing preflight checks an in-place deployment; it does not provide an atomic release or automatic rollback. Cache-based deduplication does not guarantee exactly-once email delivery. Existing dependency-audit follow-up remains open.

No merge, deployment, live enquiry, production-setting change or Google-account modification.

Summary by CodeRabbit

  • New Features

    • Added dedicated pages for eight physiotherapy services, About, Contact, and Patient Information.
    • Added real practice contact details, opening hours, map, directions, parking, and access information.
    • Added approved patient testimonials and refreshed appointment guidance.
    • Added responsive illustrations, improved image loading, mobile navigation, image viewing, and scroll animations.
  • Improvements

    • Refreshed the site with a blue visual design and updated content for Glen Marais, Kempton Park.
    • Added enquiry protection and clearer request-submission messaging.
  • SEO & Accessibility

    • Added canonical URLs and environment-aware search visibility controls.
    • Improved focus styles and reduced-motion support.

@coderabbitai

coderabbitai Bot commented Sep 14, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: a51919ae-cdac-4607-9125-1eab7c238ef5

📥 Commits

Reviewing files that changed from the base of the PR and between aaaa5e2 and e0167e4.

📒 Files selected for processing (85)
  • .env.example
  • CONTENT-TODO.md
  • IMAGE-ASSETS.md
  • PR-DRAFT.md
  • SEO-REVIEW.md
  • app/Http/Controllers/SiteController.php
  • app/Http/Middleware/CanonicalSite.php
  • app/Support/ProductionPreflight.php
  • app/Support/Site.php
  • bootstrap/app.php
  • config/contact.php
  • config/imagery.php
  • config/site.php
  • deploy.sh
  • phpstan.neon
  • preflight.php
  • public/build/assets/app-Cyd-Yril.css
  • public/build/assets/app-DCb96HGE.js
  • public/build/assets/app-DyABguZv.css
  • public/build/assets/app-x-0rverM.js
  • public/build/manifest.json
  • public/images/illustrations/consultation-1200.webp
  • public/images/illustrations/consultation-480.webp
  • public/images/illustrations/consultation-768.webp
  • public/images/illustrations/exercise-1200.webp
  • public/images/illustrations/exercise-480.webp
  • public/images/illustrations/exercise-768.webp
  • public/images/illustrations/knee-1200.webp
  • public/images/illustrations/knee-480.webp
  • public/images/illustrations/knee-768.webp
  • public/images/illustrations/mobility-1200.webp
  • public/images/illustrations/mobility-480.webp
  • public/images/illustrations/mobility-768.webp
  • public/images/illustrations/neck-1200.webp
  • public/images/illustrations/neck-480.webp
  • public/images/illustrations/neck-768.webp
  • public/images/illustrations/shoulder-1200.webp
  • public/images/illustrations/shoulder-480.webp
  • public/images/illustrations/shoulder-768.webp
  • public/images/illustrations/sports-1200.webp
  • public/images/illustrations/sports-480.webp
  • public/images/illustrations/sports-768.webp
  • public/robots.txt
  • public/sitemap.xml
  • resources/css/app.css
  • resources/js/analytics.js
  • resources/js/app.js
  • resources/js/motion.js
  • resources/views/components/contact-form.blade.php
  • resources/views/components/layouts/app.blade.php
  • resources/views/components/site/footer.blade.php
  • resources/views/components/site/header.blade.php
  • resources/views/components/site/image.blade.php
  • resources/views/components/site/phone.blade.php
  • resources/views/components/site/section-heading.blade.php
  • resources/views/components/site/service-card.blade.php
  • resources/views/components/site/testimonial-card.blade.php
  • resources/views/components/site/visit-card.blade.php
  • resources/views/home.blade.php
  • resources/views/page.blade.php
  • resources/views/sections/about.blade.php
  • resources/views/sections/benefits.blade.php
  • resources/views/sections/contact.blade.php
  • resources/views/sections/hero.blade.php
  • resources/views/sections/location.blade.php
  • resources/views/sections/services.blade.php
  • resources/views/sections/testimonials.blade.php
  • resources/views/sections/visit.blade.php
  • resources/views/sitemap.blade.php
  • routes/web.php
  • tests/Feature/ContactFormTest.php
  • tests/Feature/DeploymentPreflightOrderTest.php
  • tests/Feature/EnvironmentVisibilityTest.php
  • tests/Feature/HomepageSeoTest.php
  • tests/Feature/HomepageTreatmentImagesTest.php
  • tests/Feature/ImageCarouselTest.php
  • tests/Feature/ProductionPreflightTest.php
  • tests/Feature/PublicationContentTest.php
  • tests/Feature/ResponsiveImageryTest.php
  • tests/Feature/ServiceInventoryTest.php
  • tests/Feature/SiteHeaderTest.php
  • tests/Feature/SitePagesTest.php
  • tests/Feature/TestimonialsTest.php
  • tests/analytics.test.js
  • tests/motion.test.js
 _______________________________________
< Your code's Big O notation: `O(WTF)`. >
 ---------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Valourite-Sfotware Valourite-Sfotware changed the title Improve local SEO structure and appointment enquiries Restore original layouts with local SEO and enquiry safeguards Sep 14, 2026
@Valourite-Sfotware Valourite-Sfotware changed the title Restore original layouts with local SEO and enquiry safeguards Restore original layouts with blue branding, local SEO and enquiry safeguards Sep 14, 2026
@Valourite-Sfotware Valourite-Sfotware changed the title Restore original layouts with blue branding, local SEO and enquiry safeguards Publish eight services with blue design, local SEO and enquiry safeguards Sep 15, 2026
@Dayne-Valourite
Dayne-Valourite marked this pull request as ready for review September 18, 2026 08:31
@Dayne-Valourite
Dayne-Valourite merged commit 03c93c4 into main Sep 18, 2026
4 of 5 checks passed
@Dayne-Valourite
Dayne-Valourite deleted the feature/local-seo-patient-journey branch September 18, 2026 08:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants