Site Taxonomy Map

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                                                      │
│                                                                          │
└─────────────────────────────────────────────────────────────────────────┘