Operational Runbook
Quick References
Status: stats.uptimerobot.com/zquZllQfNJ
Repo: Dbochman/personal-website
Deploy: Production (GitHub Pages) | Preview (Cloudflare Pages) | Cloudflare Pages Settings
CMS: dylanbochman.netlify.app/editor
Dependencies: GitHub | Cloudflare | Fastly | NPM | Google | Sentry
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)
- Check Frequency: Every 5 minutes
- Monitored URL: https://dylanbochman.com
- Alert Method: Email notification
- Status Page: stats.uptimerobot.com/zquZllQfNJ
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 --forceDNS Recovery
# Verify current DNS settings
nslookup dylanbochman.com
# Expected CNAME record
dylanbochman.com CNAME dbochman.github.ioEscalation Paths
Primary Response
Dylan Bochman - Site Owner/Technical Incident Manager
Email: [email protected]
LinkedIn: linkedin.com/in/dbochman
External Dependencies
- GitHub Support: For platform-level issues (GitHub Support)
- Cloudflare Support: For platform-level issues (Cloudflare Support)
- Google Support: For platform-level issues (Google Support)
- Fastly CDN: For platform-level issues (Fastly CDN)
- Sentry Support: For platform-level issues (Sentry Support)