llamil.com
This portfolio, in English and Spanish, over a background where a box comes apart as you read.
- Role
- Design and engineering
- Client
- Personal site
- Year
- 2026
- Stack
- Astro, TypeScript, Tailwind CSS, WebGL 2, satori, sharp, Cloudflare
The brief
My own site, for business owners, agencies and recruiters, in English and Spanish. The first screen shows a figure from each case, and every page ends with my email address.
How it is built
-
Write each fact once.
Every text lives in one place, in both languages. Anything still missing is marked in drafts and left off the published site.
-
Fit the type.
Large titles are sized when the site is built, so each one fills its columns exactly in English and in Spanish.
-
One shader for the background.
A single small WebGL shader draws the moving background. Behind text, it only uses tones the text stays readable on.
-
Check the build.
Every build is checked before it can ship: links, both languages, social cards, structured data, security headers, and no placeholder on any page.
Capabilities on the home page: the part of the box for the clause being read lights up and is labeled.
- The clause being read, with its note under the sentence.
- Each part is labeled with its number, on a line from the part.
- The plates for this clause fill with light and slide out toward it.
- The floor's marks: crosses printed in whole cells of the dither.
By construction
- 2 languages, each page with its own addresses and its own social card
- 1 shader draws the whole background, with no 3D library
- 0 cookies
What it weighs
The initial JavaScript module is under 4 KB compressed.
The largest page, compressed, is under 30 KB of HTML with its CSS inside. The background's shader loads after the page and only draws while something moves.
Without WebGL, or with data saving or forced colors on, the background is a still CSS version. With reduced motion on, it doesn't move.
AI in this project
Yes, as a tool. AI coding agents proposed designs and wrote much of the code; I set the direction and decided what stayed.