Skip to the content

Capsid menu

The nightly backup

Step 1 of 7

Dumped

At 09:00 UTC a daily cron in the Worker dumps every table to R2 with d1-dump, one JSON file each plus the schema.

What it touches

The drawing

Inside Capsid
The same map as a list

Runs everything

  • Capsid The store, the queue, and the credentials every other project runs through. mcp.dustinedwards.info Open Capsid

Shared parts

  • d1-dump shared Backs up each table of a D1 database, keeps the backups on a schedule, and drills the restore. Open d1-dump
  • devkit shared Shared CI workflows, Renovate rules, and test helpers. Open devkit
  • site-runtime shared Security headers, the rate limiter, and the health format that every site imports. Open site-runtime
  • Prelum shared Turns finished writing into pages, feeds, and sitemaps. Open Prelum
  • Capsomer shared The tokens, the shell, and the shared controls every app is drawn with, in plain CSS. capsomer.dustinedwards.info Open Capsomer
  • site-api shared The contract Carrel uses to publish. Open site-api

Websites

  • Dustin Edwards Admin admin Runs dustinedwards.info from a chat, covering health, mentions, media, registries, citations, and lab procedures. Writing stays in Carrel. Open Dustin Edwards Admin
  • Germomics site A podcast and writing site about microbiology and history, with interactive virus and bacteria data pages and browser games. germomics.com Open Germomics
  • dustinedwards.info site Dustin's personal site. dustinedwards.info Open dustinedwards.info
  • TXASM site Runs the Texas Branch ASM meetings: registration, abstract submission and review, the program, and the abstract book PDF. txasm.org Open TXASM
  • julieedwards.info site Julie Edwards's campaign site for the Bluff Dale ISD school board. Its copy lives in D1 and is edited through Carrel. julieedwards.info Open julieedwards.info

Apps

  • Foxing app A reading app and web platform, Letterboxd for books: a web app, an Expo phone reader and a Discord Activity for reading clubs. foxing.app Open Foxing
  • Foxhound Admin admin Runs Foxhound from a chat. It holds no Stripe key and no database: every action is a call to the foxhound Worker's admin API. admin-mcp.foxhoundapp.com Open Foxhound Admin
  • Foxhound app Recovers failed Stripe payments, handles disputes and reports subscription health for merchants, and is paid only on money it recovers. foxhoundapp.com Open Foxhound
  • Foxing Admin admin Runs Foxing from a chat: stats, users, badges, journal posts and catalog health, all through the foxing Worker. Built, not yet deployed. Open Foxing Admin

Writing

  • Carrel writing The writing desk, where drafts are written, checked, and published. carrel.dustinedwards.info Open Carrel
  • Enarratio writing An npm package of charts, with a gallery. enarratio.dustinedwards.info Open Enarratio
  • Writing private Dustin's books: scenes, outlines and story bibles, which Carrel reads and commits through its own GitHub App. Open Writing

Tools

  • Skills tool The instructions AI sessions follow. Open Skills
  • Private skills private Dustin's own session setup, which every AI session loads beside the public skills. Open Private skills
  • capsid-bench tool The study harness that compares Claude Code with and without Capsid on the same tasks, scored on hidden tests. Open capsid-bench
  • Capsid backups private Mirrors Capsid's daily database dumps off Cloudflare every day, so losing the account does not lose the store. Open Capsid backups
Inside Capsid, step by step

The nightly backup

  1. Dumped: at 09:00 UTC a daily cron in the Worker dumps every table to R2 with d1-dump, one JSON file each plus the schema.
  2. Marked complete: a completion marker is written last, and only when the dumped tables match the ones the migrations create. A run without it is never counted as a backup.
  3. Mirrored: every document body is written beside the dump as plain markdown, one file per document.
  4. Pruned: the newest complete run of each of the last 14 days, 8 weeks and 6 months is kept, and every other run is deleted whole. The newest complete run is never deleted.
  5. Trimmed: document versions older than 90 days and audit rows older than 180 are pruned, after the dump, so every pruned row is in a kept copy.
  6. Stamped: the run records its success, and /health warns once that stamp is more than 26 hours old.
  7. Watched: every half hour the watcher reads the newest copy kept off the Cloudflare account and files a finding once it is more than 36 hours old.

Every step

  1. Dumped At 09:00 UTC a daily cron in the Worker dumps every table to R2 with d1-dump, one JSON file each plus the schema.
  2. Marked complete A completion marker is written last, and only when the dumped tables match the ones the migrations create. A run without it is never counted as a backup.
  3. Mirrored Every document body is written beside the dump as plain markdown, one file per document.
  4. Pruned The newest complete run of each of the last 14 days, 8 weeks and 6 months is kept, and every other run is deleted whole. The newest complete run is never deleted.
  5. Trimmed Document versions older than 90 days and audit rows older than 180 are pruned, after the dump, so every pruned row is in a kept copy.
  6. Stamped The run records its success, and /health warns once that stamp is more than 26 hours old.
  7. Watched Every half hour the watcher reads the newest copy kept off the Cloudflare account and files a finding once it is more than 36 hours old.