Personal brand site for John Schoonover, optimized for fast, accessible storytelling about cybersecurity engineering leadership. This repository houses the Astro-based site, content collections, infrastructure automation, and operational runbooks required to deploy on a Synology RackStation.
- Framework: Astro with React islands, Tailwind CSS, and shadcn/ui components.
- Content Strategy: Git-driven MDX collections for case studies, writing, talks, and patents with structured data helpers.
- Deployment Target: Synology RackStation (DSM) behind reverse proxy at
theschoonover.net
with optional self-hosted Plausible analytics. - Quality Gates: CI enforces typecheck, build, lint, accessibility (axe), and Lighthouse performance budgets.
- Node.js 20.11.x (use
fnm
/nvm
or Docker image to match production). - pnpm 8.15.1 (
corepack enable
recommended). - GitHub deploy key (read access) for CI/CD interactions.
pnpm install
cp .env.example .env.local # populate with local secrets
pnpm dev
Visit http://localhost:4321
to preview the site.
Command | Description |
---|---|
pnpm dev |
Start Astro dev server with hot reload. |
pnpm build |
Generate static production build in dist/ . |
pnpm preview |
Serve the production build locally. |
pnpm lint |
Run linting suite (ESLint, style checks). |
pnpm test |
Execute unit/integration tests (placeholder until implemented). |
pnpm check |
Aggregate command to run typecheck + lint + tests. |
pnpm content:lint |
Validate MDX frontmatter and content guidelines (to be implemented per docs/content-guide.md ). |
pnpm analytics:export |
Planned CLI to snapshot Plausible metrics (see docs/analytics.md ). |
- Work on feature branches; open PRs with updated documentation and passing CI.
- Merge to
main
to trigger GitHub Actions build pipeline (Astro build, Lighthouse, accessibility checks). - CI publishes the
dist/
artifact and deploys to RackStation via rsync or container push depending on environment configuration. - Post-deploy, validate
/health
, run Lighthouse smoke test, and update the ops journal perdocs/OPS.md
.
Refer to docs/OPS.md
for full deployment, backup, and rollback procedures.
- Author MDX content within
/content
using the conventions indocs/content-guide.md
. - Store assets in
/apps/site/public/images
and/downloads
following naming standards. - Update analytics taxonomy and dashboards when adding new CTAs or conversion points (see
docs/analytics.md
). - Maintain search metadata and rebuild the index per
docs/search-indexing.md
.
- Product requirements and roadmap:
docs/PRD.md
- Operations runbook:
docs/OPS.md
- Content voice & MDX conventions:
docs/content-guide.md
- Analytics playbook:
docs/analytics.md
- Search indexing guide:
docs/search-indexing.md
- DSM Reverse Proxy routes
theschoonover.net
→site
container with HSTS and Let’s Encrypt certificates. - Docker Compose stack includes site container, nginx reverse proxy, and optional Plausible analytics.
- Backups handled via DSM Hyper Backup; retain daily and monthly snapshots as documented in
docs/OPS.md
. - Watchtower or Portainer can automate container updates; ensure rollbacks are available by keeping previous build artifacts.
- Fork/branch from
main
. - Follow Conventional Commit formatting (
type(scope): message
). - Update relevant documentation and add links in README if new guides are created.
- Ensure CI passes locally before pushing (
pnpm check
). - Request reviews from designated owners (Content, Infra, QA) based on change surface.
- Ops & Infra: [email protected] (Agent E)
- Content & Editorial: [email protected] (Agent B)
- Analytics & QA: [email protected] (Agent F)
- Site Owner: John Schoonover — [email protected]
For urgent incidents, follow the escalation protocol outlined in docs/OPS.md
.