Skip to content

feat(site): CI, local dev, SEO plugins, Ruby pin#4

Draft
vishalgattani wants to merge 16 commits into
masterfrom
feat/site-improvements
Draft

feat(site): CI, local dev, SEO plugins, Ruby pin#4
vishalgattani wants to merge 16 commits into
masterfrom
feat/site-improvements

Conversation

@vishalgattani
Copy link
Copy Markdown
Owner

Summary

  • .github/workflows/ci.yml — builds the Jekyll site on every non-master push/PR; runs htmlproofer on internal links
  • scripts/serve.sh — run bash scripts/serve.sh to spin up local dev server at http://localhost:4000 with livereload
  • jekyll-seo-tag + jekyll-sitemap — SEO meta tags and /sitemap.xml, both GitHub Pages whitelisted
  • .ruby-version — pins Ruby to 3.1.0 so CI and GitHub Pages use the same version

Test plan

  • bash scripts/serve.sh → site loads at localhost:4000 with no build errors
  • Push to this branch → CI workflow runs green in Actions tab
  • After merge to master → GitHub Pages deploys successfully

🤖 Generated with Claude Code

vishalgattani and others added 16 commits May 16, 2026 01:36
- .github/workflows/ci.yml: build + htmlproofer on every non-master push/PR
- scripts/serve.sh: local Jekyll dev server at localhost:4000
- jekyll-seo-tag + jekyll-sitemap added to Gemfile and _config.yml
- .ruby-version pinned to 3.1.0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Moves serve.sh from scripts/ into build/ and adds BUILD_INSTRUCTIONS.md
covering macOS prerequisites (Homebrew, rbenv, Ruby 3.1.0, Bundler),
dependency install, and localhost serving with a troubleshooting table.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.1.x reached end of life and no longer receives security updates.
Updated .ruby-version, CI workflow, and BUILD_INSTRUCTIONS.md to 3.3.11.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Checks for and installs Homebrew, rbenv, Ruby 3.3.11, Bundler, and
project gems in sequence. Safe to re-run — each step skips if already
satisfied.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ed up

Without explicit rbenv init, macOS falls back to the system Ruby at
/System/Library/Frameworks/Ruby.framework/Versions/2.6, which doesn't
have the right Bundler version. Adding PATH + rbenv init forces the
pinned 3.3.11 version.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Without this, Jekyll renders build/BUILD_INSTRUCTIONS.md as a site page.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- _config.yml: trips collection (permalink /trips/:name, layout trip)
- _layouts/trip.html: Leaflet.js map at top of each trip page; renders
  dropped pin (place), polyline (road), or dashed great-circle arc (flight)
  from frontmatter stops array
- _includes/trips/trip-card.html: card with OSM static tile thumbnail,
  trip type badge, date, and tags
- _includes/trips/index.html: card-columns grid over site.trips
- _includes/trips/map-section.html: reusable sub-section map include for
  use inside trip markdown bodies
- pages/trips.html: /trips/ listing page in navbar
- _trips/: two sample trips (Colorado place pin, MD→VT road trip with
  a Day 2 section map)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ghts

- trip-card.html: replace broken static image with non-interactive Leaflet
  mini-map (pointer-events: none so card link still works); road trips fetch
  actual route from OSRM public API; flight uses great-circle arc
- trip.html: road trips now fetch OSRM route geometry instead of straight
  line; falls back to straight line if OSRM unavailable; fixed 400px height
- map-section.html: same OSRM routing; fixed 400px height (up from 300px)
- index.html: load Leaflet CSS/JS once for all card maps on listing page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Extract all map rendering into assets/js/trip-map.js (TripMap.render).
trip.html, map-section.html, trip-card.html are now thin wrappers.

New stop types: numbered, emoji, circle, label, polygon, circle_area,
freeform. All support `note` (popup body) and `color` overrides.

Add _trips/2024-08-rockies-demo.md exercising every marker type.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- _posts/2024-08-15-how-to-add-a-trip.md: full reference for trip frontmatter,
  all marker types, section map naming convention, and a minimal example
- _trips/2024-08-rockies-demo.md: add day1_stops so both day1 and day2
  section maps are shown; clarify that any name + _stops works

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
TripMap.render was undefined on /trips/ because trip-map.js was only
loaded in _layouts/trip.html, not in _includes/trips/index.html.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
github, gitlab, instagram, linkedin were all missing /vishalgattani suffix.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Top of /blog/tags now shows a clickable tag cloud with post counts.
Each tag heading also shows a count badge.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds Projects / Blog / Trips / Research buttons below the bio
so visitors have a clear call-to-action from the home page.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Jekyll was processing gem template files inside vendor/bundle/ and
failing on a .erb file with an invalid date. Excluding vendor/ in
_config.yml and setting BUNDLE_PATH in CI prevents this.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.

1 participant