Dandy Portfolio
Mi rol — Desarrollador full-stack (solo)
El portafolio que estás viendo ahora no es un sitio estático — es una aplicación full-stack completa: multilenguaje, con captación de leads, generación de PDF e integración con base de datos.
El problema
Necesitaba un portafolio que también funcionara como prueba técnica en sí mismo — no solo listar proyectos, sino demostrar arquitectura, i18n, integración de backend y deploy en la práctica.
La solución
Next.js 16 con App Router y React 19, TypeScript en modo estricto, internacionalización con next-intl (portugués, español e inglés), Supabase como backend de los formularios de cotización, y generación de PDF bajo demanda con @react-pdf/renderer.
Mi responsabilidad
Diseñé y construí todo el sitio yo solo: arquitectura, sistema de diseño, los dos wizards de captación de leads, la generación de PDF, el sistema de traducciones y el deploy en Vercel con dominio propio.
Arquitectura
Next.js App Router con rutas de API propias; los formularios usan React Hook Form + Zod, con el mismo schema validado en cliente y servidor; las rutas de API guardan en Supabase, generan un PDF del briefing y disparan correos vía Resend.
Funcionalidades principales
- Sitio multilenguaje (PT/ES/EN) con next-intl, incluyendo rutas y metadata por idioma
- Dos wizards multi-paso de captación de leads, con validación compartida cliente/servidor vía Zod
- Generación de PDF bajo demanda a partir de cada briefing enviado
- Página de estado de proyecto por token, privada y sin necesidad de login
- Dominio propio con deploy continuo en Vercel
Decisiones técnicas
- Zod como única fuente de validación, compartida entre el formulario (cliente) y la ruta de API (servidor), para que nunca queden desincronizados
- Honeypot simple en los formularios para filtrar bots sin necesitar captcha
- Service role key de Supabase confinada solo al servidor, nunca expuesta al navegador
Desafíos
Todavía voy a detallar los desafíos técnicos reales de este proyecto.
Qué aprendí
Todavía voy a detallar los aprendizajes específicos de este proyecto.