A visual map of all taxonomies used across the site.
Related: See Site Architecture for diagrams showing how taxonomies are generated, and Third-Party Libraries for dependencies.
┌─────────────────────────────────────────────────────────────────────────┐
│ SITE TAXONOMY STRUCTURE │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 1. BLOG TAGS (Standard Eleventy Tags) │
├─────────────────────────────────────────────────────────────────────────┤
│ Source: Front matter `tags:` field (array) │
│ URL: /blog/tag/{tag}/ │
│ Template: blog/tags.html │
│ Collection: collections.{tag} (auto-generated by Eleventy) │
│ │
│ Special Tags with Descriptions: │
│ • trip-report → Custom template: tripreports.liquid │
│ • art → "Blog posts and pages about my arts" │
│ • journal → "For writing that's more introspective and personal" │
│ │
│ Example Front Matter: │
│ tags: │
│ - post │
│ - trip-report │
│ │
│ Display: Shown in blog post footer (excludes 'post' tag) │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 2. CONCERT TAXONOMIES │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🎤 ARTISTS │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ Source: Front matter `concerts.artist` │ │
│ │ Can be: string OR array │ │
│ │ URL: /artist/{artist}/ │ │
│ │ Template: src/artist.liquid │ │
│ │ Collection: collections.artists │ │
│ │ │ │
│ │ Filters: │ │
│ │ • primaryArtist(concerts) → Festival name or first artist │ │
│ │ • otherArtists(concerts) → All artists except primary │ │
│ │ • allArtists(concerts) → All artists as comma-separated string │ │
│ │ • isFestival(concerts) → Boolean │ │
│ │ │ │
│ │ Example Front Matter: │ │
│ │ concerts: │ │
│ │ artist: │ │
│ │ - Diiv │ │
│ │ - Pill │ │
│ │ venue: Arts Riot │ │
│ │ festival: "Festival Name" (optional) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🏛 VENUES │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ Source: Front matter `concerts.venue` (string) │ │
│ │ URL: /venue/{venue}/ │ │
│ │ Template: src/venue.liquid │ │
│ │ Collection: collections.venues │ │
│ │ │ │
│ │ Example Front Matter: │ │
│ │ concerts: │ │
│ │ venue: Arts Riot │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 3. TRIP REPORT TAXONOMIES │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🏔 PEAKS │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ Source: Front matter `trips.peaks` (array of objects) │ │
│ │ Each peak object has: { name, elevation } │ │
│ │ URL: /peak/{peakName}/ │ │
│ │ Template: src/peak.liquid │ │
│ │ Collection: collections.peaks │ │
│ │ │ │
│ │ Example Front Matter: │ │
│ │ trips: │ │
│ │ peaks: │ │
│ │ - name: Stowe pinnacle │ │
│ │ elevation: 2650 │ │
│ │ trail: Stowe Pinnacle Trail │ │
│ │ distance: 3.2 miles │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 4. LOCATION TAXONOMIES │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🧭 STATES │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ Source: Front matter `location.state` (string) │ │
│ │ URL: /state/{stateName}/ │ │
│ │ Template: src/state.liquid │ │
│ │ Collection: collections.states │ │
│ │ │ │
│ │ Example Front Matter: │ │
│ │ location: │ │
│ │ state: Vermont │ │
│ │ town: Stowe │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🏘 TOWNS │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ Source: Front matter `location.town` (string) │ │
│ │ URL: /town/{townName}/ │ │
│ │ Template: src/town.liquid │ │
│ │ Collection: collections.towns │ │
│ │ │ │
│ │ Example Front Matter: │ │
│ │ location: │ │
│ │ town: Stowe │ │
│ │ state: Vermont │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ TAXONOMY RELATIONSHIPS │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Blog Post │
│ ├─→ Tags (multiple) │
│ │ └─→ /blog/tag/{tag}/ │
│ │ │
│ ├─→ Concerts (optional) │
│ │ ├─→ Artists (single or multiple) │
│ │ │ └─→ /artist/{artist}/ │
│ │ └─→ Venue (single) │
│ │ └─→ /venue/{venue}/ │
│ │ │
│ ├─→ Trips (optional) │
│ │ └─→ Peaks (multiple objects) │
│ │ └─→ /peak/{peakName}/ │
│ │ │
│ └─→ Location (optional) │
│ ├─→ State (single) │
│ │ └─→ /state/{stateName}/ │
│ └─→ Town (single) │
│ └─→ /town/{townName}/ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ COLLECTION GENERATION │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ All custom collections are generated in: src/taxonomy.js │
│ │
│ Process: │
│ 1. Iterate through all items in collections.all │
│ 2. Extract unique values from specific front matter fields │
│ 3. Store in Set to ensure uniqueness │
│ 4. Return sorted array │
│ │
│ Collections Generated: │
│ • collections.artists → from concerts.artist │
│ • collections.venues → from concerts.venue │
│ • collections.peaks → from trips.peaks[].name │
│ • collections.states → from location.state │
│ • collections.towns → from location.town │
│ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ URL SLUGIFICATION │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ All taxonomy URLs use slugification: │
│ • "Stowe Pinnacle" → "stowe-pinnacle" │
│ • "Arts Riot" → "arts-riot" │
│ │
│ Filters: │
│ • slugify → Converts to URL-friendly format │
│ • unslugify → Converts back to display format │
│ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ DISPLAY IN POST FOOTER │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Taxonomy links appear in blog post footer (_includes/blog.liquid): │
│ │
│ 1. Blog Tags (if present, excludes 'post') │
│ 2. Artists (if concerts.artist exists) │
│ 3. Venues (if concerts.venue exists) │
│ 4. Peaks (if trips.peaks exists) │
│ 5. States (if location.state exists) │
│ 6. Towns (if location.town exists) │
│ │
│ CSS Classes: │
│ • .tax-link.artist │
│ • .tax-link.venue │
│ • .tax-link.peak │
│ • .tax-link.state │
│ • .tax-link.town │
│ │
└─────────────────────────────────────────────────────────────────────────┘