Corey Prophitt’s marketyour.games is a fully featured web product that includes user accounts, a search dashboard for content creators, folders for organizing them, Stripe‑based payments, and transactional emails via Postmark, all while adhering to progressive enhancement and requiring no JavaScript. Despite its modern functionality, the entire application is written in the C programming language and served through the Common Gateway Interface (CGI) on an OpenBSD system using the native httpd server and an embedded SQLite database.
Each HTTP request triggers the httpd server to fork a fresh process that runs the compiled C binary; the binary inspects CGI environment variables (request headers, method, query string, body) and writes HTML directly to standard output, with all static assets compiled into the executable and served from memory. Deploying a new version requires only replacing the binary, which causes zero downtime because every new request automatically picks up the updated file. Security is strengthened by OpenBSD’s pledge and unveil system calls that restrict the binary’s capabilities and by httpd’s default chroot, which isolates the CGI process to a limited portion of the filesystem.
Because CGI provides little built‑in assistance, Prophitt had to write his own utilities in a cgi.h header for tasks such as cookie parsing and creation, query‑parameter parsing and validation, form data processing, and HTML escaping—functions that frameworks typically supply. While he appreciates the minimal supply chain risk (depending only on libcurl, libsodium, a single‑file libcjson, and the SQLite amalgamation) and the ability to work with simple tools like Vim, gdb, and valgrind, he notes that a shared utility library would reduce this manual effort.