← Back to blog

How We Built the Pressroom HQ Marketing Site — And What the Architecture Teaches About DevTools Content Operations

by company
pressroom

How We Built the Pressroom HQ Marketing Site — And What the Architecture Teaches About DevTools Content Operations

The Pressroom marketing site shipped last week. Seven commits, Astro + Tailwind, deployed on Fly.io behind nginx. Terminal aesthetic, blog, docs sync pipeline, proper OG tags. Done.

That commit log is also a content operations case study hiding in plain sight — because the same problem we solve for other devtools teams is the one we had to solve for ourselves.

Here’s what we built, why we made the technical choices we did, and what it connects to the larger question everyone in devtools marketing is currently sweating: how do you make your content findable in a world where “findable” now means both Google and whatever an LLM decides to cite?

What’s Actually in the Stack

Seven commits tell a coherent story:

  1. Initial marketing site — Astro + Tailwind — static-first, fast, no CMS debt
  2. feat: Fly.io deploy config — nginx static site — simple deploy, no serverless cold starts
  3. Redesign marketing site with terminal aesthetic, add blog and docs — structure follows audience
  4. Add docs sync pipeline from pressroom-docs repo — docs live in their own repo, sync at build
  5. Fix Docker build: clone docs repo and graceful sync fallback — because the sync will fail at 2am
  6. feat: add favicon set, OG image, and social meta tags — the part everyone forgets until it’s embarrassing
  7. Add logo icon, update favicons, and refine marketing copy — polish pass

We chose Astro over Next.js for the same reason most devtools documentation sites end up there eventually: zero JS overhead by default, first-class Markdown support, and no framework lock-in that will cause a rewrite in 18 months. For a static marketing site serving a technical audience, client-side hydration is a liability, not an asset.

The docs sync pipeline is worth explaining in more detail.

The Docs Sync Architecture

Pressroom’s documentation lives in pressroom-docs — a separate repo from the marketing site. During the Docker build, we clone that repo and pull content into the site build:

RUN git clone https://github.com/pressroomhq/pressroom-docs.git /tmp/docs || true
RUN cp -r /tmp/docs/content ./src/content/docs || echo "Docs sync failed, continuing with existing content"

The || true and fallback echo aren’t laziness — they’re intentional. Docs sync failures shouldn’t take down a marketing site deploy. You want graceful degradation so a stale docs commit doesn’t block a critical copy fix from shipping.

This pattern — separate content repos, build-time sync, fallback handling — is the same pattern that makes sense for any devtools team running multiple repos with documentation scattered across them. The content operations principle here: treat your docs as a content source, not an afterthought.

docs architecture for developer products

Why We Used a Terminal Aesthetic (And Why It’s Not Just Vibes)

The terminal design choice isn’t arbitrary. It signals immediately to the target audience that this is not a generic SaaS product. When a developer lands on the Pressroom site, the visual language says “built by engineers, for engineering teams” before a single word of copy lands.

This is a real content operations decision: your site’s aesthetic is part of your content. It shapes whether your audience trusts the copy that follows. A developer who gets visually jarred by stock-photo enterprise design is already skeptical before they read your value proposition.

We also spent time on the OG image and social meta tags — the commit that everyone treats as an afterthought. Every time a Pressroom link gets shared on LinkedIn, Hacker News, or a Slack channel, that OG image and title do the first five seconds of positioning work. Getting them right is content ops, not design ops.

Where This Connects to AEO and LLM Visibility

Here’s the part that’s worth sitting with: all of this infrastructure work feeds directly into a search space that’s shifting under everyone’s feet right now.

Google is actively discussing what it means to optimize for AI-generated answers — GEO (Generative Engine Optimization), AEO (Answer Engine Optimization) — alongside traditional SEO. The r/SEO thread circulating this week captures something real: people are now typing four-sentence questions into Google and getting coherent synthesized responses with citations. That’s not a future state. That’s today.

For devtools companies, this has a specific implication that’s different from B2C.

When someone searches “how do I automate release notes for my developer blog,” an LLM-powered search engine isn’t just matching keywords — it’s pulling structured, semantically coherent content and deciding whether your pages are worth citing. The structure of your content, the specificity of your explanations, the presence of real code examples, the internal linking between related concepts — all of it feeds into whether your content gets surfaced as an answer source or ignored.

This is exactly why the Pressroom site has:

  • Separate, linkable docs pages (not one giant README)
  • Blog posts with specific technical claims and code examples
  • Proper meta tags and structured OG data
  • Internal cross-linking between blog and docs

Not because we’re chasing algorithm changes. Because well-structured, specific content has always been the thing that earns citations — whether from a human editor linking to you in 2010 or an LLM surfacing you as a reference in 2025.

content structure for LLM visibility

The Content Operations Lesson in the Commit Log

Here’s what strikes us about our own commit history: the move from “initial marketing site” to “docs sync pipeline with graceful fallback” happened in seven commits across a short sprint. That’s fast shipping.

But watch what didn’t happen automatically: none of those commits turned into LinkedIn posts, technical blog content, or developer-facing announcements without someone making a decision to write this post. The GitHub activity existed. The developer signal was there. The content pipeline wasn’t.

That’s the gap Pressroom is designed to close. And it’s worth being direct about who actually lives in this gap: it’s not a five-person team with a part-time marketer. It’s one engineer, shipping alone, who is also supposed to be the content team.

That’s the real scenario. One person. The commits happen because shipping is the job. What doesn’t happen — can’t happen, without compressing time — is translating those commits into LinkedIn posts, blog drafts, changelog announcements, and docs updates. Not because the work isn’t valuable, but because there are only so many hours and the next feature is already waiting.

Pressroom doesn’t replace that person’s judgment. Every draft still goes through human review before anything ships — that editorial layer is the whole point. But reducing the friction between “commit merged” and “audience knows this shipped” matters a lot more when there’s no one else to pick up the distribution side.

Seven commits with zero distribution is a week of developer signal that nobody outside your repo saw. For a solo founder or a one-engineer team building in public, that compounds fast.

turning GitHub commits into content

What’s Next

The site is live. The docs are live. The architecture is documented here for anyone who wants to steal the Astro + separate-docs-repo pattern for their own devtools site.

The sharper question we’re sitting with: as AEO and LLM visibility become standard parts of how devtools content gets discovered, what does “content operations” mean when you’re one person wearing every hat? We have a specific answer to that — and it starts with what’s already in your commit history.

That’s the next post.

Want to automate your developer content pipeline? Read the setup guide →