One artifact. Three layers. Two doors. The architecture pass that precedes any line of code.
The artifact lives at fasting.leematulis.com and exists to help strangers get curious about fasting, help experimenters log their own, and help one person — the maintainer — stay in touch with his own pattern. v1.0 shipped a biomarker visualizer. v2 turns that into a personal log middle layer. Layer 3 — thesis material — is deliberately deferred.
Approving a design means making these calls in advance, on the record, so the build doesn't quietly drift.
Educational → personal log → thesis. Layer 3 deferred from v2.
Log your own fast wins primary placement. See Lee's experiment secondary.
Physical, mental, spiritual, social — each on a –5 to +5 scale. Any axis can be hidden (especially spiritual, if it doesn't fit a user's language).
Captured at fast end on a 1–10 scale. Not a per-checkin slider. Not derived.
Vanilla HTML/CSS/JS, no framework, no build step for the artifact itself. A small Cloudflare Workers + KV layer exclusively for the maintainer's data, so it can be public-readable.
localStorage only. Download my data button for backup. No cross-device sync in v2.
No separate admin UI for the maintainer. His writes hit the Cloudflare endpoint with a password; visitor reads come from the same endpoint without auth.
Maintainer dictates / feeds notes to Claude; Claude writes the record into Cloudflare KV. No markdown-by-hand. No vault sync. No files.
Default for new visitors: every 4h. Default for the maintainer: first prompt at 24h, then every 6h — his OMAD baseline means 0–24h doesn't register as fasting for him.
Not just the warm-black-and-cream lockup. Colors used deliberately, decisions documented at implementation time.
The thesis / manifesto / armored framing for a one-person experiment — all out of v2. Named here so we know what we're explicitly not building yet.
Progressive disclosure by depth of engagement. Outer ring reaches anyone. Inner ring waits.
The biomarker visualizer that exists today, evolved. Brand strip, timer, phase pill, six KPI cards, multi-curve chart over 72 hours. Two new doors below the chart: Log your own fast primary, See the maintainer's experiment secondary. Share-this-view button as the lowest-effort contagion vector.
The dual-purpose core. Same component shape, two data sources: maintainer's view and visitor's view. Streak strip, fast cards, current-fast slot, cross-fast comparison overlay. The "100× easier" mechanic lives here.
The manifesto, the long-form journal as standalone, the citations library as its own page, the framing for the n=1 experiment. Named so we know what we're not building yet.
When the artifact does its job, each of these three walks away with what they came for.
When I'm between fasts — planning the next, mid-fast, or just finished one — I want to see my experiment at a glance, including count, longest, shortest, and what I did and felt during each, so I can make decisions about the next fast and the surrounding content from a grounded place.
When I'm curious or skeptical about fasting and I've landed here from social or word-of-mouth, I want to see what actually happens inside a body during a fast — biomarkers, phases, timing — in a form I can grasp in under a minute, so I can decide whether I want to try it myself or share it with someone who would.
When I'm fasting, or about to, or just finished, I want to log my own fast in under a minute and see my own history accumulate over time, so I can watch my pattern emerge, compare fasts, and share the moments when something interesting shows up.
Each flow is a one-page journey. No URL changes, no page loads, no surprises.
Maintainer and visitor share the same Fast Record schema. Depth of fill differs by usage, not by shape.
Cheap, fast, reliable, easy to deploy, easy to evolve. The shape of the stack matches the shape of the artifact.
No React, Vue, Svelte. No build step. Edit the file, deploy through the existing pipeline. Chart.js loaded from CDN as v1 already does.
~50 lines of JavaScript. Free tier sufficient indefinitely for projected usage. GET reads maintainer's record set publicly. POST writes maintainer's data, gated by a password.
Same schema. Download my data button for backup. No cross-device sync in v2 — that's an acceptable trade for not needing accounts.
Static HTML deploys the way every other artifact does. Cloudflare Worker deploys once at setup, separately.
If logging a fast requires touching a file, the design has failed. The slider is the surface; the data is what falls out.
Slider UI in the artifact. Browser writes to localStorage on each save. No files, no commits, no deploys, no JSON awareness required.
Same slider UI as visitors. On save, UI POSTs to the Cloudflare endpoint with a password. Worker validates, writes to KV, returns success. Public reads come from the same endpoint without auth. Data is public-by-design.
Maintainer dictates / feeds notes to Claude. Claude extracts structured fields and writes the record into Cloudflare KV via the same authenticated endpoint. Records marked structured: false if slider data is null — artifact handles gracefully with text-only entries.
No markdown files. No build scripts. No vault sync. If the slider can't capture it, the design has to grow — not the workaround.
Each criterion is a verifiable check. Failing any of them means we fix it or document why we deferred — never silently move on.
Naming what's out of scope is part of the design. The reason to write it down is so it can't quietly creep back in.
Not blockers — open questions visible to the design surface so they can't quietly become defaults.
Maintainer detection — URL parameter, localStorage flag, or URL hash + token? Provisionally URL param + localStorage; revisit if edit-mode security becomes a real concern.
Palette extraction — when visual design starts, pull the full palette and map components to specific colors. Current artifact uses a close-but-not-exact treatment.
Compare-with-maintainer overlay UX — how to visually distinguish two sets of curves on one chart without labeling confusion. May need iteration during implementation.
Share-card art direction — what does a great share card look like? Needs creative judgment when we hit visual design.
Hermes deploy mechanics for the Cloudflare Worker — Worker deploys separately from the static HTML deploy. Wire into existing pipeline or treat as one-time setup?
v1.5 ships a polish pass on the existing artifact — not layer 2. Smaller scope, faster turnaround, timed to a near-term announcement. Candidates were proposed below, and the final pick is still being interrogated against the brand lens (because not every "polish" candidate clears it).