Volver al blog
Next.jsReactDesign SystemTypeScript

Mi primer post: Construyendo mi portafolio

Reflexiones sobre el proceso de crear un portafolio desde cero usando Next.js, TypeScript y un Design System propio de 4 pilares.

7 de enero de 20254 min read

Bienvenidos a mi blog

Este es el primer artículo de mi blog, donde compartiré lo que voy aprendiendo en mi camino como Frontend Developer. No pretendo tener todas las respuestas, pero sí documentar el proceso real de construir cosas.

¿Por qué crear un portafolio desde cero?

Podría haber usado una plantilla. Hubiera sido más rápido. Pero elegí construirlo desde cero por una razón simple: el portafolio es mi producto.

Si mi propuesta de valor es construir productos web que resuelvan problemas reales, ¿qué mejor demostración que el sitio donde lo cuento?

Mi filosofía: El medio es el mensaje. Un portafolio no es solo una lista de habilidades, es una demostración viva de ellas.

El enfoque: Design System de 4 pilares

Antes de escribir una sola línea de código, definí un Design System basado en 4 pilares:

1. Propósito y valores

¿Por qué existe este sitio? No para "tener un portafolio", sino para demostrar que puedo construir productos web profesionales. Cada decisión técnica está justificada.

2. Principios de diseño

Definí reglas claras:

  • Claridad sobre decoración: Si algo no comunica, no existe
  • Consistencia pragmática: Patrones reutilizables, no perfeccionismo
  • Progresivo y accesible: Funciona sin JavaScript, mejora con él

3. Identidad y lenguaje

Colores, tipografía, espaciado. Todo documentado. No porque sea obligatorio, sino porque me obliga a tomar decisiones conscientes.

4. Componentes

Átomos, moléculas, organismos. Atomic Design aplicado con sentido común, no como dogma.

Las tecnologías que elegí (y por qué)

No elegí tecnologías porque "están de moda". Cada una resuelve un problema concreto:

TecnologíaPor qué la elegí
Next.js 15SSG para rendimiento, App Router para estructura clara
TypeScriptErrores en desarrollo, no en producción
Tailwind CSSVelocidad de desarrollo, consistencia automática
Framer MotionAnimaciones declarativas que respetan prefers-reduced-motion
shadcn/uiComponentes accesibles que puedo modificar

Importante: No uses tecnologías solo porque son populares. Entiende qué problema resuelven y si aplica a tu contexto.

Código real del proyecto

Así se ve un componente de este portafolio. No es código de tutorial, es código de producción:

interface LogoProps {
  className?: string
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'
}

const sizeMap = {
  xs: 'h-5 w-auto',
  sm: 'h-7 w-auto',
  md: 'h-10 w-auto',
  lg: 'h-12 w-auto',
  xl: 'h-16 w-auto',
}

export function Logo({ className, size = 'md' }: LogoProps) {
  return (
    <svg
      viewBox="0 0 35 37"
      fill="none"
      className={cn(sizeMap[size], className)}
      aria-hidden="true"
    >
      {/* SVG paths con fill="currentColor" para soporte de temas */}
    </svg>
  )
}

Notas sobre este código:

  • Props tipadas: TypeScript previene errores
  • Mapa de tamaños: Consistencia sin magic numbers
  • currentColor: El logo funciona en modo claro y oscuro
  • aria-hidden: Accesibilidad considerada

Lecciones aprendidas

Después de semanas construyendo este proyecto, estas son las lecciones más importantes:

1. Planificar antes de codear

Suena obvio, pero es tentador empezar a escribir código inmediatamente. El tiempo invertido en el Design System me ahorró horas de refactoring.

2. "Boring code" es mejor que "clever code"

Prefiero código que cualquier desarrollador pueda entender en 30 segundos sobre código "ingenioso" que solo yo entiendo.

3. Mobile-first no es opcional

El 60%+ del tráfico web es móvil. Diseñar para desktop primero es diseñar para la minoría.

4. Documentar decisiones, no solo código

Los comentarios explican el "qué". La documentación explica el "por qué". El "por qué" es más valioso.

5. Enviar es mejor que perfeccionar

Un portafolio publicado con imperfecciones es infinitamente mejor que un portafolio perfecto que nunca sale.

"Si no te avergüenza la primera versión de tu producto, lo lanzaste demasiado tarde." — Reid Hoffman

Lo que viene

Este blog será un espacio para documentar mi aprendizaje. Próximos temas:

  • Scroll-telling con Framer Motion: Cómo construí las animaciones de la sección About
  • Formularios que funcionan: Validación, honeypot anti-spam, y Resend para emails
  • Analytics sin invadir privacidad: Microsoft Clarity vs Google Analytics

Reflexión final

Construir un portafolio desde cero es un ejercicio de toma de decisiones. Cada línea de código, cada color, cada palabra es una decisión.

Lo importante no es que todas las decisiones sean perfectas. Lo importante es que sean conscientes y estén justificadas.

Si llegaste hasta aquí, gracias por leer. Esto recién empieza.


¿Tienes preguntas o feedback? Puedes encontrarme en GitHub o LinkedIn.