Pete

The Stack

All posts / Astro (5)

Ithaca, NY

Planning a 3-day bikepacking trip through the Finger Lakes National Forest. 62 miles on the Giant Revolt Advanced 2, two nights of dispersed camping, mostly gravel and forest roads.

Built a /bikepack agent to manage gear inventory, trip planning, and packing lists. It pulls order data from email, tracks everything in a structured JSON file, and knows the bike fleet.

Then published the full trip page on The Stack. Interactive Leaflet map with GPX routes for each day, color-coded with tab switching. Day cards with elevation gain, weather forecast, terrain type, sunrise/sunset, campsite pins linked to Google Maps, and downloadable GPX files. Gear broken into bike setup, camp gear, ride day kit, repair kit, clothing, and food. Meal plan mapped per day. Full packing breakdown by bag zone. Emergency contacts and water sources. Print-friendly CSS so I can check items off on paper.

Photos from previous rides used as low-opacity tile backgrounds on each section. Everything deploys to Zion with one command. The whole thing went from Gmail order scraping to live page in one evening session.

View the trip page ↗

People ask how The Stack works. Here is the full breakdown.

What it is: A microblog built with Astro. No CMS, no database, no admin panel. Every post is a single markdown file with frontmatter (date, text, tags). The site is static HTML deployed to a self-hosted server.

How posts get published: I type a slash command in Claude Code. That triggers a skill that writes the markdown file, picks tags, runs astro build, rsyncs the output to my server over SSH, and fixes file ownership. One command, zero browser tabs.

The stack:

  • Astro 5 (static site generator)
  • Marked (markdown rendering)
  • rsync over SSH (deploy)
  • Hetzner VPS running Apache (hosting)
  • Claude Code skill (publishing workflow)

How the skill works: Claude Code supports custom skills, which are reusable prompt templates that can be triggered with a slash command. The /stack skill takes my raw text, cleans it up, generates the next sequential filename, writes the markdown, runs the deploy script, then commits and pushes to git. The deploy script builds the Astro site locally, rsyncs the dist/ folder to the server, and sets correct ownership.

Why this approach: I wanted to post without friction. A CMS adds login screens, update prompts, plugin conflicts. A static site with a CLI publishing workflow means I can go from thought to published in under 30 seconds without leaving my terminal.

How to build your own: I open sourced the whole thing as a GitHub template. Clone it, replace the placeholders, deploy. Full setup guide included: server prep, SSH keys, deploy script, Claude Code skill.

No accounts to manage. No tokens expiring. No vendor lock-in. Just markdown, a build step, and a server you control.

github.com/pete-builds/astro-claude-microblog ↗

Rewrote the entire brooksnewmedia.com homepage and services page. New origin story about starting with BandsThatJam.com in 2007, the Buffalo music scene, GrassRoots Festival giving us our first photo passes, and the move to Ithaca in 2018. Services restructured around what we actually deliver: web design, automation, SEO, and a monthly growth plan with weekly strategy calls. Killed the old generic copy. This is our story now.

brooksnewmedia.com ↗

For the first time in 15 years, we are rebuilding the Brooks New Media website from scratch. The old WordPress site has been running since 2009. It did its job, but it does not reflect who we are anymore. New stack, new story, new services. Starting tonight.

brooksnewmedia.com ↗

Built this site today. The Stack is a microblog for documenting what we ship. Static Astro site, dark theme, tag filtering, RSS feed, paginated feed. No CMS, no database. Markdown files, one per post. Build it, rsync it to the server, done.