Saltar al contenido principal

Mi primer proyecto full stack: del ASIR al portfolio en producción

portfolio astro docker nginx fullstack

Cuando terminé mis prácticas en Grupo SIAP, decidí crear mi propio portfolio. No porque me hiciera falta para buscar trabajo — todavía estaba en ASIR — sino porque quería un sitio que realmente fuera mío. Sin plantillas, sin CMS, sin depender de servicios de terceros.

Lo que no sabía entonces es que construir el portfolio me iba a enseñar más sobre infraestructura que muchos de los módulos del ciclo.

El stack real

Elegí Astro porque genera HTML estático, carga en nada, y con Tailwind CSS puedes hacer algo que se vea bien sin ser diseñador. Lo desplegué en Docker sobre mi VPS de Oracle Cloud (el Ampere A1 con 4 cores y 24 GB — lo pillé antes de que se agotaran). Nginx como proxy inverso, Let’s Encrypt para SSL, y fail2ban para que los bots no se pongan creativos.

El pipeline es sencillo: escribo en Markdown, el build de Astro genera el HTML estático, Docker Compose lo sirve con Nginx. No hay base de datos, no hay runtime JavaScript en producción — solo archivos planos.

Lo que aprendí

La infraestructura es tan importante como el código. Saber escribir HTML y CSS no sirve de nada si no sabes cómo se sirve, cómo se protege y cómo se mantiene disponible. Mi formación en redes y sistemas fue lo que realmente hizo funcional este proyecto.

Docker no es magia. Al principio lo usaba como una caja negra. Después de entender namespaces, cgroups y cómo funciona realmente la contenedorización, empecé a escribir mis propios Dockerfiles optimizados en lugar de copiar de Stack Overflow.

Documentar desde el día uno. Este post es parte de esa documentación. Cada vez que cambio algo en el portfolio, anoto por qué y cómo. Cuando vuelvo tres meses después a tocar una configuración de Nginx, no tengo que adivinar lo que hice.

Lo que falta

El portfolio ha evolucionado desde entonces. Añadí proyectos con descripciones detalladas, un blog con posts técnicos, y el formulario de contacto funciona con mi propia API. El CI/CD sigue siendo manual (docker-compose up -d --build) y tengo pendiente automatizarlo con GitHub Actions. Pero para un proyecto que empecé como escaparate, ha acabado siendo mi laboratorio de infraestructura personal.

Si estás empezando: no esperes a tenerlo todo perfecto. Monta algo simple, ponlo en producción, y mejóralo sobre la marcha. El código nunca está terminado.