Proyectos 024 min de lectura

Portfolio

La parte visual de este portfolio está inspirada en Bocanada, el disco de Gustavo Cerati de 1999: sus tonos, sus rombos y sus puntos rojos. Esta página explica esa inspiración, las reglas que salieron de ahí, y con qué tecnologías está hecho el sitio y por qué.

Año
2026
Rol
Diseño y código
Hecho con
Astro · TypeScript · Tailwind CSS · GSAP

Bocanada

Bocanada es el disco que Gustavo Cerati publicó en 1999, el primero después de Soda Stereo. Es mi favorito de los suyos: acababa de salir de una banda enorme y el álbum que hizo es más lento, más raro y más suyo que todo lo anterior. Me pareció la referencia correcta para un sitio que una persona hace sola.

El sitio no reproduce el disco. Toma de él una paleta y unas pocas marcas, y la página de inicio alude a la portada.

  • Los tonos. El azul cobalto, el humo y la tinta de la portada; el papel del libreto para las secciones claras.
  • Los puntos rojos. El interior de la funda es piel azul con puntos rojos. Están detrás de la sección de Experiencia y derivan muy despacio detrás de la lista de Proyectos.
  • El rombo rojo y la línea roja fina. Los únicos dos acentos que el sitio se permite: el rombo marca el índice y el elemento actual, la línea marca la lectura.
  • La página de inicio es una alusión a la portada: el nombre partido alrededor de un retrato que se funde con el azul y el humo.
La página de inicio de este sitio: el nombre STEVEN MENDEZ partido alrededor de un retrato en azul cobalto y humo, con una ficha de datos en la base
Fig. 01La página de inicio: el nombre partido alrededor del retrato y una ficha de datos sobre los tercios.
La apertura de la sección de Experiencia sobre una textura de piel azul, con el número de sección, el kicker y el título
Fig. 02Experiencia abre sobre la piel azul del interior de la funda.

Las reglas

Una referencia solo sirve si se convierte en reglas que se pueden comprobar. Estas son las del sitio.

  • Dos tonos. Tinta y papel, como una funda y un libreto. Cada componente se lee bien en ambos, porque los colores de rol se invierten con el fondo.
  • El rojo es una marca, nunca texto. La línea roja significa lectura o sección: la regla bajo cada título, el filete de progreso arriba, el idioma activo. El rombo rojo significa índice o aquí y ahora: el kicker, los números de pista, el puesto actual. Todo lo estructural es gris.
  • Una sola escala tipográfica. Seis secciones con seis layouts distintos, pero el título de un trabajo, de un proyecto y de una credencial miden lo mismo, y una fila, una tarjeta y un grupo respiran igual.
  • Nada se mueve para siempre. El único movimiento perpetuo es la deriva de los puntos; todo lo demás ocurre una vez, al entrar, y después se queda quieto.
La sección de Proyectos: dos filas regladas, cada una con índice, título, año a la derecha y el resumen, los hechos, el stack y los enlaces del proyecto
Fig. 03Proyectos como lista de pistas: índice, título, año y la prueba en las columnas de al lado.

Con qué lo construí, y por qué

El stack es pequeño a propósito. Cada herramienta está aquí porque quitó algo en vez de añadirlo.

Astro 7
El sitio es HTML estático sin JavaScript por defecto, así que carga antes de que corra cualquier script y se lee sin él. Astro también le da las rutas en inglés y español, fuentes autoalojadas con reservas de métricas iguales, imágenes AVIF y WebP responsivas desde un solo archivo y la view transition al cambiar de idioma.
Tailwind CSS 4
Los tokens de diseño viven en CSS, en un solo bloque de tema: colores muestreados de la portada, una escala tipográfica fluida y tres niveles de ritmo vertical. Cada rol de la escala tiene su utilidad, así que un componente nombra su rol en vez de sus números.
GSAP 3
ScrollTrigger y SplitText construyen cada sección cuando entra y dibujan los filetes con el scroll. Es una capa encima: sin JavaScript o con movimiento reducido, la página muestra su estado final y nada se mueve.
TypeScript 6
Estricto en todas partes. El contenido es dato tipado, un archivo por sección, con los dos idiomas lado a lado para que una cadena nunca falte en uno de ellos.
Geist · Geist Mono
Una grotesca ligera para todo lo que se lee y un solo peso de mono para las microetiquetas, ambas servidas desde este dominio.
pnpm · ESLint · Prettier · husky
Las dependencias esperan siete días desde su publicación antes de poder instalarse y nunca se degradan, y cada commit pasa por el linter, el formateador y Conventional Commits antes de entrar.
Lighthouse CI
Tres corridas móviles contra el sitio compilado, y el build falla por debajo de 90 en rendimiento y buenas prácticas o de 95 en accesibilidad y SEO.
Generated textures
La piel azul y la cinta de humo son imágenes generadas con la funda del disco como referencia y comprimidas después a unos pocos kilobytes cada una. El retrato de la página de inicio soy yo, puesto en el campo de la portada.