feat: complete content overhaul - projects, infrastructure, personal brand (no empire talk)
CI/CD Pipeline / Build & Deploy (push) Failing after 42s
CI/CD Pipeline / Build & Deploy (push) Failing after 42s
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
---
|
||||||
|
title: "WarrantyHub"
|
||||||
|
description: "Plataforma digital para gestionar todas las garantías de tus productos del hogar desde un solo lugar"
|
||||||
|
url: "https://warrantyhub.impresion3d.pro"
|
||||||
|
github: ""
|
||||||
|
status: "development"
|
||||||
|
tags: ["React", "FastAPI", "PostgreSQL", "SaaS"]
|
||||||
|
startDate: 2026-04-15
|
||||||
|
featured: true
|
||||||
|
image: ""
|
||||||
|
---
|
||||||
|
|
||||||
|
# WarrantyHub
|
||||||
|
|
||||||
|
**Gestión digital de garantías para el hogar**
|
||||||
|
|
||||||
|
## El Problema
|
||||||
|
|
||||||
|
Todos tenemos el mismo problema: compramos electrodomésticos, gadgets, muebles... y guardamos los tickets y garantías en algún cajón. Cuando algo se rompe y necesitas reclamar:
|
||||||
|
|
||||||
|
- ❌ No encuentras el ticket
|
||||||
|
- ❌ No sabes si todavía está en garantía
|
||||||
|
- ❌ No tienes los datos del establecimiento
|
||||||
|
- ❌ El proceso de reclamación es un caos
|
||||||
|
|
||||||
|
**WarrantyHub resuelve esto.**
|
||||||
|
|
||||||
|
## La Solución
|
||||||
|
|
||||||
|
Una plataforma donde guardas todas tus garantías digitalmente:
|
||||||
|
|
||||||
|
✅ **Digitalización rápida**: Foto del ticket y listo
|
||||||
|
✅ **Recordatorios**: Te avisamos antes de que expire la garantía
|
||||||
|
✅ **Organización**: Todos tus productos en un solo lugar
|
||||||
|
✅ **Búsqueda fácil**: Encuentra cualquier garantía en segundos
|
||||||
|
✅ **Proceso guiado**: Te ayudamos con el proceso de reclamación
|
||||||
|
|
||||||
|
## Stack Técnico
|
||||||
|
|
||||||
|
**Frontend:**
|
||||||
|
- React + TypeScript
|
||||||
|
- Tailwind CSS
|
||||||
|
- Vite
|
||||||
|
|
||||||
|
**Backend:**
|
||||||
|
- FastAPI (Python)
|
||||||
|
- PostgreSQL
|
||||||
|
- Docker + Portainer
|
||||||
|
|
||||||
|
**Features actuales:**
|
||||||
|
- Autenticación de usuarios
|
||||||
|
- Subida y digitalización de tickets (OCR)
|
||||||
|
- Gestión de productos y garantías
|
||||||
|
- Notificaciones de expiración
|
||||||
|
|
||||||
|
## Estado Actual
|
||||||
|
|
||||||
|
🚧 **En desarrollo activo**
|
||||||
|
|
||||||
|
Trabajando en:
|
||||||
|
- Sistema de recordatorios automáticos
|
||||||
|
- Mejora de OCR para extracción de datos
|
||||||
|
- Integración con tiendas para importar garantías automáticamente
|
||||||
|
|
||||||
|
## Por Qué Este Proyecto
|
||||||
|
|
||||||
|
Es un problema que yo mismo tenía. Y después de hablar con amigos y familia, descubrí que **todos** tienen el mismo problema.
|
||||||
|
|
||||||
|
No es sexy. No es AI generativa. Pero resuelve un problema real que la gente tiene cada día.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Status:** Pronto en beta privada. [Suscríbete](/blog) para recibir invitación.
|
||||||
+192
-56
@@ -6,7 +6,7 @@ import Footer from '../components/layout/Footer.astro';
|
|||||||
|
|
||||||
<BaseLayout
|
<BaseLayout
|
||||||
title="Sobre mí"
|
title="Sobre mí"
|
||||||
description="Indie builder español construyendo productos SaaS. De desarrollador a emprendedor, compartiendo el viaje hacia €4M ARR."
|
description="Builder español. De orfebre a fotógrafo a developer. Construyendo productos y compartiendo el viaje."
|
||||||
>
|
>
|
||||||
<Header />
|
<Header />
|
||||||
<main class="flex-1 max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
|
<main class="flex-1 max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
|
||||||
@@ -24,57 +24,163 @@ import Footer from '../components/layout/Footer.astro';
|
|||||||
<div class="flex-1">
|
<div class="flex-1">
|
||||||
<h2 class="text-2xl font-semibold mb-4 text-text-primary">Hola 👋</h2>
|
<h2 class="text-2xl font-semibold mb-4 text-text-primary">Hola 👋</h2>
|
||||||
<p class="text-text-secondary text-lg leading-relaxed">
|
<p class="text-text-secondary text-lg leading-relaxed">
|
||||||
Soy David, desarrollador e indie builder español. Estoy construyendo
|
Soy David, builder español. No empecé en tech - fui orfebre, luego fotógrafo profesional
|
||||||
un portfolio de productos SaaS enfocados en el mercado español y europeo,
|
durante 13 años, formador para LinkedIn Learning, y developer. Ahora construyo productos
|
||||||
con el objetivo de alcanzar €4M ARR.
|
que resuelven problemas reales.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<section class="mb-12">
|
<section class="mb-12">
|
||||||
<h2 class="text-3xl font-semibold mb-4">Mi Historia</h2>
|
<h2 class="text-3xl font-semibold mb-4">El Camino</h2>
|
||||||
<p class="text-text-secondary leading-relaxed mb-4">
|
<p class="text-text-secondary leading-relaxed mb-4">
|
||||||
Después de años trabajando como desarrollador, decidí dar el salto al emprendimiento
|
Empecé trabajando metal con mis manos como orfebre. Un día me interesé por la fotografía,
|
||||||
tecnológico. Vi una oportunidad en el mercado español: muchas soluciones B2B están
|
y esa obsesión me llevó a construir mi propia marca durante 13 años. Cuando no podía
|
||||||
dominadas por empresas extranjeras que no entienden las particularidades del mercado
|
permitirme el equipo que necesitaba, lo improvisaba. Construía soportes, modificaba
|
||||||
local, especialmente en temas de cumplimiento normativo.
|
accesorios, hacía funcionar lo que tenía.
|
||||||
</p>
|
</p>
|
||||||
<p class="text-text-secondary leading-relaxed mb-4">
|
<p class="text-text-secondary leading-relaxed mb-4">
|
||||||
Mi enfoque es construir en público, compartiendo tanto los éxitos como los fracasos.
|
Ese mismo impulso me llevó a aprender Python, a montar mi propia impresora 3D desde cero,
|
||||||
Creo en la transparencia y en la comunidad indie, y quiero contribuir al ecosistema
|
a trabajar en Qloudea desarrollando herramientas internas mientras gestionaba redes sociales
|
||||||
de emprendedores españoles compartiendo mi viaje.
|
y daba soporte técnico. Luego developer Python en NTT Data, y ahora trabajo en KEO
|
||||||
|
Connectivity con protocolos IoT para sistemas de energía (EEBUS).
|
||||||
|
</p>
|
||||||
|
<p class="text-text-secondary leading-relaxed mb-4">
|
||||||
|
<strong class="text-text-primary">El patrón siempre es el mismo:</strong> identificar un
|
||||||
|
problema, obsesionarse con resolverlo, aprender lo que haga falta para solucionarlo.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="mb-12">
|
<section class="mb-12">
|
||||||
<h2 class="text-3xl font-semibold mb-4">Filosofía de Construcción</h2>
|
<h2 class="text-3xl font-semibold mb-4">Qué Hago Ahora</h2>
|
||||||
|
<p class="text-text-secondary leading-relaxed mb-4">
|
||||||
|
Trabajo full-time en KEO como Field Application Engineer, donde me encargo de documentación
|
||||||
|
técnica, automatización de flujos de trabajo, herramientas internas y soporte de cara al cliente.
|
||||||
|
</p>
|
||||||
|
<p class="text-text-secondary leading-relaxed mb-4">
|
||||||
|
En paralelo, construyo <strong class="text-primary">WarrantyHub</strong> - una plataforma
|
||||||
|
para que usuarios finales gestionen las garantías de sus productos del hogar desde un solo lugar.
|
||||||
|
Es un problema que yo mismo tenía, y descubrí que todos mis amigos y familia tienen el mismo problema.
|
||||||
|
</p>
|
||||||
|
<p class="text-text-secondary leading-relaxed mb-4">
|
||||||
|
También trabajo en otros proyectos experimentales: CLIs de productividad, herramientas de
|
||||||
|
automatización, bots de Discord, y templates para acelerar desarrollo Python.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mb-12">
|
||||||
|
<h2 class="text-3xl font-semibold mb-4">Proyectos Actuales</h2>
|
||||||
|
<div class="space-y-4">
|
||||||
|
<div class="bg-surface p-5 rounded-lg border border-text-tertiary/20">
|
||||||
|
<h3 class="text-lg font-semibold text-primary mb-2">WarrantyHub</h3>
|
||||||
|
<p class="text-text-secondary text-sm">
|
||||||
|
Gestor digital de garantías del hogar. PWA self-hosted con modelo freemium.
|
||||||
|
Stack: React + FastAPI + PostgreSQL.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bg-surface p-5 rounded-lg border border-text-tertiary/20">
|
||||||
|
<h3 class="text-lg font-semibold text-primary mb-2">TimeNet CLI</h3>
|
||||||
|
<p class="text-text-secondary text-sm">
|
||||||
|
CLI para gestionar fichajes de TimeNet desde terminal. Automatización de entrada/salida
|
||||||
|
y reportes de horas trabajadas.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bg-surface p-5 rounded-lg border border-text-tertiary/20">
|
||||||
|
<h3 class="text-lg font-semibold text-primary mb-2">Python Project Template</h3>
|
||||||
|
<p class="text-text-secondary text-sm">
|
||||||
|
Template opinionado para proyectos Python: uv, ruff, mypy, pytest, Docker, Portainer.
|
||||||
|
CI/CD con Gitea Actions.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bg-surface p-5 rounded-lg border border-text-tertiary/20">
|
||||||
|
<h3 class="text-lg font-semibold text-primary mb-2">Hermes Stack</h3>
|
||||||
|
<p class="text-text-secondary text-sm">
|
||||||
|
Stack de Hermes Agent gateway para QNAP/Portainer. Automatización con agentes AI
|
||||||
|
para gestión de infraestructura.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bg-surface p-5 rounded-lg border border-text-tertiary/20">
|
||||||
|
<h3 class="text-lg font-semibold text-primary mb-2">Otros Experimentos</h3>
|
||||||
|
<p class="text-text-secondary text-sm">
|
||||||
|
Bots de Discord (iRacing), herramientas de automatización (Portainer backups),
|
||||||
|
scripts de utilidad (FLAC tagging, cookie extraction), y más.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mb-12">
|
||||||
|
<h2 class="text-3xl font-semibold mb-4">Infraestructura Self-Hosted</h2>
|
||||||
|
<p class="text-text-secondary leading-relaxed mb-4">
|
||||||
|
Todos mis proyectos corren en infraestructura local self-hosted. Prefiero controlar
|
||||||
|
completamente el stack y mantener costes bajos mientras experimento.
|
||||||
|
</p>
|
||||||
|
<div class="bg-surface p-6 rounded-lg border border-primary/20">
|
||||||
|
<h3 class="text-xl font-semibold mb-4 text-primary">Stack Actual</h3>
|
||||||
|
<ul class="space-y-2 text-text-secondary">
|
||||||
|
<li class="flex items-start">
|
||||||
|
<span class="text-primary mr-2">→</span>
|
||||||
|
<span><strong class="text-text-primary">Servidor físico</strong> (192.168.1.30) -
|
||||||
|
Docker host principal</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start">
|
||||||
|
<span class="text-primary mr-2">→</span>
|
||||||
|
<span><strong class="text-text-primary">Portainer</strong> - Orquestación de
|
||||||
|
stacks y containers</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start">
|
||||||
|
<span class="text-primary mr-2">→</span>
|
||||||
|
<span><strong class="text-text-primary">Gitea</strong> (gitlab.impresion3d.pro) -
|
||||||
|
Git hosting + Docker registry + CI/CD</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start">
|
||||||
|
<span class="text-primary mr-2">→</span>
|
||||||
|
<span><strong class="text-text-primary">MinIO</strong> - Object storage (S3-compatible)</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start">
|
||||||
|
<span class="text-primary mr-2">→</span>
|
||||||
|
<span><strong class="text-text-primary">Nginx Proxy Manager</strong> - Reverse proxy
|
||||||
|
con SSL automático (Let's Encrypt)</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start">
|
||||||
|
<span class="text-primary mr-2">→</span>
|
||||||
|
<span><strong class="text-text-primary">PostgreSQL</strong> - Base de datos principal
|
||||||
|
para aplicaciones</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p class="text-text-secondary text-sm mt-4">
|
||||||
|
CI/CD completamente automatizado: push a main → build image → push a registry →
|
||||||
|
deploy a Portainer. Todo en infraestructura local.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="mb-12">
|
||||||
|
<h2 class="text-3xl font-semibold mb-4">Por Qué Build-in-Public</h2>
|
||||||
<ul class="space-y-3">
|
<ul class="space-y-3">
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<span class="text-primary mr-2">→</span>
|
<span class="text-primary mr-2">→</span>
|
||||||
<span class="text-text-secondary">
|
<span class="text-text-secondary">
|
||||||
<strong class="text-text-primary">Spanish-first:</strong> Productos diseñados
|
<strong class="text-text-primary">Responsabilidad:</strong> Es más difícil abandonar
|
||||||
para el mercado español y europeo
|
cuando compartes progreso públicamente
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<span class="text-primary mr-2">→</span>
|
<span class="text-primary mr-2">→</span>
|
||||||
<span class="text-text-secondary">
|
<span class="text-text-secondary">
|
||||||
<strong class="text-text-primary">Build-in-public:</strong> Transparencia
|
<strong class="text-text-primary">Enseñar:</strong> Siempre he sido formador
|
||||||
total en métricas, aprendizajes y decisiones
|
(LinkedIn Learning, Podcast CulturaNAS 2000+ subs). Compartir lo que aprendo es parte de quién soy
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="flex items-start">
|
<li class="flex items-start">
|
||||||
<span class="text-primary mr-2">→</span>
|
<span class="text-primary mr-2">→</span>
|
||||||
<span class="text-text-secondary">
|
<span class="text-text-secondary">
|
||||||
<strong class="text-text-primary">AI-assisted:</strong> Aprovechando herramientas
|
<strong class="text-text-primary">Comunidad:</strong> Quiero conectar con otros
|
||||||
de IA para acelerar desarrollo (79% AI-assisted en WarrantyHub)
|
builders españoles que están en el mismo viaje
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
<li class="flex items-start">
|
|
||||||
<span class="text-primary mr-2">→</span>
|
|
||||||
<span class="text-text-secondary">
|
|
||||||
<strong class="text-text-primary">Compliance-focused:</strong> Ventaja competitiva
|
|
||||||
en regulaciones españolas y europeas
|
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -83,47 +189,77 @@ import Footer from '../components/layout/Footer.astro';
|
|||||||
<section class="mb-12">
|
<section class="mb-12">
|
||||||
<h2 class="text-3xl font-semibold mb-4">Stack Técnico</h2>
|
<h2 class="text-3xl font-semibold mb-4">Stack Técnico</h2>
|
||||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 not-prose">
|
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 not-prose">
|
||||||
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">React</div>
|
|
||||||
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">TypeScript</div>
|
|
||||||
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">Node.js</div>
|
|
||||||
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">Astro</div>
|
|
||||||
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">Tailwind CSS</div>
|
|
||||||
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">Docker</div>
|
|
||||||
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">PostgreSQL</div>
|
|
||||||
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">Python</div>
|
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">Python</div>
|
||||||
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">FastAPI</div>
|
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">FastAPI</div>
|
||||||
|
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">React</div>
|
||||||
|
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">TypeScript</div>
|
||||||
|
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">PostgreSQL</div>
|
||||||
|
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">Docker</div>
|
||||||
|
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">Tailwind CSS</div>
|
||||||
|
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">Astro</div>
|
||||||
|
<div class="bg-surface px-4 py-3 rounded-lg border border-text-tertiary/20">n8n</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="mb-12">
|
<section class="mb-12">
|
||||||
<h2 class="text-3xl font-semibold mb-4">En Qué Estoy Trabajando</h2>
|
<h2 class="text-3xl font-semibold mb-4">Experiencia</h2>
|
||||||
<div class="bg-surface p-6 rounded-lg border border-primary/20">
|
<div class="space-y-6">
|
||||||
<h3 class="text-xl font-semibold mb-2 text-primary">Portfolio SaaS €4M ARR</h3>
|
<div class="bg-surface p-6 rounded-lg border border-text-tertiary/20">
|
||||||
<p class="text-text-secondary mb-4">
|
<div class="flex items-start justify-between mb-2">
|
||||||
Construyendo un portfolio de productos SaaS en 3 fases:
|
<h3 class="text-xl font-semibold text-primary">Field Application Engineer</h3>
|
||||||
</p>
|
<span class="text-sm text-text-tertiary whitespace-nowrap ml-4">2023 - Actualidad</span>
|
||||||
<ul class="space-y-2">
|
</div>
|
||||||
<li class="text-text-secondary">
|
<p class="text-text-secondary mb-2">KEO Connectivity (Alemania)</p>
|
||||||
<strong class="text-text-primary">Fase 1 (0-8 meses):</strong> WarrantyHub,
|
<p class="text-text-secondary text-sm">
|
||||||
Verifactu compliance, análisis de contratos → €825K ARR
|
Protocolo EEBUS para sistemas IoT de energía (e-movilidad, hogares inteligentes,
|
||||||
</li>
|
bombas de calor). Documentación técnica, automatización con n8n, herramientas internas,
|
||||||
<li class="text-text-secondary">
|
soporte técnico.
|
||||||
<strong class="text-text-primary">Fase 2 (8-18 meses):</strong> Plataforma
|
</p>
|
||||||
de auditoría, integraciones → €1.8M ARR
|
</div>
|
||||||
</li>
|
|
||||||
<li class="text-text-secondary">
|
<div class="bg-surface p-6 rounded-lg border border-text-tertiary/20">
|
||||||
<strong class="text-text-primary">Fase 3 (18+ meses):</strong> Expansión
|
<div class="flex items-start justify-between mb-2">
|
||||||
europea, liderazgo → €4M+ ARR
|
<h3 class="text-xl font-semibold text-primary">Developer Python</h3>
|
||||||
</li>
|
<span class="text-sm text-text-tertiary whitespace-nowrap ml-4">2022 - 2023</span>
|
||||||
</ul>
|
</div>
|
||||||
|
<p class="text-text-secondary mb-2">NTT Data</p>
|
||||||
|
<p class="text-text-secondary text-sm">
|
||||||
|
Desarrollo en Python, Google Cloud, Kubernetes, BigQuery. Análisis de datos y BigData.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bg-surface p-6 rounded-lg border border-text-tertiary/20">
|
||||||
|
<div class="flex items-start justify-between mb-2">
|
||||||
|
<h3 class="text-xl font-semibold text-primary">Formador TIC + Developer</h3>
|
||||||
|
<span class="text-sm text-text-tertiary whitespace-nowrap ml-4">2013 - 2022</span>
|
||||||
|
</div>
|
||||||
|
<p class="text-text-secondary mb-2">Qloudea + LinkedIn Learning</p>
|
||||||
|
<p class="text-text-secondary text-sm">
|
||||||
|
Desarrollo de herramientas internas (HTML5, CSS, JavaScript, Python, Django, Flutter).
|
||||||
|
Formador oficial sobre servidores NAS para profesionales. Gestión de RRSS, YouTube,
|
||||||
|
fotografía de productos.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bg-surface p-6 rounded-lg border border-text-tertiary/20">
|
||||||
|
<div class="flex items-start justify-between mb-2">
|
||||||
|
<h3 class="text-xl font-semibold text-primary">Fotógrafo Profesional</h3>
|
||||||
|
<span class="text-sm text-text-tertiary whitespace-nowrap ml-4">2003 - 2016</span>
|
||||||
|
</div>
|
||||||
|
<p class="text-text-secondary mb-2">Marca propia</p>
|
||||||
|
<p class="text-text-secondary text-sm">
|
||||||
|
13 años gestionando mi propia marca de fotografía. Creador del Podcast CulturaNAS
|
||||||
|
(2000+ suscriptores).
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h2 class="text-3xl font-semibold mb-4">Conecta Conmigo</h2>
|
<h2 class="text-3xl font-semibold mb-4">Conecta Conmigo</h2>
|
||||||
<p class="text-text-secondary mb-6">
|
<p class="text-text-secondary mb-6">
|
||||||
Siempre estoy abierto a conversar con otros builders, inversores, o simplemente
|
Siempre abierto a conversar con otros builders, gente interesada en EEBUS/IoT,
|
||||||
personas interesadas en emprendimiento tecnológico español.
|
o simplemente personas curiosas sobre construcción de productos.
|
||||||
</p>
|
</p>
|
||||||
<div class="flex flex-wrap gap-4 not-prose">
|
<div class="flex flex-wrap gap-4 not-prose">
|
||||||
<a
|
<a
|
||||||
@@ -136,7 +272,7 @@ import Footer from '../components/layout/Footer.astro';
|
|||||||
X (Twitter)
|
X (Twitter)
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
href="https://linkedin.com/in/davidaragon"
|
href="https://linkedin.com/in/david-aragon-galiana"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
class="bg-primary/10 hover:bg-primary/20 text-primary px-6 py-3 rounded-lg
|
class="bg-primary/10 hover:bg-primary/20 text-primary px-6 py-3 rounded-lg
|
||||||
|
|||||||
Reference in New Issue
Block a user