Product: Personal Brand Website for John Schoonover
Domain: theschoonover.net
Host: Synology RackStation (DSM) behind home network; reverse proxy + TLS
Primary Persona: Director/Head of Cybersecurity Engineering & Data Platforms (SIEM/CFC)
Secondary Personas: Recruiters, CTO/CISO peers, conference organizers, collaborators
- Present a crisp, executive‑level personal brand: strategic cybersecurity leader, platform engineer, patent innovator.
- Showcase impact: case studies (SIEM at scale, dual‑SIEM posture, real‑time visibility), patents/IDFs, talks, writing.
- Provide an easy path to contact and downloadable one‑pager/CV.
- Be fast, accessible, and privacy‑respecting. No heavy trackers; first‑party analytics.
- Be easy to maintain via Markdown/MDX content and Git‑based workflow.
- No community forum or user accounts at launch.
- No complex CMS admin UI (prefer Git‑driven content for GA).
- No e‑commerce in GA (leave room for future consulting bookings).
- Performance: LCP ≤ 1.8s, CLS ≤ 0.1, TBT ≤ 200ms on mid‑tier mobile; 95+ Lighthouse Perf.
- Measurement: Lighthouse CI mobile run on each PR and nightly cron; quarterly WebPageTest lab audits.
- Data sources: GitHub Actions artifacts, Plausible custom
performance.lcpevent. - Reporting cadence: Weekly summary captured in
docs/analytics.md; regressions escalated to Agent F.
- Accessibility: WCAG 2.2 AA; 95+ Lighthouse Accessibility.
- Measurement: axe-core CI suite plus manual keyboard sweep before each release.
- Data sources: GitHub Actions accessibility report, issue tracker with
a11ylabel. - Reporting cadence: Included in bi-weekly ops review; blockers must be resolved pre-deploy.
- SEO: Core pages indexed; 80+ Lighthouse SEO; proper structured data.
- Measurement: Lighthouse CI SEO audit, Google Search Console coverage, Schema validator spot checks.
- Data sources: Search Console property for
theschoonover.net, CI artifacts. - Reporting cadence: Monthly SEO health check logged in
docs/OPS.md.
- Engagement: ≥ 60% of visitors view 2+ pages; ≥ 2% contact CTR (CTA clicks / sessions).
- Measurement: Plausible events
pageview,cta_contact_click,download_cv, plus goal funnel for multi-page sessions. - Data sources: Plausible dashboard exports (CSV) aggregated in shared sheet/Notion.
- Reporting cadence: Monthly executive summary for John; anomalies reviewed within 48h.
- Measurement: Plausible events
- Recruiters / execs: Want quick signal: who you are, 3–5 signature wins, CV download, contact.
- Peers (CTO/CISO/Head of Eng): Want tangible depth: architecture diagrams, migration stories, metrics.
- Conference organizers: Want speaker bio, talk abstracts, prior recordings, headshot kit.
Voice & Tone: Executive, technical, outcome‑oriented; confident but not boastful. Evidence‑backed bullets; plain English.
- Home – Hero, value prop, featured case studies, patents, writing, talks, contact CTA.
- About – Bio (short/long), leadership philosophy, headshot(s), quick stats, values.
- Experience / CV – Printable resume, downloadable PDF; highlights with impact metrics.
- Case Studies – 3–6 in‑depth writeups (SIEM at scale, dual‑SIEM migration, enrichments‑at‑scale, replacement rules engine, real‑time operational visibility, patent pipeline). Each with problem → approach → architecture → results.
- Writing – Articles, notes, external posts; tag by topic (SIEM, data eng, AI/ML ops, leadership).
- Talks & Media – Conference abstracts, slides, recordings, speaker kit.
- Patents & IP – Filed/pending concepts and high‑level summaries; responsible disclosure stance.
- Contact – Secure contact form + alternative channels (LinkedIn, email, PGP key).
- Legal – Privacy, cookies, licensing.
Future (Backlog): Newsletter (first‑party), consulting page, booking links, reading list, D&D/creative section as optional personal touch.
- Hero: Name, title ("Director of Cybersecurity Engineering — SIEM & CFC"), one‑sentence value prop, primary CTA (Contact) + secondary CTA (Download CV).
- Stats Row: Uptime, event delay reduction, scale metrics, patent applications, org size.
- Featured Case Studies: 3 cards with title, 2–3 bullets, badge metrics, link to full case study.
- Writing/Talks Teaser: Latest 3 posts and 2 talks.
- Logos Row (optional): Conferences/platforms (as monochrome marks with permission).
- Header: title, timeframe, tags, TL;DR.
- Problem: context, constraints.
- Approach: architecture diagram, team, decisions/tradeoffs.
- Implementation: tech stack, process, milestones.
- Results: metrics with before/after, graphs.
- Lessons: what changed, what you’d do differently.
- Executive summary; core competencies; roles with quantified impact; selected patents; talks; education; skills matrix.
- MDX posts; code and diagrams support; canonical URLs; social preview images.
-
Brand Attributes: reliable, precise, systems‑thinking, pragmatic innovator.
-
Color: Neutral base (charcoal/ink), accent (electric blue/teal), success (emerald). Provide light/dark themes.
-
Typography: Headings: geometric sans; Body: humanist sans/serif with excellent legibility. Use variable fonts.
-
Components:
- App shell: responsive nav, footer with contact + socials.
- Hero, Stat badges, Card, Timeline, Tag, Pill buttons, Callout, Figure with caption, Code block, Accordion.
- Case study layout with sticky ToC and reading progress.
-
Imagery: Professional headshots (light/dark backgrounds), architecture diagrams (clean, consistent notation), auto‑generated social cards.
- Static or hybrid site with MDX content.
- Site‑wide search and tag filters powered by a build-time generated MiniSearch index (JSON emitted to
public/search-index.json) hydrated client-side with@minisearch/mini-search; no external services. - Contact Form: protected by hCaptcha; server endpoint with email relay.
- Downloadables: CV (PDF), one‑pager (PDF), speaker kit ZIP.
- Dark/Light Mode: system preference + manual toggle; persisted.
- Analytics: first‑party (Plausible self‑hosted) with cookieless tracking.
- Sitemap & Feeds: XML sitemap, RSS/Atom for writing.
- Structured Data:
Person,Article,BreadcrumbList,Organizationwhere relevant. - Open Graph/Twitter cards: dynamic OG image generation per page.
Nice‑to‑Have (Near‑term):
- Print‑optimized resume and case studies (CSS @media print).
- Reading time and progress indicator.
- Command‑K quick finder.
-
Performance Budget:
- No JS > 200KB initial; fonts preloaded; images lazy‑loaded; responsive images; HTTP/2 or HTTP/3.
-
Accessibility:
- Keyboard‑only flows; focus-visible; ARIA landmarks; color contrast ≥ 4.5:1; captions/transcripts for media.
-
Security:
- HTTPS everywhere; HSTS; CSP (script/style/img/frame-src allowlists); referrer‑policy; X‑Content‑Type‑Options; basic rate limiting on form endpoint; secrets via env vars only.
-
Privacy:
- No third‑party ads; no cross‑site trackers; clear privacy statement; DNT honored.
-
Reliability:
- Uptime monitoring (Uptime Kuma container) with notifications; graceful degradation without JS.
- Framework: Astro (content‑first, ultra‑fast) with MDX + React islands or Next.js (static export where possible).
- Styling: Tailwind CSS + shadcn/ui for accessible components; Icons via lucide.
- Content: Markdown/MDX in
content/with front‑matter; image assets inpublic/. - Runtime: Node.js 20.11.x LTS (DSM-compatible); pin via
.nvmrcand CI. - Package Manager: pnpm 8.15.1 with
pnpm-lock.yamlcommitted and enforced via Corepack. - Analytics: Self‑hosted Plausible (Docker on RackStation) or lightweight serverless endpoint.
- Forms: Next.js / Astro endpoint + nodemailer (SMTP to Synology MailPlus) or Cloudflare Email Routing; hCaptcha for bot protection.
- Diagrams:
@mermaid-js/mermaidorkrokistatic renders during build.
- Headless CMS (Sanity/Contentlayer) if content volume grows; retain Git‑based workflow until needed.
- Canonical URLs; robots.txt; meta tags; JSON‑LD via component; OG image generation function.
- Containerized runtime via Docker Compose on DSM.
- Reverse Proxy: DSM Application Portal → Reverse Proxy to expose
theschoonover.net→ container; HTTP → HTTPS redirect. - TLS: Let’s Encrypt via DSM; enable HSTS.
- Static Assets: Served from container (nginx) or the app framework.
- IPv6: Enable if available; AAAA record.
- Backups: Nightly backup of repo +
content/to another NAS volume/cloud. - Hardware constraints: Synology RackStation (Intel Atom C3538, 12GB RAM for Docker, 4TB SSD pool, 200Mbps symmetrical uplink); size containers ≤512MB app / ≤2GB Plausible, retain 20% headroom.
- Traffic assumptions: ≤50 concurrent sessions, ~5 req/s peak; prioritize static export to stay within CPU budget.
Services: web (Astro/Next container), plausible (optional), mail-relay (if used).
- Strict
Content-Security-Policy(allow self + plausible subdomain if used). X-Frame-Options: DENY,X-Content-Type-Options: nosniff,Referrer-Policy: strict-origin-when-cross-origin.
- Repo Structure:
/ (repo root)
├─ apps/site/ (Astro or Next.js app)
├─ content/ (mdx: posts, case‑studies, talks)
├─ public/ (images, downloads)
├─ infra/
│ ├─ docker-compose.yml
│ └─ nginx/ (conf, CSP)
├─ scripts/
│ ├─ build.sh
│ └─ deploy.sh (rsync/ssh to RackStation)
├─ docs/
│ └─ PRD.md (this document)
└─ .github/workflows/deploy.yml
- Build:
pnpm install && pnpm build(Astro/Next). - Deploy: GitHub Actions on
main→ build →rsyncartifacts via SSH to RackStation Docker bind mount or trigger Portainer/Watchtower to pull latest image. - Secrets: Stored as repo secrets (SSH key, SMTP creds, hCaptcha secret).
docs/OPS.md: Deployment runbook (DSM reverse proxy steps, Docker Compose commands), backup/restore procedures, incident response contacts, environment variable registry, rollback plan. Owner: Infra lead (Agent E) with QA review (Agent F).docs/CONTENT_GUIDE.md: Voice/tone pillars, MDX frontmatter checklist, asset storage conventions (public paths), accessibility requirements (alt text, captions). Owner: Content lead (Agent B) with John approval.docs/analytics.md: Event taxonomy for success metrics, dashboard links, reporting cadence, data retention policy. Owner: QA/Analytics (Agent F).docs/search-indexing.md: MiniSearch build pipeline, rebuild command, troubleshooting matrix, ownership for re-indexing. Owner: App scaffold lead (Agent A).- Review checklist: Prior to launch ensure docs updated, cross-linked from README, and owners tagged in PR reviews.
- Identity Links: LinkedIn, GitHub, Google Scholar/Patents.
- Contact: mailto: with obfuscation, contact form with hCaptcha, PGP public key download.
- Social Cards: OG images per page; favicon + touch icons; webmanifest.
- Ensure semantic HTML, heading order, alt text, visible skip links.
- English GA; structure for future i18n (route‑based locales, i18n JSON).
- Logging: Access logs in container volume; error logs with rotation.
- Monitoring: Uptime Kuma (Docker) checks
/and/health. - Health Endpoint:
/healthreturns app version + 200.
- Privacy page (data we collect = minimal); cookie notice only if adding non‑essential cookies later.
- License for site content (default © with permissions for sharing posts under CC BY‑NC if desired).
- Pages implemented: Home, About, Experience/CV, Case Studies (min 3), Writing index + 1 post, Talks & Media, Patents & IP, Contact, Legal.
- Passes Lighthouse (Mobile) ≥ 90 in Perf/SEO/Best Practices and ≥ 95 in Accessibility.
- Valid structured data (Rich Results test passes for Person/Article/Breadcrumb).
- Contact form delivers to configured email and logs server‑side events.
- CI/CD builds on push to
mainand deploys to RackStation; rollback available (previous container image retained). - TLS with valid cert; HTTP→HTTPS enforced; HSTS active.
- Consulting & advisory page with tiered offerings and intake form.
- Newsletter with double opt‑in (self‑hosted list, no tracking pixels).
- Case study PDF exporter.
- Interactive architecture galleries (zoom/pan diagrams).
- Talks calendar + proposal builder.
- Home hosting availability: Use Uptime Kuma alerts; optionally put Cloudflare proxy in front.
- Email deliverability: Use authenticated SMTP (SPF/DKIM), or third‑party relay.
- Content drift / staleness: Quarterly review reminder; show “last updated” on pages.
- Scaffold Astro (or Next) project with MDX support, Tailwind, shadcn/ui.
- Pages & layouts per IA with components (Hero, Stats, Card, Timeline, CaseStudyLayout, PostLayout, OG image generator).
- Content seeds: 3 case studies (stubbed), 1 blog post, resume/CV page, patents index, talks index, contact form.
- Infra:
docker-compose.yml, nginx conf with headers & CSP, DSM reverse proxy instructions (README). - CI/CD: GitHub Actions workflow to build and deploy to RackStation via SSH/rsync or container image push + Watchtower.
- Analytics: Optional Plausible container + snippet or self‑hosted endpoint stub.
- Testing: Playwright/Lighthouse CI script; axe-core accessibility checks.
- Docs:
README.md(local dev, build, deploy),docs/PRD.md(this),docs/CONTENT_GUIDE.md(how to write MDX),docs/OPS.md(backups, monitoring).
- Value Prop (Home): “Cybersecurity engineering leader building reliable, data‑driven platforms that scale—turning ambiguity into resilient systems and measurable results.”
- CTA: “Let’s talk” / “Download CV”.
- Case Study Metrics (example): “Reduced controllable event delay by 70%”, “Achieved 100% uptime over X months”, “Designed dual‑SIEM migration covering N sources / M BPS”.
Hand‑off Note for Codex: Use this PRD to generate the repo, scaffold pages/components, create seed content in MDX, wire up CI/CD, and ship a Dockerized site ready for DSM reverse proxy at
theschoonover.net. Ensure Lighthouse and a11y checks pass in CI before deploy.