refactor: homepage with personal brand focus (no empire talk) + profile photo
CI/CD Pipeline / Build & Deploy (push) Failing after 47s

This commit is contained in:
wh-leader
2026-05-11 12:51:14 +02:00
parent f93ae22b77
commit 8a30951a64
+73 -65
View File
@@ -20,75 +20,50 @@ const blogPosts = (await getCollection('blog'))
<BaseLayout <BaseLayout
title="Inicio" title="Inicio"
description="Portfolio personal de David Aragón - Indie builder construyendo €4M ARR en productos SaaS españoles" description="Portfolio personal de David Aragón - Builder construyendo productos y compartiendo el viaje"
> >
<Header /> <Header />
<main class="flex-1"> <main class="flex-1">
<!-- Hero Section --> <!-- Hero Section -->
<section class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-20 text-center"> <section class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-20">
<h1 class="text-5xl md:text-6xl font-bold mb-6"> <div class="flex flex-col md:flex-row items-center gap-12">
Hola, soy <span class="text-primary">David Aragón</span> <div class="flex-shrink-0">
</h1> <img
<p class="text-xl md:text-2xl text-text-secondary max-w-3xl mx-auto mb-8 leading-relaxed"> src="/david-aragon.jpg"
Indie builder español construyendo en público. Trabajando hacia <strong class="text-primary">€4M ARR</strong> alt="David Aragón"
con un portfolio de productos SaaS enfocados en compliance y automatización. class="w-48 h-48 md:w-64 md:h-64 rounded-full object-cover border-4 border-primary/20"
</p> />
<div class="flex flex-wrap justify-center gap-4"> </div>
<a <div class="flex-1 text-center md:text-left">
href="/projects" <h1 class="text-4xl md:text-5xl font-bold mb-6">
class="bg-primary hover:bg-primary/80 text-background px-8 py-3 rounded-lg Hola, soy <span class="text-primary">David Aragón</span>
font-semibold transition-colors" </h1>
> <p class="text-xl text-text-secondary mb-6 leading-relaxed">
Ver Proyectos Builder construyendo productos que resuelven problemas reales.
</a> De orfebre a fotógrafo a developer. Ahora construyendo en público.
<a </p>
href="/blog" <p class="text-lg text-text-secondary mb-8">
class="bg-surface hover:bg-surface/80 text-text-primary px-8 py-3 rounded-lg Actualmente trabajando en <strong class="text-primary">WarrantyHub</strong> -
font-semibold border border-text-tertiary/20 transition-colors" gestión digital de garantías para hogares.
> </p>
Leer Blog <div class="flex flex-wrap justify-center md:justify-start gap-4">
</a> <a
</div> href="/blog"
</section> class="bg-primary hover:bg-primary/80 text-background px-8 py-3 rounded-lg
font-semibold transition-colors"
<!-- Featured Projects --> >
<section class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-16"> Leer Blog
<div class="flex items-center justify-between mb-8"> </a>
<h2 class="text-3xl font-bold">Proyectos Destacados</h2> <a
<a href="/about"
href="/projects" class="bg-surface hover:bg-surface/80 text-text-primary px-8 py-3 rounded-lg
class="text-primary hover:text-secondary transition-colors font-medium" font-semibold border border-text-tertiary/20 transition-colors"
> >
Ver todos → Sobre Mí
</a> </a>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
{projects.length > 0 ? (
projects.map(project => (
<Card href={`/projects/${project.slug}`}>
<h3 class="text-xl font-semibold mb-2 text-text-primary">{project.data.title}</h3>
<p class="text-text-secondary mb-4">{project.data.description}</p>
<div class="flex flex-wrap gap-2 mb-4">
{project.data.tags.slice(0, 3).map(tag => (
<Tag label={tag} variant="primary" />
))}
</div>
<div class="flex items-center justify-between">
<span class="text-sm text-text-tertiary capitalize">{project.data.status}</span>
<span class="text-primary text-sm font-medium">Ver proyecto →</span>
</div>
</Card>
))
) : (
<div class="col-span-full text-center py-12">
<p class="text-text-secondary">
Proyectos destacados próximamente. Mientras tanto,
<a href="/blog" class="text-primary hover:underline">lee el blog</a>.
</p>
</div> </div>
)} </div>
</div> </div>
</section> </section>
@@ -131,13 +106,46 @@ const blogPosts = (await getCollection('blog'))
</div> </div>
</section> </section>
<!-- Featured Projects (if any) -->
{projects.length > 0 && (
<section class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
<div class="flex items-center justify-between mb-8">
<h2 class="text-3xl font-bold">Proyectos</h2>
<a
href="/projects"
class="text-primary hover:text-secondary transition-colors font-medium"
>
Ver todos →
</a>
</div>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
{projects.map(project => (
<Card href={`/projects/${project.slug}`}>
<h3 class="text-xl font-semibold mb-2 text-text-primary">{project.data.title}</h3>
<p class="text-text-secondary mb-4">{project.data.description}</p>
<div class="flex flex-wrap gap-2 mb-4">
{project.data.tags.slice(0, 3).map(tag => (
<Tag label={tag} variant="primary" />
))}
</div>
<div class="flex items-center justify-between">
<span class="text-sm text-text-tertiary capitalize">{project.data.status}</span>
<span class="text-primary text-sm font-medium">Ver proyecto →</span>
</div>
</Card>
))}
</div>
</section>
)}
<!-- Newsletter CTA --> <!-- Newsletter CTA -->
<section class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16"> <section class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
<div class="bg-gradient-to-r from-primary/10 to-secondary/10 rounded-2xl p-8 md:p-12 text-center border border-primary/20"> <div class="bg-gradient-to-r from-primary/10 to-secondary/10 rounded-2xl p-8 md:p-12 text-center border border-primary/20">
<h2 class="text-3xl font-bold mb-4">Construyendo en Público</h2> <h2 class="text-3xl font-bold mb-4">Construyendo en Público</h2>
<p class="text-text-secondary mb-6 max-w-2xl mx-auto"> <p class="text-text-secondary mb-6 max-w-2xl mx-auto">
Suscríbete para recibir actualizaciones sobre nuevos proyectos, aprendizajes, Suscríbete para recibir actualizaciones sobre lanzamientos, aprendizajes técnicos,
y transparencia total en el viaje hacia €4M ARR. y el viaje de construcción de productos.
</p> </p>
<form class="flex flex-col sm:flex-row gap-3 max-w-md mx-auto"> <form class="flex flex-col sm:flex-row gap-3 max-w-md mx-auto">
<input <input