A nutrition and supplements board that ran on phpBB from 2004 and went quiet in 2010, rebuilt in 2026 with no application server at all: the forum is a directory of JSON files in git - one per thread, member and config - that Astro renders at build time.
VitaTalk has been a domain since 2004. It ran as a phpBB board about nutrition, supplements and everyday health, went quiet in 2010, and was rebuilt from scratch in 2026 - not as a restored phpBB, but as a static forum with no application server behind it.
The old board came along. Threads from 2005 sit next to new ones with their original authors, dates and replies intact, and 72 member profiles were carried over, so a discussion started 21 years ago still reads as the discussion it was. Six categories organise the board today: supplements and vitamins, nutrition and diet, sports nutrition, healthy aging, sleep and stress, and general health.
The engine treats git as the database. The whole forum is a directory of JSON files committed to the site repository - one file for the forum config and category list, one per member, one per thread with its replies inline - and Astro renders them at build time. A thread being a single file is a deliberate choice: concurrent writes never collide, and every change is a reviewable diff with an author and a timestamp.
Provenance is built into the data model rather than added as a disclaimer. Every post carries one of three labels shown next to the byline - human, assisted or imported - and the label is enforced by the loader, not by editorial habit. Assisted threads must list the dated sources they were drafted from; a declared fictional persona must carry a disclosure and may only author assisted content, so a generated profile can never appear to report firsthand experience.
A forum with no server: the usual phpBB stack - PHP, MySQL, sessions, patching - is replaced by files in a repository and a static build, which is why a board that went quiet in 2010 can be back online without an application to maintain.
Twenty-one-year-old discussions were treated as content worth keeping, not as legacy to discard: original authors, dates and replies survived the migration.
Provenance is a data type, not a policy page: the loader refuses a synthetic member without a disclosure and refuses firsthand claims from one, so the rule cannot rot.
One thread equals one file, which removes the write-collision problem that any generated or multi-author pipeline otherwise has to solve with locks.