All work

2026Design and development

This website

My own business card. Designed and coded from scratch, with no template and no JavaScript framework in the browser. The pages are built ahead of time, so they load at once.

Year
2026
Role
Design and development
Type
Personal website
Languages
Czech and English

What I did

  1. An intro with 3D layers

    The headline cycles through website, e‑shop, app and AI assistant. With each word the particles in the Data layer, the JSON in the API layer and the result on top rearrange.

  2. Two languages, one codebase

    All copy lives in typed dictionaries and both versions share the components. Czech gets non-breaking spaces after one-letter prepositions, so they never end a line.

  3. Share images from code

    Social previews, the favicon and the icons are drawn on every build, in the same typeface as the page.

  4. Motion that stays out of the way

    Smooth scrolling and content that reveals as you scroll. If your system asks for reduced motion, you get the site without it.

  5. Hidden surprises

    There are two. All I'll say is that one lives in the browser console.

  6. Analytics without cookies

    Traffic is measured with Vercel Web Analytics, so the site needs no consent banner.

Technology

Core
  • Astro 7
  • TypeScript
  • CSS
Motion
  • Motion
  • Lenis
  • Three.js
Build
  • satori
  • resvg
  • astro:assets
Hosting
  • Vercel
  • Web Analytics

Under the hood

No framework in the browser

Astro sends finished HTML and only a few kilobytes of my own script. The 3D library downloads only when it is actually needed.

Images in modern formats

Project screenshots are converted to AVIF and WebP in several sizes at build time. The browser picks the smallest one that is enough.

Accessibility

Keyboard navigation, a skip-to-content link and a proper heading order.

Next projectMexikanoWebsite and plugins for a restaurant

Want something similar?

Send me a few lines about what you need. I’ll get back to you and we’ll agree on next steps.

Get in touch