Skip to content
lars danau.
Menu
All work

larsdanau.dev

This site. Zero JavaScript unless it earns its spot, plus a command palette, live stats and a contact form I built myself.

Role
Design & development
Context
Personal · solo
Year
2026
Status
Live

The problem

A portfolio has two audiences who want opposite things. People skim it in thirty seconds. Crawlers and language models read every single byte. The old version managed to disappoint both: plenty of words about what I do, very little proof of how.

Approach

  • HTML first. Every page is pre-rendered. JavaScript only shows up for the command palette, the ASCII hero and the live stats (small, framework-free modules), plus one React island for the contact form. Each one loads only where it’s needed. Your battery says thanks.
  • One accent, one rule. A near-black canvas, a mono and sans font pairing, and a single accent colour reserved for things you can actually click.
  • A server only where it pulls its weight. The contact form and live stats run as serverless functions. Secrets stay on the server, responses get cached at the edge, and if an API goes down the widget just quietly says “offline” instead of throwing a tantrum.
  • Built to be read by machines. Structured data on every page, hreflang for both languages, an RSS feed per locale and an llms.txt that explains the site to AI assistants. Hi there, by the way.

Outcome

A site that loads like a static page because, well, it is one. It still has enough personality to feel like mine though. Press ⌘ K and poke around a bit.

esc
↑↓ navigate↵ selectesc close

Achievements

0/12 unlocked