Clearances in Cornwall (CiC) — Jekyll Project Report
================================================================================
AI INSTRUCTIONS — READ FIRST — NON NEGOTIABLE
- Only give Bash commands for the terminal
- No downloads, no Ruby edits, no explanations, no sed examples
- No apologies, no status updates, no file contents, no questions
- Just copy-paste commands in order
- If something fails, the next Bash command will debug/fix it
- Nothing else. Ever.
- Never give downloads for customer to upload
- Just give the customer the command to copy and paste into Ubuntu terminal
- Shell is ZSH — bash array syntax (declare -A) does NOT work
- Use while/read with pipe-delimited data for bulk operations instead
================================================================================
AI BEHAVIOURAL RULES — MANDATORY — READ BEFORE EVERY RESPONSE
================================================================================
These rules exist because the AI repeatedly failed simple tasks by not following
simple instructions. Every rule below was learned the hard way.
RULE 1: WHEN A LAYOUT WORKS, COPY IT EXACTLY
The homepage (home.html) is the confirmed working reference template.
When replicating any page layout, read home.html first and copy its exact
CSS and HTML structure. Only change the text content. Never rewrite from
scratch. Never introduce new CSS classes or layout patterns not in home.html.
RULE 2: READ THE WORKING FILE BEFORE TOUCHING ANYTHING
Before modifying any layout, cat the working reference file and read it.
The answer is always already there. Do not generate new code when working
code already exists.
RULE 3: NEVER USE SED FOR MULTI-LINE REPLACEMENTS
sed fails silently on multi-line patterns in zsh. Use Python or rewrite
the entire file with cat ENDOFFILE. Never attempt sed multi-line fixes.
RULE 4: WHEN A FIX FAILS ONCE, DO NOT TRY VARIATIONS
If a command fails, do not attempt 3, 4, 5 variations of the same approach.
Stop. Rewrite the file cleanly from scratch using the working reference.
RULE 5: WHEN TOLD TO STOP, STOP IMMEDIATELY
If the human says stop, stop. Do not acknowledge and then do the same thing
again. Wait for the next instruction.
RULE 6: NEVER OVERCOMPLICATE
If the fix is one line, make it one line.
If the fix is a clean rewrite, do a clean rewrite.
Never introduce Python regex, head/tail file splitting, or multi-step
surgical edits when a simple rewrite would work.
RULE 7: HOME.HTML IS THE MASTER TEMPLATE
Every page on this site must follow the exact structure of home.html:
nav → hero → hero-mobile-text → trust-section → gallery-section →
content sections → cta-bar → footer
Do not deviate from this structure on any page.
RULE 8: DO NOT PLACE GALLERY IMAGES INSIDE FLEX CONTAINERS
The gallery-section and gallery-grid must always be a top-level section,
never nested inside another flex or grid container.
RULE 9: VERIFY THE BUILT FILE AFTER EVERY BUILD
After bundle exec jekyll build, always grep the relevant _site output file
to confirm the change is present before telling the human it is done.
RULE 10: THE HUMAN IS ALWAYS RIGHT ABOUT WHAT THEY CAN SEE
If the human says the page looks wrong, it is wrong. Do not suggest it is
a cache issue until the built file has been verified. Check the source first.
RULE 11: NEVER USE GLOBAL FOR LOOPS WITH HEREDOC IN ZSH
zsh event not found errors occur when heredoc content contains ! or special
chars inside for loops. Use Python for multi-file operations instead.
RULE 12: ALWAYS CHECK THE EXISTING SITE BEFORE BUILDING ANYTHING NEW
Before building any new page or layout, fetch the live WordPress equivalent
and read its structure. Never guess or invent structure.
================================================================================
AI FAILURE RECORD
================================================================================
FAILURE 1: Not reading the working homepage template before replicating pages.
Fix: Always cat home.html first. Copy it exactly. Change text only.
FAILURE 2: Placing gallery images inside a flex container.
Fix: gallery-section must always be top-level, never inside intro-section.
FAILURE 3: Using sed for multi-line replacements in zsh.
Fix: Use Python or full file rewrites only.
FAILURE 4: Overcomplicating one-line fixes with multi-step approaches.
Fix: If it needs more than one step, rewrite the whole file.
FAILURE 5: Ignoring direct instructions to stop.
Fix: Stop means stop. Wait for next instruction.
FAILURE 6: Not checking existing 8 service cards before answering questions
about site structure — required human to point to own services.html file.
Fix: Always grep/cat relevant files before answering structural questions.
ROOT CAUSE: AI prioritised generating new code over reading working code.
HOW TO AVOID IN FUTURE:
1. Read the working reference file first
2. Copy working patterns exactly
3. Rewrite whole files cleanly when in doubt
4. Stop immediately when told
5. Never attempt more than one variation of a failed fix
6. Verify built output after every build
7. Trust what the human sees
8. Always check existing site pages before building new ones
================================================================================
1. Overview
================================================================================
Clearances in Cornwall (CiC) is a static website built using the Jekyll static
site generator. The system consists of Markdown content pages, HTML layout
templates, configuration files, and static assets. The site is compiled by
Jekyll into a generated output directory used for deployment on Plesk.
The system functions as a static marketing website with a contact form handled
by a PHP script, and location-based SEO landing pages built using reusable
Liquid templates.
Business name: Clearances in Cornwall
Owner: Darren
Phone: 07827619726
Email: info@clearancesincornwall.co.uk
Live WordPress: https://clearancesincornwall.co.uk (being deleted)
Jekyll URL: https://www.clearancesincornwall.co.uk
Shell: zsh (Ubuntu 24)
Working dir: /home/chubert/cic
Build output: /home/chubert/cic/_site
================================================================================
2. System Architecture
================================================================================
cic/
├── Gemfile
├── Gemfile.lock
├── _config.yml
├── _data/
│ └── portfolio.yml (present but NOT referenced anywhere)
├── _layouts/
│ ├── home.html (MASTER TEMPLATE — all pages copy this)
│ ├── about.html
│ ├── services.html
│ ├── contact.html
│ ├── location.html (generates 138 house clearance location pages)
│ ├── privacy-policy.html
│ ├── cookie-policy.html
│ └── terms-and-conditions.html
│ (TO BE CREATED:)
│ └── service-hub.html (reusable service hub page template)
│ └── service-location.html (reusable service location page template)
├── _site/ (compiled output - never edit directly)
├── assets/
│ ├── css/ (empty - all CSS is inline in layouts)
│ ├── js/ (empty - all JS is inline in layouts)
│ └── images/
│ ├── Clearances-in-Cornwall-Van-1.webp
│ ├── Rubbish-Removal-Clearances-in-Cornwall-29.webp
│ └── Rubbish-Removal-Clearances-in-Cornwall-27.webp
├── index.html (homepage)
├── about-us.md
├── services.md
├── contact.md
├── privacy-policy.md
├── cookie-policy.md
├── terms-and-conditions.md
├── house-clearance-[slug].md (138 location pages — already built)
├── send-quote.php (excluded from build, runs on Plesk)
├── CIC-PROJECT-REPORT.md (this file)
└── AI-FAILURE-REPORT.md (merged into this file)
TO BE CREATED:
├── services/
│ ├── house-clearance-cornwall/
│ │ └── index.md + [location]/index.md x138
│ ├── probate-clearance-cornwall/
│ │ └── index.md + [location]/index.md x138
│ ├── removals-cornwall/
│ │ └── index.md + [location]/index.md x138
│ ├── rubbish-removal-cornwall/
│ │ └── index.md + [location]/index.md x138
│ ├── end-of-tenancy-clearance-cornwall/
│ │ └── index.md + [location]/index.md x138
│ ├── hoarder-clearance-cornwall/
│ │ └── index.md + [location]/index.md x138
│ ├── garden-garage-clearance-cornwall/
│ │ └── index.md + [location]/index.md x138
│ └── commercial-clearance-cornwall/
│ └── index.md + [location]/index.md x138
================================================================================
3. Full Site URL Hierarchy
================================================================================
LEVEL 1 — Homepage
/
LEVEL 2 — Core pages
/about-us/
/services/
/contact/
/privacy-policy/
/cookie-policy/
/terms-and-conditions/
LEVEL 3 — House clearance location pages (already built — 138 pages)
/house-clearance-[location-slug]/
e.g. /house-clearance-truro/
LEVEL 3 — Service hub pages (8 services — to be built)
/services/house-clearance-cornwall/
/services/probate-clearance-cornwall/
/services/removals-cornwall/
/services/rubbish-removal-cornwall/
/services/end-of-tenancy-clearance-cornwall/
/services/hoarder-clearance-cornwall/
/services/garden-garage-clearance-cornwall/
/services/commercial-clearance-cornwall/
LEVEL 4 — Service location pages (8 services x 138 locations = 1,104 pages)
/services/house-clearance-cornwall/[location-slug]/
/services/probate-clearance-cornwall/[location-slug]/
/services/removals-cornwall/[location-slug]/
/services/rubbish-removal-cornwall/[location-slug]/
/services/end-of-tenancy-clearance-cornwall/[location-slug]/
/services/hoarder-clearance-cornwall/[location-slug]/
/services/garden-garage-clearance-cornwall/[location-slug]/
/services/commercial-clearance-cornwall/[location-slug]/
Example — all 8 service URLs for Truro:
/services/house-clearance-cornwall/truro/
/services/probate-clearance-cornwall/truro/
/services/removals-cornwall/truro/
/services/rubbish-removal-cornwall/truro/
/services/end-of-tenancy-clearance-cornwall/truro/
/services/hoarder-clearance-cornwall/truro/
/services/garden-garage-clearance-cornwall/truro/
/services/commercial-clearance-cornwall/truro/
================================================================================
4. The 8 Services
================================================================================
- House Clearance → /services/house-clearance-cornwall/
- Probate Clearance → /services/probate-clearance-cornwall/
- Removals → /services/removals-cornwall/
- Rubbish & Waste → /services/rubbish-removal-cornwall/
- End of Tenancy Clearance → /services/end-of-tenancy-clearance-cornwall/
- Hoarder Clearance → /services/hoarder-clearance-cornwall/
- Garden & Garage Clearance→ /services/garden-garage-clearance-cornwall/
- Commercial Clearance → /services/commercial-clearance-cornwall/
================================================================================
5. Master Page Structure — ALL PAGES MUST FOLLOW THIS
================================================================================
Every page on this site follows this exact structure from home.html:
- nav (sticky, #0a1f44 navy, #d4af37 gold text, hamburger on mobile)
- .hero (full width van image, text overlaid at BOTTOM on desktop)
- .hero-mobile-text (hidden desktop, shown mobile in navy bar BENEATH image)
- .trust-section (#f5f7fa, trust badges as blue pills, green CTAs)
- .gallery-section (2 images side by side — ALWAYS top-level, never in flex)
- page-specific content (.section-wrap, .about-content etc)
- .cta-bar (#0a4b78 dark blue, green buttons)
- footer (#0a1f44 navy, #d4af37 gold headings, 3 columns)
- sticky buttons (global — Ring Darren bottom-left, Free Quote bottom-right)
- exit popup (global — mouseleave trigger, ESC to close)
CRITICAL: gallery-section must ALWAYS be top-level. Never nest inside flex/grid.
================================================================================
6. Service Hub Page Structure (from live site)
================================================================================
Each /services/[service]-cornwall/ page follows this layout:
- Nav
- Hero — van image, H1 "[Service] Services in Cornwall", Call/Contact btns
- Trust section — "Why Choose Cornwall Clearances for [Service]?"
Badges: Fully Insured, Certified Team, Guaranteed Workmanship,
Serving Cornwall Since 2015, Registered Waste Carrier with Environment Agency
CTAs: Call Us (green), Contact Us (green)
- Gallery — 2 images (Rubbish-29 and Rubbish-27)
- Intro — "Professional [Service] Services" H2, description text
- CTA bar — #0a4b78, "Need [Service] in Cornwall?", green buttons
- Location accordion grid (4 regions — see Section 9)
- Final CTA box — #0073aa, phone link, get quote button
- Footer
- Sticky buttons (global)
- Exit popup (global)
Jekyll layout file to create: _layouts/service-hub.html
Front matter variables:
layout: service-hub
title: [Service] Cornwall | Clearances in Cornwall
service_name: [e.g. Removals]
service_slug: [e.g. removals-cornwall]
service_tagline: [e.g. Professional, reliable removals across Cornwall]
service_desc: [description paragraph]
description: [meta description]
================================================================================
7. Service Location Page Structure
================================================================================
Each /services/[service]-cornwall/[location]/ page follows the same structure
as the existing location.html but with service-specific content.
Jekyll layout file to create: _layouts/service-location.html
Front matter variables:
layout: service-location
title: [Service] [Location] | Clearances in Cornwall
location: [e.g. Truro]
location_slug: [e.g. truro]
service_name: [e.g. Removals]
service_slug: [e.g. removals-cornwall]
description: [meta description]
================================================================================
8. Layout and Template Layer
================================================================================
Rendering chains (existing):
index.html → _layouts/home.html (MASTER TEMPLATE)
about-us.md → _layouts/about.html
services.md → _layouts/services.html
contact.md → _layouts/contact.html
privacy-policy.md → _layouts/privacy-policy.html
cookie-policy.md → _layouts/cookie-policy.html
terms-and-conditions.md → _layouts/terms-and-conditions.html
house-clearance-[x].md → _layouts/location.html (138 pages)
Rendering chains (to be created):
services/[service]/index.md → _layouts/service-hub.html
services/[service]/[location]/index.md → _layouts/service-location.html
================================================================================
9. Location Grid — Regions and Locations
================================================================================
Used on all service hub pages. 4 expandable regions using
accordion pattern.
Locations listed in — 4 columns desktop,
3 cols at 992px, 2 cols at 768px, 1 col at 480px.
Link pattern: /services/[service-slug]/[location-slug]/
NORTH CORNWALL:
Boscastle, Bude, Camelford, Crantock, Delabole, Egloshayle, Newquay,
Padstow, Port Isaac, Porthtowan, Portreath, Rock, St Agnes, St Eval,
St Mabyn, St Merryn, St Teath, St Tudy, Tintagel, Wadebridge
SOUTH CORNWALL:
Falmouth, Fowey, Gorran Haven, Grampound, Mevagissey, Mylor Bridge,
Penryn, Polgooth, Polruan, Portscatho, St Austell, St Mawes,
St Stephen, Sticker, Tregony, Tywardreath
EAST CORNWALL:
Bodmin, Callington, Calstock, Cawsand, Dobwalls, Downderry, Gunnislake,
Kelly Bray, Kingsand, Landrake, Lanivet, Launceston, Liskeard, Looe,
Lostwithiel, Menheniot, Millbrook, Pelynt, Pensilva, Saltash, St Blazey,
St Breward, St Cleer, St Dominick, St Germans, Torpoint
WEST CORNWALL:
Ashton, Blackwater, Breage, Budock Water, Bugle, Camborne, Carbis Bay,
Carey Park, Carharrack, Carlyon Bay, Carnon Downs, Chacewater,
Connor Downs, Constantine, Crowlas, Cubert, Devoran, Duporth, Flushing,
Four Lanes, Foxhole, Fraddon, Goldsithney, Goonhavern, Grampound Road,
Hayle, Helston, Illogan, Indian Queens, Kilkhampton, Lanner, Lelant,
Lizard, Longrock, Madron, Marazion, Marhamchurch, Mawgan, Mawnan Smith,
Mount Hawke, Mousehole, Mullion, Nanpean, Newlyn, Pendeen, Penpol,
Penwith, Penwithick, Penzance, Perranarworthal, Perranporth,
Playing Place, Ponsanooth, Pool, Porthleven, Praze-an-Beeble, Probus,
Quintrell Downs, Reawla, Redruth, Roche, Shortlanesend, St Anns Chapel,
St Buryan, St Columb Major, St Day, St Dennis, St Erme, St Erth, St Ives,
St Just, St Keverne, St Newlyn East, Stenalees, Stithians, Stratton,
Summercourt, Threemilestone, Tolvaddon, Tresillian, Trewoon, Trispen,
Troon, Truro, Week St Mary, Withnoe
================================================================================
## 10. Location Grid CSS (exact — copy from live site)
================================================================================
.region-container{margin-bottom:15px;border:1px solid #e1e1e1;border-radius:8px;overflow:hidden;}
summary{background-color:#f4f7f9;padding:15px 20px;font-weight:700;font-size:18px;
cursor:pointer;list-style:none;display:flex;justify-content:space-between;
align-items:center;transition:background 0.3s ease;border-left:4px solid #0056b3;}
summary::-webkit-details-marker{display:none;}
summary:after{content:"+";font-size:20px;font-weight:700;}
details[open] summary:after{content:"-";}
summary:hover{background-color:#e9eff5;color:#0056b3;}
.location-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;
padding:20px;background-color:#fff;}
.location-grid li{list-style:none;margin-bottom:5px;font-size:14px;}
.location-grid a{text-decoration:none;color:#555;transition:color 0.2s;}
.location-grid a:hover{color:#0056b3;text-decoration:underline;}
@media(max-width:992px){.location-grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:768px){.location-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:480px){.location-grid{grid-template-columns:1fr;}}
.cta-box{text-align:center;padding:35px;background:#0073aa;color:#fff;
border-radius:8px;margin-top:30px;box-shadow:0 4px 15px rgba(0,0,0,0.1);}
.cta-box h3{color:#fff;margin-top:0;font-size:24px;}
.cta-btn{display:inline-block;padding:14px 30px;background-color:#fff;
color:#0073aa;text-decoration:none;border-radius:5px;font-weight:700;margin-top:15px;}
.tel-link{color:#fff;text-decoration:none;font-size:24px;display:block;
margin-top:10px;font-weight:700;}
================================================================================
## 11. Existing Location Landing Page System (house-clearance-[slug])
================================================================================
Template: _layouts/location.html
URL pattern: /house-clearance-[slug]/
Total pages: 138
Front matter required:
---
layout: location
title: House Clearance [Location] | Clearances in Cornwall
location: [Location Name]
location_slug: [url-slug]
description: [meta description]
---
Liquid variables: {{ page.location }}, {{ page.location_slug }}
Location template section order:
1. Nav
2. Full-width van image (top, no text overlay)
3. Trust badges section (H1 with location, blue pills, green CTAs)
4. 3-image gallery
5. 4 core service cards (alternating blue/yellow gradients)
6. How to Book 3-step cards
7. Customer reviews cards
8. Generic dark blue CTA bar
9. 3 hover service cards with emoji icons (location-specific)
10. Detailed content: H2/H3, checklist, prices, local reviews, 3 CTAs
11. Location-specific dark blue CTA bar
12. Footer
13. Sticky buttons (global)
14. Exit popup (global)
================================================================================
## 12. Navigation
================================================================================
All pages share identical sticky navigation:
/ — Home
/about-us/ — About Us
/services/ — Services
/contact/ — Contact Us
Desktop: gold (#d4af37) on navy (#0a1f44)
Mobile: hamburger toggles nav ul .open class via inline JS
================================================================================
## 13. Colour Scheme
================================================================================
Navy nav/footer background: #0a1f44
Mid blue headings/CTA bar: #0a4b78
Button blue: #0d3b91
Dark card heading: #003366
Dark card icon colour: #0a3d62
Green CTA buttons: #006400
Gold nav text: #d4af37
Gold nav hover: #f5d76e
Gold card borders: #ffd700
Card gradient blue: linear-gradient(135deg, #ffffff, #e6f2ff)
Card gradient yellow: linear-gradient(135deg, #ffffff, #fff8e1)
Trust section background: #f5f7fa
Location grid CTA box: #0073aa
Body background: #ffffff
================================================================================
## 14. Typography
================================================================================
Font family: Arial, sans-serif (throughout — no external fonts)
================================================================================
## 15. Images
================================================================================
All images stored locally: /assets/images/
Format: WebP. No external image URLs anywhere in codebase.
Clearances-in-Cornwall-Van-1.webp
→ Hero image on ALL pages (desktop overlay at bottom, mobile below image)
→ Full-width top image on location pages
Rubbish-Removal-Clearances-in-Cornwall-29.webp
→ Gallery image 1 (all pages)
Rubbish-Removal-Clearances-in-Cornwall-27.webp
→ Gallery image 2 (all pages)
Zone.Identifier files were removed. Do not recreate.
================================================================================
## 16. Global Elements (on every page)
================================================================================
STICKY BUTTONS:
Bottom-left: Ring Darren — green (#006400), links to tel:07827619726
Bottom-right: Free Quote — blue (#0d3b91), links to /contact/
Both: position:fixed, bottom:20px, z-index:9999, border-radius:6px
EXIT POPUP:
Trigger: mouseleave when clientY <= 0 (user moves cursor to top of browser)
Only shows once per page load (exitShown flag)
ESC key closes popup
Content: "Wait — Before You Go!" heading, description, Ring Darren (green)
and Get a Free Quote (blue) buttons
Background overlay: rgba(0,0,0,0.7)
Popup box: white, max-width 500px, border-radius 12px
================================================================================
## 17. Contact Form & PHP Backend
================================================================================
File: send-quote.php (project root, excluded from Jekyll build)
Runs on: Plesk server directly
Method: POST from /contact/ page
Fields: firstname, surname, phone, email, postcode, service, message
Service dropdown options:
House Clearance, Garage Clearance, Shed Clearance, Garden Clearance,
Attic & Loft Clearance, Rubbish Clearance, Scrap Collection,
Hotel / Guest House Clearance, House / Property Removal Service, Other
Success: redirect to /contact/?status=success
Failure: redirect to /contact/?status=error
Sends to: info@clearancesincornwall.co.uk
Reply-To: sender's email address
Server: Plesk with Roundcube
================================================================================
## 18. SEO & Schema
================================================================================
- jekyll-seo-tag: meta tags, Open Graph, Twitter Card
- jekyll-sitemap: /sitemap.xml
- jekyll-feed: /feed.xml
- Location pages: LocalBusiness JSON-LD schema (areaServed = location)
- All pages: pretty permalink style (directory URLs)
================================================================================
## 19. Configuration (_config.yml)
================================================================================
title: Clearances in Cornwall
description: Professional house and property clearance services across Cornwall.
url: https://www.clearancesincornwall.co.uk
permalink: pretty
markdown: kramdown
plugins: jekyll-feed, jekyll-seo-tag, jekyll-sitemap
exclude: send-quote.php, Gemfile, Gemfile.lock
================================================================================
## 20. Dependency Management (Gemfile)
================================================================================
gem "jekyll", "~> 4.4"
gem "webrick", "~> 1.8"
gem "jekyll-feed"
gem "jekyll-seo-tag"
gem "jekyll-sitemap"
================================================================================
## 21. Build & Deployment
================================================================================
Build: bundle exec jekyll build
Serve local: bundle exec jekyll serve --port 4000
Output: _site/
Deploy to: Plesk — upload contents of _site/ to document root
PHP: send-quote.php uploaded separately to document root (not in _site)
================================================================================
## 22. Generated Site Output (_site/) — current state
================================================================================
_site/
├── index.html
├── about-us/index.html
├── services/index.html
├── contact/index.html
├── privacy-policy/index.html
├── cookie-policy/index.html
├── terms-and-conditions/index.html
├── house-clearance-[slug]/index.html (x138)
├── feed.xml
├── robots.txt
├── sitemap.xml
└── assets/images/
├── Clearances-in-Cornwall-Van-1.webp
├── Rubbish-Removal-Clearances-in-Cornwall-29.webp
└── Rubbish-Removal-Clearances-in-Cornwall-27.webp
TO BE ADDED to _site/ once service pages are built:
├── services/house-clearance-cornwall/index.html
├── services/house-clearance-cornwall/[location]/index.html (x138)
├── services/probate-clearance-cornwall/index.html
├── services/probate-clearance-cornwall/[location]/index.html (x138)
├── services/removals-cornwall/index.html
├── services/removals-cornwall/[location]/index.html (x138)
├── services/rubbish-removal-cornwall/index.html
├── services/rubbish-removal-cornwall/[location]/index.html (x138)
├── services/end-of-tenancy-clearance-cornwall/index.html
├── services/end-of-tenancy-clearance-cornwall/[location]/index.html (x138)
├── services/hoarder-clearance-cornwall/index.html
├── services/hoarder-clearance-cornwall/[location]/index.html (x138)
├── services/garden-garage-clearance-cornwall/index.html
├── services/garden-garage-clearance-cornwall/[location]/index.html (x138)
├── services/commercial-clearance-cornwall/index.html
└── services/commercial-clearance-cornwall/[location]/index.html (x138)
Total pages when complete: 7 core + 138 house-clearance + 8 service hubs
+ 1,104 service location pages = 1,257 pages
================================================================================
## 23. Key Architectural Rules
================================================================================
1. ALL CSS and JS is inline inside each layout HTML file
2. home.html is the master template — all pages copy its structure exactly
3. location.html generates all 138 /house-clearance-[slug]/ pages
4. service-hub.html (to be created) generates 8 service hub pages
5. service-location.html (to be created) generates 1,104 service location pages
6. ZSH shell — never use bash declare -A arrays
7. Use while/read with pipe-delimited data for bulk file generation
8. Never edit files inside _site/
9. Never recreate index.md (conflicts with index.html)
10. Never recreate assets/css/main.scss (causes Sass build errors)
11. No WordPress hotlinked image URLs anywhere in codebase
12. Gallery section must always be top-level — never inside a flex container
13. After every build, verify the change in the _site output file
14. Use Python for all multi-file operations — never for loops with heredoc in zsh
================================================================================
## 24. Pending / Known Issues
================================================================================
- Service hub pages not yet built (8 needed)
- Service location pages not yet built (1,104 needed)
- Service card links on services.html currently point nowhere — need updating
to /services/[service-slug]-cornwall/ once hub pages are built
- No favicon currently set
- No Google Analytics / tracking currently set
- _data/portfolio.yml exists but is not referenced anywhere
- send-quote.php needs uploading separately to Plesk (not inside _site)
- Policy pages (privacy, cookie, T&C) may need hero/gallery sections added
to match the master template structure
================================================================================
## 26. UPDATE — Data-Driven Page Generation (Completed)
================================================================================
PROBLEM SOLVED:
All location and service pages are now generated from data files, not
hard-coded individual .md files. This means any change to a location name,
slug, or service is made in one data file and rebuilt once.
DATA FILES:
_data/locations.yml — 142 Cornwall locations (name + slug)
_data/services.yml — 8 services (name, slug, tagline, desc)
PLUGINS:
_plugins/location_pages.rb — generates all /house-clearance-[slug]/ pages
_plugins/service_pages.rb — generates all service hub and location pages
LAYOUTS CREATED:
_layouts/service-hub.html — service hub pages
_layouts/service-location.html — service location pages
PAGE COUNTS (all generated, zero hard-coded .md files):
House clearance location pages: 142 (/house-clearance-[slug]/)
Service hub pages: 8 (/services/[service-slug]/)
Service location pages: 1136 (/services/[service-slug]/[location]/)
Core pages: 7
Total: 1293
SERVICE LINKS FIXED:
Homepage and services page cards now link to correct service hub URLs:
/services/house-clearance-cornwall/
/services/probate-clearance-cornwall/
/services/removals-cornwall/
/services/rubbish-removal-cornwall/
/services/end-of-tenancy-clearance-cornwall/
/services/hoarder-clearance-cornwall/
/services/garden-garage-clearance-cornwall/
/services/commercial-clearance-cornwall/
FOOTER LINKS FIXED:
All footer service links on homepage and services page now point to
correct service hub URLs instead of /services/.
TO CHANGE A LOCATION: edit _data/locations.yml and rebuild
TO CHANGE A SERVICE: edit _data/services.yml and rebuild
TO ADD A LOCATION: add entry to _data/locations.yml and rebuild
TO ADD A SERVICE: add entry to _data/services.yml and rebuild
================================================================================
## 27. UPDATE — SEO & UX Improvements (Completed)
================================================================================
STICKY ANNOUNCEMENT BANNER (global — all pages):
Position: sticky, top:60px (sits below nav), z-index:999
Background: #0a1f44 (navy), Text: #d4af37 (gold)
Content: "Cornwall's Best Quote for Clearance Solutions — Call Darren Free
on 07827619726"
Phone number links to tel:07827619726
Applied to: all 10 layout files
FAQ SECTIONS (location.html + service-location.html):
6 FAQ cards per page using alternating card-blue/card-yellow gradient cards
Questions cover: pricing, response time, insurance, recycling, probate,
subcontractors
FAQPage JSON-LD schema added to of both templates
All questions and answers use {{ page.location }} and {{ page.service_name }}
Liquid variables for unique content per page
PRICING SECTION IMPROVEMENTS:
Pricing cards now use cards-grid flex layout for proper centring
4 pricing tiers: Small (from £150), Medium (from £300), Large (from £500),
Complex (from £800)
Applied to: location.html and service-location.html
GALLERY SECTION IMPROVEMENTS:
Section heading now reads "Clearances in Action in {{ page.location }}
& Across Cornwall" — location-specific
Image alt text updated to include location name for SEO
LOCATION PAGE SEO IMPROVEMENTS (location.html):
Full checklist of 9 services with location keyword in each item
Enhanced schema: priceRange, openingHours, address added to JSON-LD
3 customer reviews with star ratings
"Why Clearances in Cornwall is Your Local Choice in [location]" checklist
8 trust points all location-specific
Canonical URL added
Improved meta description with location, insured, since 2015 keywords
Service cards in content section link to service hub pages
Pricing section with 4 tiers including Hoarder/Heavy from £800
SERVICE LOCATION PAGE SEO IMPROVEMENTS (service-location.html):
Same full SEO treatment as location.html but service-specific
Related services section linking to other service location pages
Cross-linking between service pages for same location
All content uses {{ page.service_name }} and {{ page.location }} variables
COLOUR FIXES:
location.html fully rebranded from old #1a1a2e/#f0c040 scheme to CiC brand
All contrast issues fixed — white text on dark backgrounds throughout
## APPENDIX: Full Audit Findings (21 May 2026)
### ✅ CORRECTED FINDINGS (previous audit errors)
1. **House clearance location pages ARE generated** – all 142 locations exist at `/services/house-clearance-cornwall/[location]/`
2. **Service_pages.rb is fully functional** – generates 18 service hubs + 2,556 service location pages (18 services × 142 locations)
3. **location_pages.rb.disabled is irrelevant** – the active service_pages.rb handles ALL services including house clearance
4. **No missing plugins** – both plugins present in repo and local (one active, one disabled but not needed)
### ❌ ACTUAL ISSUES IDENTIFIED
**Layout violations (5 files):**
- `_layouts/about.html` – gallery-section inside flex/grid container
- `_layouts/home.html` – gallery-section inside flex/grid container
- `_layouts/location.html` – gallery-section inside flex/grid container
- `_layouts/service-location.html` – gallery-section inside flex/grid container
- `_layouts/services.html` – gallery-section inside flex/grid container
**Missing UI elements (1 file):**
- `_layouts/thank-you.html` – missing sticky buttons (position:fixed bottom left/right) and exit popup (mouseleave trigger)
**Live server status:**
- DNS resolution FAILED for `www.clearancesincornwall.co.uk` and `clearancesincornwall.co.uk`
- Server completely unreachable (ping, curl, nc all fail)
- Live site is DOWN – domain not resolving or hosting not configured
### ✅ VERIFIED WORKING COMPONENTS
- All 10 core layout files present (home, about, services, contact, location, service-hub, service-location, privacy-policy, cookie-policy, terms-and-conditions)
- `_data/locations.yml`: 142 valid entries with name/slug
- `_data/services.yml`: 18 valid entries with name/slug/tagline/desc (144 lines)
- Git repository: local and remote in sync (only Gemfile.lock modified locally)
- Backup D: drive (`/mnt/d/All_Projects_Backup/cic`) identical to current working directory
- Sitemap.xml contains all expected URLs (confirmed via sitemap analysis)
### 📊 BUILD OUTPUT STATISTICS
```
Service hub pages: 18/18 ✅
Service location pages: 2,556/2,556 ✅
House clearance pages: 142/142 ✅ (under /services/house-clearance-cornwall/)
Gallery alt attributes: 5,118 found ✅
Internal links: All use relative paths correctly ✅
```
### 🔧 RECOMMENDED ACTIONS (priority order)
1. **Fix DNS/hosting** – restore domain resolution for clearancesincornwall.co.uk (server down)
2. **Fix gallery nesting** – edit 5 layout files to move gallery-section outside flex/grid containers
3. **Add missing UI** – add sticky buttons and mouseleave popup to `_layouts/thank-you.html`
4. **Rebuild and deploy** – `bundle exec jekyll clean && bundle exec jekyll build`
5. **Commit changes** – `git add . && git commit -m "Fix gallery nesting and missing UI" && git push origin main`
### 📝 NOTES
- The earlier "missing location_pages.rb" alert was a false positive caused by checking wrong URL pattern (`/house-clearance-[location]/` instead of `/services/house-clearance-cornwall/[location]/`)
- All 18 services × 142 locations = 2,556 pages are generating correctly from `_data/` files
- No data migration or plugin changes needed – only CSS/layout fixes and DNS resolution
### ✅ Jekyll Best Practices Compliance
- Data files as single source of truth: ✅
- No sed multi-line hacks in audit: ✅
- Build validation with --trace: ✅
- Layout includes minimal logic: ⚠️ (flex/grid nesting violates separation of concerns)
- Git hygiene: ✅ (only uncommitted Gemfile.lock)
================================================================================
## SERVER & DEPLOYMENT
================================================================================
Server IP: 217.154.33.12
Deploy user: root
Plesk vhost: /var/www/vhosts/clearancesincornwall.co.uk/httpdocs/
Live fetch: curl -sL --max-time 15 -H "Host: clearancesincornwall.co.uk" http://217.154.33.12/ -o /tmp/cic_live.html
DNS NOTE: DNS may not resolve. Always use IP + Host header for live fetches.
================================================================================
## LIVE DATA RECOVERY AUDIT (21 May 2026)
================================================================================
LIVE SITE FETCH METHOD:
curl -sL --max-time 15 -H "Host: clearancesincornwall.co.uk" http://217.154.33.12/
LOCATIONS:
Was: 142 — Now: 144
Added from live site: devoran, fraddon
Local-only (not on live): canons-town, carkeel
Committed: "Add devoran and fraddon from live site — locations now 144"
SERVICES:
services.yml: 18 entries — confirmed matching live site content exactly
Live site only serves 4 service hub pages (Jekyll serves all 18)
CONTACT FORM:
Fields: firstname, surname, phone, email, postcode, service, message
Options: House Clearance, Garage Clearance, Shed Clearance, Garden Clearance,
Attic & Loft Clearance, Rubbish Clearance, Scrap Collection,
Hotel / Guest House Clearance, House / Property Removal Service, Other
Status: local contact.html matches live exactly
POLICY PAGES:
Privacy, Cookie, Terms — local layouts match live content exactly
APPENDIX CORRECTION:
"DNS resolution FAILED" finding was incorrect — site IS reachable via IP
DNS may not resolve but server responds on 217.154.33.12 with Host header
================================================================================
## WE BUY HOUSES SERVICE (Added 21 May 2026)
================================================================================
SERVICE ENTRY:
_data/services.yml — name: We Buy Houses
slug: we-buy-houses-cornwall
hub_layout: we-buy-houses
location_layout: we-buy-houses-location
LAYOUTS CREATED:
_layouts/we-buy-houses.html — service hub page
_layouts/we-buy-houses-location.html — 144 location pages (no gallery section)
PLUGIN CHANGE:
_plugins/service_pages.rb updated to support hub_layout and location_layout
overrides per service. All 18 existing services unaffected — fallback to
service-hub and service-location if no override set.
HERO IMAGE:
Source: We Buy Houses Hero Image Clearances in Cornwall.png (2.6MB — deleted)
Output: assets/images/We-Buy-Houses-Hero-Clearances-in-Cornwall.webp (210KB)
Optimised: cwebp -q 82, 1408x768, 92% size reduction
Used on: we-buy-houses.html and we-buy-houses-location.html only
All other layouts continue to use Clearances-in-Cornwall-Van-1.webp
HERO STRUCTURE:
Both layouts use exact home.html hero pattern — img tag + hero-inner overlay
Not background-image. CSS copied exactly from home.html per RULE 1.
PAGE COUNTS (updated):
Service hub pages: 19/19
Service location pages: 2,736 (19 services x 144 locations)
House clearance pages: 144
Core pages: 7
Total: 2,906
CONTENT SOURCE:
Adapted from Quick Sale South West competitor content
Cornwallified: phone 07827619726, email info@clearancesincornwall.co.uk
Testimonials use Cornwall locations (Truro, Falmouth, Newquay)
================================================================================
## GITHUB ACTIONS CI/CD DEPLOY (Added 21 May 2026)
================================================================================
WORKFLOW FILE:
.github/workflows/deploy.yml
Trigger: push to main branch
Runner: ubuntu-latest
STEPS:
1. actions/checkout@v4.2.2 (Node.js 24 compatible)
2. ruby/setup-ruby@v1 — Ruby 3.2 with bundler cache
3. bundle exec jekyll build (JEKYLL_ENV=production)
4. burnett01/rsync-deployments@7.0.1 — rsync _site/ to Plesk
GITHUB SECRETS:
CIC_SSH_KEY — ED25519 private deploy key
DEPLOY_HOST — 217.154.33.12
DEPLOY_USER — root
DEPLOY_PATH — /var/www/vhosts/clearancesincornwall.co.uk/httpdocs/
SSH KEY:
Private: ~/.ssh/github_actions_cic
Public: ~/.ssh/github_actions_cic.pub
Added to: root@217.154.33.12 ~/.ssh/authorized_keys
DEPLOY COMMAND (manual fallback):
rsync -avz --delete ~/cic/_site/ root@217.154.33.12:/var/www/vhosts/clearancesincornwall.co.uk/httpdocs/
NOTE:
send-quote.php is NOT deployed by the workflow — upload manually to Plesk
_site/ is never committed to git — built fresh on every push to main