Projects tim-kruse.com

tim-kruse.com

Live →

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

The start page in all six designs side by side.
Period
2022 – present
Role
Solo, concept to operations
Status
Code
Private repository

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.

Stack
AstroTypeScriptDockernginxGitHub Actions

Decisions

ADR 0002

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.

ADR 0007

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.

ADR 0008

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.

ADR 0003

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.

ADR 0004

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.

This site in a different design

Same content, different look. You start on its home page, and every link stays in the chosen design.

What is this? About this site →