---
title: "Rebuilding lisovyi.net: static, typed, zero JavaScript"
description: "Why I am rebuilding my personal site as a static Astro 7 site with no client-side JavaScript, and what that buys me in speed, privacy, and AI-agent friendliness."
pubDate: 2026-09-20
tags: ["astro", "web", "static-sites"]
---

My previous site was a simple hand-rolled page. It worked, but it wasn't mine in the ways that matter: no typed content, no source-controlled history, no way to publish from a terminal.

The rebuild has a few deliberate constraints:

## No client-side JavaScript

Every page is server-rendered HTML. There are no hydration scripts, no framework runtime, no analytics. The result is a page that loads fast on any connection and works with JavaScript disabled.

## Content collections with schemas

Every blog post is a Markdown file validated by a Zod schema at build time. If I forget a `pubDate` or mistype a tag, the build fails with a readable error instead of shipping broken metadata.

## Raw Markdown mirrors and llms.txt

Every post is also served as raw Markdown at `/blog/<slug>.md`, and `llms.txt` is generated at build time listing every live page. AI agents (and humans with `curl`) can read the source directly.

## Publishing is a git push

The whole workflow is:

```sh
write src/content/blog/my-post.md
git commit
git push
```

Push to `beta` for a staging deploy at `beta.lisovyi.net`, merge to `main` for production. That's it. That's the CMS.
