3 de julio de 2026
Cómo funciona este portafolio: Next.js 15, Postgres y un admin potenciado por Gemini
Cada sección de este sitio — experiencia, proyectos, habilidades, incluso este blog — vive en PostgreSQL y es editable desde un panel de administración propio. Así encajan las piezas.
El stack
- Next.js 15 (App Router, Server Components) servido por un único contenedor Docker en un VPS detrás de nginx.
- PostgreSQL guarda el contenido como documentos JSONB: una fila por sección, con las variantes
enyeslado a lado. - Gemini impulsa dos cosas: la traducción con un clic entre inglés y español en el admin, y el asistente de chat que puedes probar en el sitio.
Publicación instantánea, sin redeploys
La página principal es un Server Component que lee el contenido a través del caché de Next.js con un tag. Cuando algo se guarda en el admin, la server action llama a revalidateTag — el siguiente visitante recibe el contenido fresco. La imagen de Docker solo se reconstruye cuando cambia el código, nunca por contenido.
El chat RAG
El asistente responde preguntas sobre mi experiencia usando una base de conocimiento construida en el momento desde las mismas filas de la base de datos que edita el admin, así que nunca queda desactualizada. Los guardrails lo mantienen en tema, los límites por IP lo mantienen seguro, y cada pregunta se registra (con la IP del visitante guardada solo como hash irreversible) para analítica.
¿Por qué construirlo en vez de usar un CMS?
Porque el portafolio en sí es el caso de estudio: modelado de contenido, autenticación con roles, integración de IA, i18n con hreflang correcto y controles de seguridad — todo lo que hago para clientes, funcionando en producción en mi propio dominio.