Last reviewed: 2026-06-14. Owner: Jake (sole operator). Keep this short and actionable. For architecture, see README.md; for known risks, see REVIEW.md.
| What | Where |
|---|---|
| Hosting / DNS / Worker / KV / R2 / Access | Cloudflare dashboard (one account) |
| Source + CI | GitHub → Cloudflare Workers Builds (deploy on push to main) |
| Booking data | KV namespace farholm-bookings (booking: / trash: keys) |
| Backups | R2 bucket farholm-backups (snapshots/<date>/<stamp>.json, ~90-day retention) |
| Contact inquiries | Web3Forms → email to hello@farholm.com |
| Privacy/cookie policy | Termly (embedded on /privacy, /cookies) |
| Health check | GET https://trip.farholm.com/api/health → 200 {ok:true} |
| Admin | https://trip.farholm.com/admin (Cloudflare Access, admin email only) |
First, always: note the time, capture evidence (screenshots, curl -i output,
Cloudflare Ray IDs, Worker logs) before changing anything. Then work the
relevant scenario below.
curl -I https://farholm.com/ and …/api/health (expect 200).{"evt":"snapshot","ok":false,...} or no new
object appears under snapshots/<today>/ in R2.POST /api/admin/snapshot).BACKUPS) and bucket existence, then KV
read access. Re-run.farholm-backups.trash:<REF> in KV (Cloudflare dashboard)
and re-save its JSON through the admin. (Trash holds 90 days.)snapshots/<date>/<stamp>.json from R2, find the booking, re-save via admin.BOOKINGS binding, redeploy. Test FH-9QXM4K7P./admin
and /api/admin/*; confirm only the admin email authenticated.GOOGLE_PLACES_KEY, AERODATABOX_KEY).booking:/trash: changes.mailto: link on failure, so inquiries can
still arrive. Check Web3Forms status + the access key; confirm
hello@farholm.com delivery (and spam folder). Consider enabling Web3Forms
domain restriction / Turnstile if abuse (spam flood) is the cause./privacy /cookies render empty. Mitigation: keep a
first-party copy to paste in (see REVIEW.md backlog). Not a SEV1.Notify affected clients without undue delay if their personal data was exposed or lost. Include what happened, what data, what you're doing, and what they should do. Check state breach-notification obligations for affected residents.
Twice a year: (1) roll back to a previous Worker deployment on a quiet day and confirm the site serves; (2) restore one booking from an R2 snapshot into a scratch namespace. Record the date and result here.