How this site is built
For anyone curious about the technical side. The site is static, runs without a server, and costs nothing beyond the domain.
Where it runs
Everything is on Cloudflare, including the susici.org domain itself.
- Cloudflare Pages — hosts the static pages and three small functions (contact, photo submission, approval).
- Cloudflare R2 — two buckets for photographs. One is public and holds approved images; the other has no public access at all and is where unapproved ones wait.
- Cloudflare D1 — a SQLite database where submissions wait to be reviewed. Approved data never stays there — it goes into git.
- Cloudflare Turnstile — keeps bots out of the forms, with no puzzles and no tracking.
- Cloudflare Access — signing in to /admin with a code sent by email. There is no password to steal.
- Resend — sends the notifications when someone submits a photograph or proposes a change.
What it is built from
Every page is built in advance, one per person for each of 275 people in three scripts. There is no database queried when a page opens, which is what makes it both fast and cheap.
- Astro 7.3.3
- TypeScript 6.0.3
- Node.js 22
- Vitest 4.1.11
- Playwright 1.62.1
Where the data lives
The whole tree is one JSON file in git, not a database. Every change is a commit: what changed, when, and who approved it, revertable with one command. The data outlives both this site and Cloudflare.
On top of that, every difference from the data recovered from the old site must be declared in a separate file. If it is not, the site cannot even be built. That is the guard against anything from the original records being lost unnoticed.
What it costs
Nothing beyond the domain. Every service sits inside a free tier, and the limits are deliberately set so the site stops accepting submissions before it could ever generate a bill.
If you would like to help
If you have family records, photographs or corrections, the forms on this site are the easiest route — no account needed. If the technical side interests you, or you would like to see the code, get in touch.
This version
This version was built 2026-09-24, commit ea7a1ff.