A steady little website starter.
Anchorpage is five pages of plain HTML, CSS and JavaScript for a small business website. No PHP, no database, no build step. Download it, change the words, put it on any static host.
What it is
A lot of small business sites still sit on shared PHP hosting with a contact form that mails through mail(). Anchorpage is the same kind of site without that machinery: static pages that load fast and avoid whole classes of server bugs, plus an optional contact form that runs on a small Cloudflare Worker instead of PHP.
Plain files, no build step
HTML, one stylesheet, two small JavaScript files. Open them in any editor, preview with python3 -m http.server, host them anywhere static files are served.
Safe defaults, stated honestly
Strict Content-Security-Policy on every page, no inline scripts, no tracking, no cookies. The README lists what this does and does not protect against.
A contact form without PHP
The starter includes a tested Cloudflare Worker that checks the Origin header, validates every field and caps body size. It ships unwired: you connect your own mail route, so no credentials live in the download.
What's inside
Everything you need for a five-page business site, plus the tooling that keeps it honest while you edit.
- Five pages: home, about, services, contact and a plain-language privacy page.
- One stylesheet with brand colors at the top and responsive layout throughout. No framework, no dependencies.
- Progressive-enhancement JavaScript only: the mobile menu and an optional EN/ES language switcher. The language choice stays in the visitor's browser (localStorage), never on a server.
- Contact form + Worker endpoint with 23 functional tests covering validation, Origin enforcement, size caps and fail-closed misconfiguration handling.
- A static checker script (
tools/check.py) that fails the build on missing CSP, inline scripts, broken local links, missing translations and common hardcoded-secret patterns. - A README that walks through customizing the content, wiring the form, and the honest limits of the setup.
The demo
The demo is the starter running as-is, with placeholder content for a fictional business called Bluebird Studio. Click through every page and try it on your phone.
Two things to know about the demo:
Bluebird Studio is not a real business. The text, services and prices are placeholders you replace with your own.
The demo's contact form is intentionally not connected. It shows the starter's honest "form not connected yet" state instead of pretending to send your message somewhere.
Download
The whole starter, zipped. Free for your own websites, personal or business.
anchorpage-0.1.zip
Get it running locally
unzip anchorpage-0.1.zip
cd anchorpage/site
python3 -m http.server 8000
# open http://localhost:8000
Honest limits
From the README, because they matter more than the pitch:
- Static hosting removes whole classes of server bugs, but nothing is unhackable. The hosting account, DNS and any third-party script you add still matter.
- The checker is a seatbelt, not an audit.
- The contact form sends nothing until you wire your own mail route. Until then its submit button stays disabled, by design.
- The EN/ES translations are AI-drafted. Have a native speaker review them before real customers see your site.
- No site is maintenance-free: hosting, DNS and content updates remain your responsibility.