melgart.net

Site Build Stats

Large language models make it cheap to build software fitted exactly to the job at hand. Widely used frameworks are great, but when you don't need all their features, dropping down to something simpler is now easy. So in 2026, I migrated the site off Next.js onto Astro. It's still completely static with no server side rendering, nothing computed per request, but also now no unnecessary middleware. This also makes everything quite small: the fully static pages carry no JavaScript at all, and what weight the site does have is almost entirely from two interactive widgets. Everything below measures what a browser actually downloads, and is regenerated on every build.

Landing on the homepage downloads 81.9 KB gzipped. A static page here is 3.3 KB.

16 blog posts · built September 9, 2026 · commit b44238b

By file type

TypeGzippedRaw
HTML121.4 KB366.1 KB
JavaScript49.8 KB160.6 KB
Images915.1 KB939.9 KB
Other149.4 KB153.9 KB
Total1.21 MB1.58 MB

CSS is inlined into the HTML (no separate stylesheet requests): 3.5 KB gzipped, already counted within HTML above. These totals cover the site's own 37 files; the search bundle is measured separately below.

By page

RouteGzippedRaw
/posts101.0 KB296.2 KB
/81.9 KB286.5 KB
/sports51.4 KB170.0 KB
/stats4.8 KB18.0 KB
/saved-on-hosting3.3 KB11.2 KB

Each page counts only the HTML and JavaScript it actually loads, so fully static pages stay tiny; the pages with interactive islands (/, /sports) also pull a shared React bundle, and / the search widget on top of it. Images aren't included here; they're in the site total above. /postsrolls up all blog posts rather than counting as a single page.

Search

Search is Pagefind, which is static too: there's no search server, just an index the browser downloads a piece at a time. Almost none of it loads unless you actually search.

WhenGzippedRaw
On page load
the search widget, wherever the box appears
32.0 KB131.3 KB
On your first search
the engine and this site's language index
95.4 KB155.7 KB
Per query
index and content chunks, a few of the 18 at a time
99.2 KB98.8 KB

The index and language payloads are already compressed on disk and for the chunks it reads slightly larger because gzip is actually adding framing. Pagefind also ships 343.4 KB across 6 files that nothing on the site ever requests so those bytes aren't counted above.

← Back to home