waldorff.is
My own bookkeeping firm's website, from a 2023 draft that was never deployed (a template with a 22 MB background image) to a live two-page static site in Icelandic served through Cloudflare.
- Role
- Founder and owner of Waldorff SF · built the current site
- Timeline
- 2023 draft · live site 2026
- Status
- Live (rebuilt)
- Live
- waldorff.is
- HTML
- CSS
- Vanilla JavaScript
- AVIF and WebP images
- JSON-LD
- Cloudflare
- over 23 MB → about 290 KBHome page weight, 2023 draft (never deployed) and live
- over 22 MB → about 140 KBLargest file, 2023 draft and live
- over 180 KB → about 2.5 KBHome page JavaScript, 2023 draft and live
- 0 of 6 → 2 of 2Pages with Icelandic lang and description, 2023 draft and live

The problem
Waldorff SF is my bookkeeping and advisory firm in Iceland. Its website has one job: someone searching in Icelandic for a bookkeeper should find the firm, see what it does within a minute, and know how to phone or email.
The 2023 draft could not do that reliably, and it was never deployed. It was a stock Bootstrap template (its stylesheet is named kool-form-pack) with six HTML files and no build or deploy step in the folder. All six had an empty meta description, five declared lang="en" over Icelandic text, and none had an h1. Twelve links pointed to a home.html that was never in the folder, and the logo kept the template’s alt text, “Your Logo”. The home page used a PNG of over 22 MB as a fixed background. A video of over 32 MB sat in the folder, though no HTML, CSS or script file referenced it.
What I built
The live site at waldorff.is is a static, Icelandic-only site of two pages. The home page has a hero with a short promise, three pillars, nine service tiles, a three-step process (assess the needs, set up the systems, keep track of everything), an about section, and contact details with a map. The services page has one anchored card for each of the nine services. There is no contact form; visitors phone or email.
I built the current site, and it is live at waldorff.is, served through Cloudflare. A new version is being rolled out; the figures on this page describe the version that was live on 25 October 2026.
Architecture
Each page is a plain HTML document that references one stylesheet and one script, plus fonts and images. The only other script on the home page is Cloudflare’s own email-protection script, served from /cdn-cgi/.
Engineering highlights
From over 23 MB (2023 draft) to about 290 KB (live)
The 2023 draft’s home page pulled in Bootstrap, an icon font, jQuery and the 22 MB background. The rebuild replaces them with one 23 KB stylesheet. The hero still has a photographic texture, a calculator photo tinted and masked in CSS, but it ships as a 1920 by 1280 pixel AVIF (19,193 bytes) with a WebP fallback (39,090 bytes). The draft’s figure is file size on disk, since it was never deployed; the live one is bytes on the wire. Compared raw to raw, the new page is still over 69 times smaller. Evidence: home-weight, largest-file, hero-image.
One portrait, four files
The portrait is served as AVIF and WebP at 480 and 960 px, selected with sizes, with explicit width and height and lazy loading. The smallest variant is 23,801 bytes and the largest 145,404. The 2023 draft’s about page used a 978,974-byte PNG headshot. Evidence: portrait-variants.
Icelandic search and screen readers
Both pages declare lang="is", have one h1, and carry their own title and description. The home page adds a canonical URL, hreflang entries, Open Graph tags and JSON-LD that describes the firm as an accounting service with nine offers, matching the nine services on the page. The sitemap lists both URLs. The 2023 draft had none of the canonical, hreflang, Open Graph or JSON-LD markup, and no h1. Evidence: lang-description, seo-markup.
JavaScript as an enhancement
The site’s own script is 1,337 bytes: a mobile menu and a scroll reveal. Its first comment says the site works fully without it. The stylesheet hides reveal elements only when a one-line inline script has added a js class, and a reduced-motion rule shows them anyway, so a visitor without JavaScript, or one who asks for less motion, sees all the content. The 2023 draft’s home page loaded three scripts, jQuery, the Bootstrap bundle and a smooth-scroll file, over 180 KB in total. Evidence: home-js, js-enhancement.
Caching and response headers
CSS and script URLs carry a version query (?v=20261002), and static assets are served with a one-year max-age, while HTML is no-cache, so a changed stylesheet or script can be fetched under a new URL. Responses also carry nosniff, a strict-origin-when-cross-origin referrer policy, SAMEORIGIN framing and a permissions policy that turns off camera, microphone and geolocation. Evidence: cache, headers.
Process & quality
I built the current site and run the firm it serves, so what it says and what it leaves out are my decisions: Icelandic only, two pages, and phone and email instead of a contact form. A new version is being rolled out. How it is built and checked will be written here once it is live, and until then I claim nothing about tests, CI or review for this project.
The figures above were measured on 25 October 2026 with curl and shell commands against the live site and the 2023 draft folder, and the ledger lists every command and its output.
What I’d do differently
- Keep the source under version control from the first day. The 2023 draft had none, and the only history it has is file dates.
- Add
Strict-Transport-Securityand a Content-Security-Policy. Neither appeared on the home page response I checked on 25 October. - Automate the checks the 2023 site failed:
lang, description,h1and broken-link checks are a few lines of script, and would have caught every defect listed under the problem. - Version image and font file names as well as CSS and script. A year-long cache on unversioned names means a replaced portrait may not reach returning visitors.
- Remove
/send_email.phpfromrobots.txt; the pages no longer have a form.
Source available on request.




