Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Vgmzx8VTTTmCskSpQtsLTr
11 KiB
Demo Data Redesign — italy-2026-demo
Date: 2026-06-20
Status: Approved
Goal
Replace the existing patchwork of demo content across three trips with a single, high-quality demo trip (italy-2026-demo) that:
- Follows the real Tuscany cycling route (Campiglia Marittima loop, 8 days)
- Has 12 journal entries with actual photos for realistic gallery/lightbox QA
- Has 4 stories that collectively exercise every story shortcode type
- Is cleanly managed by a single
make demo-load/make demo-resetpair
1. Cleanup
Remove
| Path | Action |
|---|---|
user/docs/demo/trips/japan-korea-2026/ |
Delete entirely |
user/docs/demo/trips/italy-2025/dailies/ |
Delete all entries |
user/docs/demo/trips/italy-2025/04.stories/ |
Delete all stories |
user/docs/demo/trips/italy-2026-demo/dailies/ |
Replace with 12 new entries |
user/docs/demo/trips/italy-2026-demo/04.stories/ |
Replace with 4 new stories |
Italy 2025 keeps its GPX files and page-structure files (trip.md, map.md, stats.md) — only demo-generated entries and stories are removed.
Update CLAUDE.md
Remove the Japan/Korea reference from the demo-load description. New description:
make demo-load— load demo content intoitaly-2026-demotrip (journal entries + stories + GPX)
2. GPX Files
Rename the 4 newly added files to match the existing naming convention. Keep existing day-5/6/8 names unchanged.
| New filename | Original |
|---|---|
day-1-campiglia-to-sugherella.gpx |
2025-10-11_2627663255_TGE Tuscany...Day 1...gpx |
day-2-sugherella-to-orbetello.gpx |
2025-10-12_2630489431_TGE Tuscany...Day 2.gpx |
day-3-orbetello-to-sorano.gpx |
2025-10-13_2632495944_TGE Tuscany...Day 3.gpx |
day-4-sorano-to-val-dorcia.gpx |
2025-10-14_2634086364_TGE Tuscany...Day 4.gpx |
All 7 GPX files live at user/docs/demo/trips/italy-2026-demo/.
3. Journal Entries (12)
Each entry is a directory at user/docs/demo/trips/italy-2026-demo/dailies/<slug>.entry/ containing:
entry.md— frontmatter + one prose paragraph01.jpg…N.jpg— placeholder images (numbered for sort order)
Images are downloaded from https://picsum.photos/seed/<seed>/1200/800 during make demo-load. Seeds are fixed so the same images load every time.
Entry list
| # | Slug | Date/Time | Location | Weather | Photos | Seed prefix |
|---|---|---|---|---|---|---|
| 1 | 2026-09-01-0700-setting-off-from-campiglia |
2026-09-01 07:00 | Campiglia Marittima, Italy | Sunny 27°C | 2 | demo-d1 |
| 2 | 2026-09-02-1130-maremma-in-full-sun |
2026-09-02 11:30 | Maremma, Italy | Sunny 29°C | 3 | demo-d2a |
| 3 | 2026-09-02-1900-the-lagoon-at-dusk |
2026-09-02 19:00 | Orbetello, Italy | Partly cloudy 24°C | 3 | demo-d2b |
| 4 | 2026-09-03-0800-orbetello-morning |
2026-09-03 08:00 | Orbetello, Italy | Sunny 22°C | 2 | demo-d3a |
| 5 | 2026-09-03-1700-tufa-and-towers |
2026-09-03 17:00 | Sorano, Italy | Sunny 26°C | 2 | demo-d3b |
| 6 | 2026-09-04-1500-the-long-climb-north |
2026-09-04 15:00 | Val d'Orcia, Italy | Partly cloudy 23°C | 4 | demo-d4 |
| 7 | 2026-09-05-0830-before-the-heat-arrives |
2026-09-05 08:30 | Pienza, Italy | Sunny 21°C | 2 | demo-d5a |
| 8 | 2026-09-05-1800-into-siena |
2026-09-05 18:00 | Siena, Italy | Sunny 25°C | 3 | demo-d5b |
| 9 | 2026-09-06-2000-florence-by-nightfall |
2026-09-06 20:00 | Florence, Italy | Cloudy 21°C | 3 | demo-d6 |
| 10 | 2026-09-07-1400-one-rest-day |
2026-09-07 14:00 | Florence, Italy | Partly cloudy 22°C | 2 | demo-d7 |
| 11 | 2026-09-08-0730-dawn-on-the-cecina-coast |
2026-09-08 07:30 | Cecina, Italy | Sunny 20°C | 1 | demo-d8a |
| 12 | 2026-09-08-1630-home |
2026-09-08 16:30 | Campiglia Marittima, Italy | Sunny 26°C | 2 | demo-d8b |
Entry coordinates
| # | lat | lng | Notes |
|---|---|---|---|
| 1 | 43.024 | 10.603 | GPX Day 1 start |
| 2 | 42.612 | 11.171 | GPX Day 2 midpoint |
| 3 | 42.442 | 11.218 | GPX Day 2 end (Orbetello) |
| 4 | 42.442 | 11.217 | GPX Day 3 start |
| 5 | 42.683 | 11.715 | GPX Day 3 end (Sorano) |
| 6 | 43.077 | 11.678 | GPX Day 4 end (Pienza/Val d'Orcia) |
| 7 | 43.078 | 11.676 | GPX Day 5 start |
| 8 | 43.318 | 11.335 | GPX Day 5 end (Siena) |
| 9 | 43.767 | 11.253 | GPX Day 6 end (Florence) |
| 10 | 43.769 | 11.255 | Florence (rest day, slight offset) |
| 11 | 43.553 | 10.313 | GPX Day 8 start (Cecina coast) |
| 12 | 43.017 | 10.587 | GPX Day 8 end (Campiglia) |
Entry frontmatter pattern
---
title: '<Title>'
date: '2026-09-NN HH:MM'
template: entry
published: true
hero_image: ''
lat: '<lat>'
lng: '<lng>'
location_city: '<City>'
location_country: 'Italy'
weather_temp_c: <N>
weather_desc: '<Desc>'
---
hero_image is left empty — the template auto-picks media.images|first as hero, which will be 01.jpg.
4. Stories (4)
Each story is a directory at user/docs/demo/trips/italy-2026-demo/04.stories/<slug>/ containing story.md + image files.
Stories are ordered chronologically and geographically along the route. Each story's primary shortcode is different, ensuring all 4 types get QA coverage.
Story list
| # | Slug | Day | Location | Primary shortcode | Also uses |
|---|---|---|---|---|---|
| 1 | 01.sorano-rock-and-time |
3 | Sorano | scrolly-section |
chapter-break, snap-gallery |
| 2 | 02.val-dorcia-at-dawn |
5 | Pienza / Val d'Orcia | snap-gallery |
chapter-break, pull-quote |
| 3 | 03.one-evening-siena |
5 | Siena | pull-quote (with image) |
chapter-break, scrolly-section |
| 4 | 04.florence-without-a-map |
7 | Florence | chapter-break (structural) |
pull-quote, scrolly-section |
Story: 01.sorano-rock-and-time
Structure:
- Intro prose (1 paragraph)
[scrolly-section image="hero.jpg"]— 3 scroll steps separated by---: approach to Sorano, the tufa cliffs close up, entering the gate- Prose bridge (1 paragraph)
[chapter-break image="photo-1.jpg" title="After Dark" number="II"][snap-gallery images="photo-1.jpg,photo-2.jpg"]— alley + view from the walls- Closing prose (1 paragraph)
Images: hero.jpg (town on tufa cliff), photo-1.jpg (narrow medieval alley), photo-2.jpg (view south over valley)
Frontmatter:
title: Sorano: Rock and Time
date: '2026-09-03'
location_name: Sorano
location_country: Italy
lat: 42.683
lng: 11.715
hero_image: hero.jpg
hero_alt: Medieval town of Sorano perched on tufa cliffs
published: true
Story: 02.val-dorcia-at-dawn
Structure:
- Intro prose (1 paragraph — leaving camp before sunrise)
[snap-gallery images="hero.jpg,photo-1.jpg,photo-2.jpg"]— 3 landscape shots: valley at first light, cypress road, distant farmhouse- Prose bridge (1 paragraph — route through the valley floor)
[chapter-break image="photo-1.jpg" title="The Hour Before Heat"][pull-quote](text-only, no image) — a short reflection on cycling rhythms- Closing prose (1 paragraph — reaching Pienza by noon)
Images: hero.jpg (wide valley, golden hour), photo-1.jpg (cypress-lined road), photo-2.jpg (farmhouse on hillside)
Frontmatter:
title: Val d'Orcia at Dawn
date: '2026-09-05'
location_name: Val d'Orcia
location_country: Italy
lat: 43.078
lng: 11.676
hero_image: hero.jpg
hero_alt: Wide Tuscan valley at dawn, long cypress shadows
published: true
Story: 03.one-evening-siena
Structure:
[pull-quote image="hero.jpg" alt="..."]— image-backed opener quote about arriving by bike- Intro prose (1–2 paragraphs — the Campo appearing at the end of a street)
[chapter-break image="photo-1.jpg" title="The Campo" number="I"][scrolly-section image="hero.jpg"]— 3 scroll steps: the square filling up at dusk, a busker, sitting down after 8 hours riding- Closing prose (1 paragraph — finding dinner, the specific relief of sitting still)
Images: hero.jpg (Campo at golden hour from upper rim), photo-1.jpg (stone doorway / Siena street detail)
Frontmatter:
title: One Evening in Siena
date: '2026-09-05'
location_name: Siena
location_country: Italy
lat: 43.318
lng: 11.330
hero_image: hero.jpg
hero_alt: Piazza del Campo at dusk, terracotta rooftops fading to blue
published: true
Story: 04.florence-without-a-map
Structure:
- Intro prose (1 paragraph — rest day, no route, no GPS)
[chapter-break image="hero.jpg" title="Day Seven" number="VII"][snap-gallery images="hero.jpg,photo-1.jpg"]— Arno view + street scene[pull-quote](text-only) — reflection: cycling makes you earn the places; today we got Florence for free[scrolly-section image="photo-1.jpg"]— 3 steps: Uffizi queue they didn't join, a leather market, crossing a bridge at midday light- Closing prose (1 paragraph — tired feet, early bed, tomorrow the coast road home)
Images: hero.jpg (Arno river with Ponte Vecchio), photo-1.jpg (narrow Florence street with washing lines)
Frontmatter:
title: Florence Without a Map
date: '2026-09-07'
location_name: Florence
location_country: Italy
lat: 43.769
lng: 11.255
hero_image: hero.jpg
hero_alt: Arno river at midday with Ponte Vecchio
published: true
5. Makefile Changes
demo-load (full replacement)
New behaviour:
- Create trip folder structure under
user/pages/01.trips/italy-2026-demo/ - Copy page-level markdown files (trip.md, map.md, stats.md, stories.md)
- Copy all 4 stories (with their image files) to
04.stories/ - Copy all 12 journal entries to
01.dailies/ - Copy 7 GPX files to trip root
- Download placeholder images via
curlinto each entry and story folder (skip if file exists) php bin/grav clearcache
Image download pattern for entries (per entry SLUG, images 01.jpg…NN.jpg):
[ -f ".../01.dailies/SLUG/01.jpg" ] || curl -sL "https://picsum.photos/seed/demo-dN-1/1200/800" -o ".../01.jpg"
Seed naming convention: {seed-prefix}-{image-number} e.g. entry 1 (demo-d1) gets seeds demo-d1-1 and demo-d1-2. Story images use prefix demo-s{N} e.g. demo-s1-hero, demo-s1-1, demo-s1-2.
Image sizes: entries 1200x800, story images 1600x1000.
demo-reset (updated)
Remove user/pages/01.trips/italy-2026-demo/ entirely and clear cache. Behaviour unchanged from current, just scoped correctly.
6. trip.md Updates
user/docs/demo/trips/italy-2026-demo/trip.md:
---
title: 'Tuscany 2026'
template: trip
date: '2026-09-01'
date_start: '2026-09-01'
date_end: '2026-09-08'
cover_image: ''
---
Title changed from "Italy 2026 (Demo)" to "Tuscany 2026" — cleaner for a realistic demo.
7. What Is Not Changing
user/pages/01.trips/italy-2025/— real trip page stays; only the demo entries indocs/demo/trips/italy-2025/dailies/anddocs/demo/trips/italy-2025/04.stories/are removeduser/pages/01.trips/japan-korea-2026/— active trip, untouched- GPX files already loaded on the italy-2025 page — untouched
user/config/site.yamlactive_trip— untouched
Implementation Notes
- Write stories first (they define the image filenames), then entries
- Image seeds are fixed strings so
make demo-loadis idempotent - The
|| truepattern oncpcommands is already established in the Makefile — follow it stories.md(the listing page) frontmatter is unchanged- No
hero_imagein entry frontmatter — let the template auto-select01.jpg