A fast static site, checked before every change goes live
shahroudi.us is the site you are reading. I built it in October 2026 in plain HTML and CSS, with no framework and no build step, and Cloudflare Pages serves it. It is built the way I build websites for small businesses, and every number on this page was measured on it.
- Built October 2026
- Plain HTML and CSS
- Served by Cloudflare Pages
- No cookies
Speed
93 for performance on a phone, and 100 on the other three
Lighthouse is Google's tool for grading a web page. I ran it three times on the live home page on 23 October 2026, in its phone setting, and it gave the same four scores each time. Lighthouse counts 90 or more as good.
- Performance
- 93
- Accessibility
- 100
- Best practices
- 100
- SEO
- 100
What moved it
The fonts were the slow part
The site's three fonts first came from Google Fonts, and Lighthouse blamed them for about 1.4 seconds of delay before the page appeared on a phone. Serving the same fonts from the site itself took the performance score from 83 or 84 to 93.
The portrait went the same way. It is served as AVIF at 55 KB, about half the 101 KB WebP that stays behind for browsers that cannot show AVIF.
Before and after the fonts moved onto the site
- Before, fonts from Google
- After, fonts from the site
Performance score
Out of 100, higher is better
First paint
When the first text appears, lower is better
Largest paint
When the portrait appears, lower is better
Where the home page's 225 KB goes
Found
Written for search engines and AI assistants to read
Every page that search engines index carries structured data, a description of the page in a format they read: who I am, the services I offer, each note as an article, and where the page sits in the site. A sitemap lists the pages, and llms.txt, a plain-text summary of every page in a format some AI tools look for, describes the whole site in one file.
The domain is verified in Google Search Console with the sitemap submitted, and the site's icon comes in the square sizes Google asks for before it will show an icon beside a result.
Privacy and security
No cookies, and a short list of what each page may load
A visitor should be able to read the site without being tracked or asked to accept anything.
-
No cookies, no banner
Visitor counts come from Cloudflare Web Analytics, which sets no cookies, so there is nothing to consent to.
-
Nothing from Google
The fonts are served from the site, so reading a page sends nothing to Google.
-
A strict security policy
Every response tells the browser to use HTTPS only and lists what the page may load: the site's own files, the analytics script and the form service. The one inline script, which applies the saved theme before the page paints, is allowed by its hash, so an injected script would not run.
-
A form that works without JavaScript
The contact form sends to a form service and lands on a thank-you page, with or without JavaScript.
How a change goes live
A preview and a check before anything is published
Each change starts on its own branch, and Cloudflare Pages publishes every branch at its own preview address, marked so search engines skip it. I look at the preview at desktop and phone width, in light and dark, and only then merge it into the live site. In its first two days the site took 33 changes this way.
Before each push, a check script reads every page. It fails on a link or image that points nowhere, a page missing its title, description or canonical address, structured data that does not parse, a skipped heading level, and a script the security policy would block.
Every claim about a project is checked against that project's own code before it goes up. When one claim turned out to have nothing in the code or its history behind it, it came off the site.
What it shows
Two of the services, and the way I work
-
A fast website
93 for performance on a phone, 225 KB for the home page, and no framework or plugins to keep patched.
-
Found on Google and in AI assistants
Structured data on every indexed page, a sitemap, llms.txt and a verified Search Console property.
-
Seen before it is live
Every change gets a preview and a check before it is published, so nothing reaches the live site unseen.
It is the same work I offer small businesses.
Next
Could your business use a site like this?
If it could, here is what I offer. The other projects are Taqvim, a Persian calendar for Chrome and Edge, and the website of a French bakery and the automation behind it. All three are on the projects page, and my resume has the rest.