Project
This Portfolio
The site you're looking at: Angular 21 without zone.js, prerendered at build time, with light and dark themes and internationalisation, served as static files from Cloudflare.
- Angular 21
- Tailwind CSS 4
- Prerender
- i18n
- Cloudflare
Context
A portfolio should load instantly, be readable without JavaScript and survive my home server being switched off. Those three conditions ruled out a regular SPA and shaped every other decision.
Architecture
Angular 21 in zoneless mode with Signals, and every route prerendered at build time to static HTML that Cloudflare serves from its network. Tailwind CSS 4 with design tokens for both themes, and Angular's native i18n with Spanish as the source language.
Decisions
The content lives in typed TypeScript constants rather than Markdown: it's extracted for translation with the same tools as the rest of the interface, and the compiler catches any missing field. The theme is applied by a pre-boot script to avoid a flash on load.
What I'd do differently
I'd have fixed the type scale and the hierarchy rules earlier. Several sections were redesigned after feedback that an early style guide would have prevented.