← back to projects
devopsoperational
This site's own publish pipeline
#devops#automation#ci-cd#linkedin
Merge a Markdown post to main and it deploys, then publishes itself to LinkedIn with a link back — no manual copy-paste step.
- ›GitHub Actions handles the full flow: build, deploy, wait for the live URL, then publish to LinkedIn via the official REST API.
- ›The deploy check used to just poll for a 200 — which would pass even against a stale cached page. It now also confirms the actual post title is present in the response body before publishing goes ahead, with unit tests covering that logic so it can't silently regress.
- ›Everything is versioned and reviewed through a normal pull request, same as any other change to the site — CI runs typecheck, the full unit test suite, and a production build on every push.
- ›A weekly scheduled job pulls from a handful of RSS feeds, drafts a bilingual post with an LLM against a fixed voice/style prompt, and opens a PR — nothing publishes without a human reading it first.
- ›A GitHub OAuth-gated admin panel gives a manual path alongside the automated one — writing and editing posts directly, and moderating comments — without needing a PR for every small fix.
- ›The site itself is now properly discoverable: JSON-LD structured data, dynamically generated OG images per post, sitemap/robots.txt, and canonical/hreflang tags across both locales; a public RSS feed and Vercel Web Analytics track who's actually reading.
- ›Reader-facing polish followed the same pipeline discipline — a light/dark theme (recolored via CSS variables, not per-component), a reading-progress bar, tag-scored related posts, and a full tags index, all shipped through the same PR + CI review as everything else.
- ›Sentry now watches client, server, and edge runtimes for unhandled errors — error capture only, tracing and session replay deliberately left off since neither earns its bundle-size cost at this site's traffic. No-ops safely if the DSN isn't set, so it never breaks a build.
Screenshots
Desktop
Mobile
Working on something similar? I'd like to hear about it
collaborate →