fix(ci): use plain docker build instead of buildx (runner /dev/null issue)
CI/CD Pipeline / Build & Deploy (push) Failing after 17s
CI/CD Pipeline / Build & Deploy (push) Failing after 17s
This commit is contained in:
+68
-51
@@ -19,8 +19,8 @@ const blogPosts = (await getCollection('blog'))
|
||||
---
|
||||
|
||||
<BaseLayout
|
||||
title="Inicio"
|
||||
description="Portfolio personal de David Aragón - Builder construyendo productos y compartiendo el viaje"
|
||||
title="Home"
|
||||
description="David Aragón's portfolio - Builder creating products and sharing the journey"
|
||||
>
|
||||
<Header />
|
||||
|
||||
@@ -37,15 +37,15 @@ const blogPosts = (await getCollection('blog'))
|
||||
</div>
|
||||
<div class="flex-1 text-center md:text-left">
|
||||
<h1 class="text-4xl md:text-5xl font-bold mb-6">
|
||||
Hola, soy <span class="text-primary">David Aragón</span>
|
||||
Hi, I'm <span class="text-primary">David Aragón</span>
|
||||
</h1>
|
||||
<p class="text-xl text-text-secondary mb-6 leading-relaxed">
|
||||
Builder construyendo productos que resuelven problemas reales.
|
||||
De orfebre a fotógrafo a developer. Ahora construyendo en público.
|
||||
Builder creating products that solve real problems.
|
||||
From goldsmith to photographer to developer. Now building in public.
|
||||
</p>
|
||||
<p class="text-lg text-text-secondary mb-8">
|
||||
Actualmente trabajando en <strong class="text-primary">WarrantyHub</strong> -
|
||||
gestión digital de garantías para hogares.
|
||||
Currently working on <strong class="text-primary">WarrantyHub</strong> -
|
||||
digital warranty management for home users.
|
||||
</p>
|
||||
<div class="flex flex-wrap justify-center md:justify-start gap-4">
|
||||
<a
|
||||
@@ -53,14 +53,14 @@ const blogPosts = (await getCollection('blog'))
|
||||
class="bg-primary hover:bg-primary/80 text-background px-8 py-3 rounded-lg
|
||||
font-semibold transition-colors"
|
||||
>
|
||||
Leer Blog
|
||||
Read Blog
|
||||
</a>
|
||||
<a
|
||||
href="/about"
|
||||
class="bg-surface hover:bg-surface/80 text-text-primary px-8 py-3 rounded-lg
|
||||
font-semibold border border-text-tertiary/20 transition-colors"
|
||||
>
|
||||
Sobre Mí
|
||||
About Me
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -70,36 +70,44 @@ const blogPosts = (await getCollection('blog'))
|
||||
<!-- Latest Blog Posts -->
|
||||
<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">Últimas Publicaciones</h2>
|
||||
<h2 class="text-3xl font-bold">Latest Posts</h2>
|
||||
<a
|
||||
href="/blog"
|
||||
class="text-primary hover:text-secondary transition-colors font-medium"
|
||||
>
|
||||
Ver todas →
|
||||
View all →
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{blogPosts.length > 0 ? (
|
||||
blogPosts.map(post => (
|
||||
blogPosts.map((post) => (
|
||||
<Card href={`/blog/${post.slug}`}>
|
||||
<div class="mb-3">
|
||||
<Tag label={post.data.category} variant="secondary" />
|
||||
</div>
|
||||
<h3 class="text-xl font-semibold mb-2 text-text-primary">{post.data.title}</h3>
|
||||
<p class="text-text-secondary mb-4">{post.data.description}</p>
|
||||
<div class="flex items-center justify-between text-sm text-text-tertiary">
|
||||
<time datetime={post.data.publishDate.toISOString()}>
|
||||
<div class="mb-4">
|
||||
<time class="text-sm text-text-tertiary">
|
||||
{formatDate(post.data.publishDate)}
|
||||
</time>
|
||||
<span class="text-primary font-medium">Leer más →</span>
|
||||
</div>
|
||||
<h3 class="text-xl font-semibold mb-3 text-text-primary group-hover:text-primary transition-colors">
|
||||
{post.data.title}
|
||||
</h3>
|
||||
<p class="text-text-secondary mb-4 line-clamp-3">
|
||||
{post.data.description}
|
||||
</p>
|
||||
<div class="flex flex-wrap gap-2 mb-4">
|
||||
{post.data.tags?.slice(0, 3).map((tag: string) => (
|
||||
<Tag>{tag}</Tag>
|
||||
))}
|
||||
</div>
|
||||
<div class="text-sm">
|
||||
<span class="text-primary font-medium">Read more →</span>
|
||||
</div>
|
||||
</Card>
|
||||
))
|
||||
) : (
|
||||
<div class="col-span-full text-center py-12">
|
||||
<p class="text-text-secondary">
|
||||
Publicaciones próximamente. Suscríbete para recibir actualizaciones.
|
||||
Posts coming soon. Subscribe to receive updates.
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
@@ -110,28 +118,33 @@ const blogPosts = (await getCollection('blog'))
|
||||
{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>
|
||||
<h2 class="text-3xl font-bold">Projects</h2>
|
||||
<a
|
||||
href="/projects"
|
||||
class="text-primary hover:text-secondary transition-colors font-medium"
|
||||
>
|
||||
Ver todos →
|
||||
View all →
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{projects.map(project => (
|
||||
<div class="grid grid-cols-1 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 class="mb-4">
|
||||
<span class="text-sm text-text-tertiary capitalize">
|
||||
{project.data.status}
|
||||
</span>
|
||||
</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>
|
||||
<h3 class="text-xl font-semibold mb-3 text-text-primary group-hover:text-primary transition-colors">
|
||||
{project.data.title}
|
||||
</h3>
|
||||
<p class="text-text-secondary mb-4">
|
||||
{project.data.description}
|
||||
</p>
|
||||
<div class="flex flex-wrap gap-2">
|
||||
{project.data.tags?.slice(0, 4).map((tag: string) => (
|
||||
<Tag>{tag}</Tag>
|
||||
))}
|
||||
</div>
|
||||
</Card>
|
||||
))}
|
||||
@@ -141,31 +154,35 @@ const blogPosts = (await getCollection('blog'))
|
||||
|
||||
<!-- Newsletter CTA -->
|
||||
<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">
|
||||
<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">
|
||||
Suscríbete para recibir actualizaciones sobre lanzamientos, aprendizajes técnicos,
|
||||
y el viaje de construcción de productos.
|
||||
<div class="bg-gradient-to-r from-primary/10 to-secondary/10 border border-primary/20
|
||||
rounded-2xl p-8 md:p-12 text-center">
|
||||
<h2 class="text-3xl font-bold mb-4">Stay Updated</h2>
|
||||
<p class="text-text-secondary text-lg mb-8 max-w-2xl mx-auto">
|
||||
Get occasional updates about launches, learnings, and technical decisions.
|
||||
No spam, no BS - just real builder content.
|
||||
</p>
|
||||
<form class="flex flex-col sm:flex-row gap-3 max-w-md mx-auto">
|
||||
<input
|
||||
<form
|
||||
class="max-w-md mx-auto flex flex-col sm:flex-row gap-4"
|
||||
method="POST"
|
||||
action="/api/subscribe"
|
||||
>
|
||||
<input
|
||||
type="email"
|
||||
placeholder="tu@email.com"
|
||||
name="email"
|
||||
placeholder="your@email.com"
|
||||
required
|
||||
class="flex-1 px-4 py-3 rounded-lg bg-background border border-text-tertiary/20
|
||||
text-text-primary placeholder-text-tertiary focus:outline-none focus:border-primary"
|
||||
class="flex-1 px-6 py-3 rounded-lg bg-surface border border-text-tertiary/20
|
||||
text-text-primary placeholder-text-tertiary focus:outline-none
|
||||
focus:border-primary transition-colors"
|
||||
/>
|
||||
<button
|
||||
<button
|
||||
type="submit"
|
||||
class="bg-primary hover:bg-primary/80 text-background px-6 py-3 rounded-lg
|
||||
class="bg-primary hover:bg-primary/80 text-background px-8 py-3 rounded-lg
|
||||
font-semibold transition-colors whitespace-nowrap"
|
||||
>
|
||||
Suscribirse
|
||||
Subscribe
|
||||
</button>
|
||||
</form>
|
||||
<p class="text-xs text-text-tertiary mt-4">
|
||||
Sin spam. Cancela cuando quieras.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
Reference in New Issue
Block a user