Actualización del 4 de noviembre de 2026: el código sigue en GitHub, pero la web ya no se aloja allí. Ahora se publica en Cloudflare, y cada
git pushamainla actualiza automáticamente.
A la hora de preparar mi propio espacio en internet como José Alberto (eker), tenía muy claro qué necesitaba técnica y personalmente:
- Unir portfolio y blog sin fricciones: Quería que en la página principal se viera siempre mi última entrada del blog junto al acceso a mis proyectos SaaS (
AlarmGestySimpleComunication, que además contemplan KMP para sus versiones móviles). - Escribir en Markdown desde mi entorno de trabajo: Poder redactar una reflexión sobre mi día a día con Iván o un artículo técnico directamente en un archivo
.mdy publicarlo haciendogit push. - Alojamiento directo en GitHub: Tener tanto el código como la publicación integrados en mi cuenta de GitHub.
1. Colecciones de Contenido tipadas
El proyecto utiliza Content Collections de Astro 5 con validación de esquemas para organizar por un lado las entradas del blog (src/content/blog/) y por otro mis proyectos de software (src/content/projects/):
const blog = defineCollection({
loader: glob({ base: './src/content/blog', pattern: '**/*.{md,mdx}' }),
schema: z.object({
title: z.string(),
description: z.string(),
pubDate: z.coerce.date(),
category: z.enum(['monoparentalidad', 'cancer-y-memoria', 'codigo-y-vida']),
tags: z.array(z.string()).default([]),
featured: z.boolean().default(false),
draft: z.boolean().default(false),
}),
});
2. La última entrada siempre en portada
En la página principal (src/pages/index.astro), las entradas se ordenan automáticamente por fecha de publicación para destacar siempre la más reciente en el bloque principal, manteniendo conectada mi evolución en la programación con mis vivencias personales.