rubengonz.com
No es una plantilla. Construido desde cero porque quería algo que mostrara cómo pienso el código: la arquitectura, las decisiones de diseño, las cosas que no se ven en un readme de GitHub.
Empecé este portfolio porque no quería limitarme a listar habilidades en una página: quería algo que reflejara cómo construyo software de verdad. Así que lo traté como un proyecto real, con restricciones reales y decisiones que defender. Empezó como una pieza de frontend: Next.js 15 con App Router, route groups y layouts anidados, dos familias tipográficas locales (InputMono + N27) porque la tipografía importa y las fuentes del sistema eran la opción fácil, y un tema claro/oscuro con theming basado en variables CSS en todo el proyecto. Después construí el backend que hay detrás. PostgreSQL en Neon con Prisma como ORM, Auth.js v5 para un login en condiciones, rutas de administración protegidas por middleware y un panel CRUD completo para gestionar cada proyecto, curso y sección, todo mediante Server Actions, sin una capa de API aparte. La capa de datos estática que diseñé al principio pasó a una base de datos real sin tocar un solo componente. Ese era justo el objetivo. Cada parte de este código es algo que defendería en una code review.
Backend completo: PostgreSQL (Neon) + Prisma ORM, con migraciones que se ejecutan en el build en Vercel
Auth.js v5 con Credentials + JWT y configuración edge/node separada para que el middleware sea edge-safe
Panel de administración: CRUD de proyectos, cursos, timeline y stack, con reordenación drag-and-drop
Server Actions para cada mutación: sin capa REST aparte y con tipado seguro de extremo a extremo
/admin protegido por middleware en el runtime edge, con una segunda comprobación de auth en el layout
generateStaticParams lee los slugs de la base de datos en el build → páginas SSG a partir de datos reales
Los route groups aíslan el layout del home de las páginas de detalle: separación limpia, sin hacks de layout
Tema claro y oscuro, dos fuentes locales con next/font (sin layout shift), Tailwind CSS v4 y TS strict
Arquitectura internacionalizada (i18n) con soporte para inglés y español
Suite de tests completa con Jest + React Testing Library que cubre componentes y server actions