Static HTML. Regenerated dynamically. Whenever I feel like it. Via a custom admin interface.
For ten years, I had a phpBB bulletin board co-exist with some static HTML pages. It wasn't great, but it was the best I could do.

Then spammers figured out how to spam my phpBB, so I simply took it down.
Claude Code eventually got me thinking. What could I do with AI? Quite a lot actually.
For this site, I decided to lean into static HTML as much as possible.
Each month I get about:
- 3-5 new updates
- 300 unique visitors, who actually interact with the site
- 19,000 uniques who visit then simply bounce
- 3 million bots visiting the site a month

(This chart was generated with AI)
So, we have a new 900-90-9-1 Rule. 900 bots, 90 visitors, 9 who interact, 1 who contributes. Except for me it is more like a 1,000,000-10,000-100-1 ratio.
This is where static HTML is so great. I only have about 300 pages. I update them about once a week. If my site was dynamic, I would be serving up over 3 million dynamic pages to bots. When I generate static HTML, I only need to dynamically generate about 300 pages a week. My shared web server can then very efficiently serve up a million requests for static HTML. So I use python scripts to generate static HTML, and only use dynamic pages where it makes sense.

(This chart was hand drawn then neatened with AI)
I could generate all my static HTML pages once every 5-10 minutes, and it wouldn't put as much load on the system as the bots.
To revive my old phpBB, I simply relied on Claude Code. AI imported the puzzles from my original HTML into MySQL. I had AI write a script to dynamically generate new HTML straight from the DB, and it looked just like my old hand crafted site. I then migrated all the old phpBB puzzles into the DB and regenerated again. Now all my original puzzles, and the community added puzzles were all on the same page. Literally on the same page, instead of different pages, like they were before. I also added the old phpBB comments to the DB, along with some other feedback.

I then added some dynamic scripts to allow users to submit feedback, new puzzles, or comments. All the content now lives in the MySQL database (DB). Everything is rendered via Python scripts via HTML templates into static HTML pages. Visitors get fast, simple pages. The underlying content can be reviewed, managed, and deleted all from a Python admin dashboard. If everything looks good, I regenerate the HTML, server side.

This works really well for my site: Users who engage with my site spend on average about an hour clicking around. Very few users submit anything. I don't ask submitters to register, or to verify their email address. It is hopefully therefore understood that their submissions will take time to be reviewed and approved.
This works really well for me as well: I can review multiple submissions at once. If things look good, I can regenerate everything at once. Plus I can do things now that previously weren't possible. My pages look like they could be dynamic, e.g. I show how many comments (2) are available to view on the relevant comments page. The server need only calculate this once, when I regenerate.
This works really well for my hosting provider:The site is running on a low cost, shared, cPanel style host. I learned early on that my shared tenant hosting provider doesn't appreciate sites that spin up hundreds of CGI requests. This no longer constrains me. I generate once. Users read hundreds of times.
This works really well for Vibe Coding as well:It really doesn't matter how elegant the underlying scripts are to regenerate the static HTML. They don't need to scale or perform. The only areas I need to focus on are the pages that are truly dynamic, the ones that pose a security or spam or performance concern.

So that's how I rebuilt my dynamic phpBB site with static HTML... Frankly, the more I think about it, the more I am surprised static HTML isn't making a resurgance.
What do you think?
Check it out: Home Page.
Send me some feedback. Remember to check the checkbox if you don't want to be published on the wall of fame/shame
P.S. All text, on this page, was hand written. None of this was written by AI. AI helps me with everything, except my writing. To create this page, I use a simple text editor that looks like this...

So if my HTML looks a little janky, don't blame Claude Code, that is 100% on me. I learned assembly with a hex editor, and I learned HTML & CSS & Javascript with Notepad.exe.