Skip to main content

    Operational Runbook

    Quick References

    Architecture Overview

    • Production Hosting: GitHub Pages with CDN (Fastly)
    • Preview Hosting: Cloudflare Pages (auto-deploys PR branches)
    • Domain: dylanbochman.com (custom domain via CNAME)
    • Tech Stack: React 18 + TypeScript + Vite 7 + Tailwind CSS 3
    • Runtime: Node.js 24 LTS (npm 11.x)
    • Deployment: GitHub Actions CI/CD pipeline
    • Content Management: Decap CMS (GitHub OAuth, /editor route)
    • API Layer: Cloudflare Workers (kanban-save-worker at api.dylanbochman.com)
    • Error Tracking: Sentry with source maps and release tracking
    • Monitoring: UptimeRobot + Lighthouse CI + Core Web Vitals + Google Analytics

    Infrastructure Components

    • Origin: GitHub Pages (static hosting for production)
    • Preview: Cloudflare Pages (personal-website-adg.pages.dev)
    • CDN: Fastly (via GitHub Pages) + Cloudflare (for previews)
    • DNS: Cloudflare DNS (dylanbochman.com)
    • API: Cloudflare Workers (api.dylanbochman.com/save-board)
    • CI/CD: GitHub Actions (.github/workflows/deploy.yml)
    • Dependencies: NPM packages (managed by Dependabot)

    Monitoring & Alerting

    UptimeRobot (External Monitoring)

    Automated SEO Monitoring

    • Workflow: Weekly SEO Check (GitHub Actions)
    • Schedule: Every Monday at 9 AM UTC
    • Metrics: Performance, SEO scores, Core Web Vitals
    • Alerting: GitHub issues created if scores drop below thresholds
    • Documentation: AUTOMATED_SEO_CHECKS.md

    Console Error Monitoring

    • Workflow: Automated Playwright tests after each deployment
    • Coverage: Home page + Runbook page
    • Detection: JavaScript errors, runtime exceptions, console warnings
    • Alerting: GitHub issues with screenshots and error logs
    • Documentation: CONSOLE_ERROR_MONITORING.md

    Core Web Vitals Tracking

    • Integration: Google Analytics 4 custom events
    • Metrics: LCP, FID, CLS, INP, FCP, TTFB
    • Mode: Production only (real user monitoring)
    • Dashboard: Google Analytics → Events → Web Vitals

    GitHub Actions (CI/CD Monitoring)

    • Build status: Check workflow runs
    • Test results: Automated test suite (Vitest + Playwright)
    • Security: npm audit + Dependabot alerts
    • Performance: Lighthouse CI budgets

    Troubleshooting Guide

    Site Completely Down

    Actions: Check UptimeRobot → Try dbochman.github.io → Check GitHub status → Run nslookup dylanbochman.com

    Causes: GitHub Pages outage | CDN issues (Fastly) | DNS misconfiguration | Repo access | Build failure | NPM registry down

    Slow Performance

    Investigate: Run Lighthouse audit → Check dist/bundle-analysis.html → Verify CDN status → Review Core Web Vitals

    Fixes: Code splitting | Image optimization | Audit third-party scripts | CDN cache refresh

    JavaScript Errors

    Investigate: Review Sentry dashboard → Test in multiple browsers → Check recent deployments

    Build/Deployment Failures

    Check: GitHub Actions logs → npm test output → npm audit results → package-lock.json integrity

    Preview Deployment Issues

    Investigate: Check Cloudflare Pages dashboard → Verify build:preview script works locally → Check branch name sanitization

    Fixes: Retry deployment in CF dashboard → Check build logs → Verify npm run build:preview works locally

    Causes: Cloudflare build timeout | Missing environment variables | Playwright prerender (use build:preview) | Branch name with special characters

    Kanban Save Not Working

    Investigate: Check api.dylanbochman.com/save-board → Verify GitHub OAuth token → Check Cloudflare Workers logs

    Fixes: Redeploy worker via wrangler → Re-authenticate GitHub OAuth → Check worker secrets in CF dashboard

    Causes: Worker deployment failed | GitHub token expired | CORS misconfiguration | Rate limiting

    CMS Editor Issues

    Investigate: Check /editor/index.html loads → Verify GitHub OAuth is working → Check browser console for errors

    Fixes: Verify config.yml settings → Check GitHub permissions → Clear browser cache → Try different browser

    Causes: GitHub API rate limits | OAuth app misconfiguration | CORS issues | Decap CMS CDN down

    Recovery Procedures

    Emergency Rollback

    # Identify last known good commit
    git log --oneline -10
    
    # Create rollback branch
    git checkout -b emergency-rollback
    
    # Reset to stable commit
    git reset --hard <stable-commit-hash>
    
    # Force push (bypasses branch protection)
    git push origin main --force

    DNS Recovery

    # Verify current DNS settings
    nslookup dylanbochman.com
    
    # Expected CNAME record
    dylanbochman.com CNAME dbochman.github.io

    Escalation Paths

    Primary Response

    Dylan Bochman - Site Owner/Technical Incident Manager

    Email: [email protected]

    LinkedIn: linkedin.com/in/dbochman

    External Dependencies

    Additional Resources