IBA
The problem
Insurance Benefits Associates needed a marketing site their own team could keep current: content changes without a developer in the loop, and without a monthly bill for the privilege.
What was built
Two generations. The first was a Qwik City site backed by a headless CMS on Cloudflare Pages, which gave the client editable content. The second replaced it with a static build served by nginx on a single droplet, after the CMS turned out to cost more in maintenance and hosting than the editing convenience was worth.
Deciding to remove a working system is harder than adding one, and the second version is smaller, cheaper, and has fewer ways to break.
The deploy that succeeded and served nothing
The failure worth writing down: the site deployed successfully and returned nothing. No error, no failed build, no alert. A green deployment in front of an empty site.
The cause was inside the framework's build pipeline. The Cloudflare adapter writes the worker entry point and the routing manifest, the two files that make the deployment serve anything, inside its static-generation step. The configuration in use disabled that step entirely. So the build ran, reported success, and produced output with no way to route a request.
Nothing in the build log said so. Finding it meant reading the adapter's source to work out what was supposed to write those files and when, rather than trusting the exit code.
That is the general shape of the lesson, and it applies well beyond one framework: a successful build is not a working deployment, and any pipeline where the success signal comes from a different layer than the artifact will eventually tell you it worked when it did not.
Attribution
This was a two-person repository. A collaborator authored 43 of the 104 commits on the main branch and added more lines to the application source than I did. What is mine here is the build and deployment plumbing, the serverless form endpoint, and the root-cause diagnosis above, not the site as a whole.