tim-kruse.com
Live →A static site with my projects, in six designs. It serves its own fonts, with no third-party server.

In late 2022 I put up a business card here: a profile card with links, built as a Vue app. There was no room in it for my projects or the decisions behind them, and for a handful of pages that never change it shipped an entire JavaScript bundle.
Since 2026 it has been a static Astro site in two languages. Every page is a finished HTML file, and the server forbids scripts through its Content Security Policy. So the privacy policy does not have to claim anything it cannot prove.
Then the designs came along, because I enjoy building them: the same content in six completely different looks, each with its own metaphor and its own frame. The “Design” button in the bottom right switches, and nothing is remembered – every link stays in whichever design you are in.
Decisions
No script, not even for the switcher
A privacy policy saying that this site loads no script is something you can prove. So there is none, not even for the design switcher: it is an HTML popover.
Complete designs instead of theming, six at most
Different colours on the same markup change the paint, not the effect. Each design has its own frame and its own start page, yet the content exists only once. There will not be more than six: a new one replaces an old one.
Remember nothing
A plain address always shows the default design; a design has addresses of its own. Storing the chosen design in the browser was already built and came out again: sharing tim-kruse.com should not depend on what the recipient clicked last.
Images only when cleared
Almost every project runs on real data from real people. A screenshot only goes on the site once it has been scrubbed and cleared; otherwise a drawn mark stands in for it.
The why without a map
The project pages explain why something is built the way it is, but not where it can be attacked: no open endpoints, no permission model in detail, no product names of security-relevant parts.





