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.
|
||||
+193
-57
@@ -6,7 +6,7 @@ import Footer from '../components/layout/Footer.astro';
|
||||
|
||||
<BaseLayout
|
||||
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 />
|
||||
<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">
|
||||
<h2 class="text-2xl font-semibold mb-4 text-text-primary">Hola 👋</h2>
|
||||
<p class="text-text-secondary text-lg leading-relaxed">
|
||||
Soy David, desarrollador e indie builder español. Estoy construyendo
|
||||
un portfolio de productos SaaS enfocados en el mercado español y europeo,
|
||||
con el objetivo de alcanzar €4M ARR.
|
||||
Soy David, builder español. No empecé en tech - fui orfebre, luego fotógrafo profesional
|
||||
durante 13 años, formador para LinkedIn Learning, y developer. Ahora construyo productos
|
||||
que resuelven problemas reales.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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">
|
||||
Después de años trabajando como desarrollador, decidí dar el salto al emprendimiento
|
||||
tecnológico. Vi una oportunidad en el mercado español: muchas soluciones B2B están
|
||||
dominadas por empresas extranjeras que no entienden las particularidades del mercado
|
||||
local, especialmente en temas de cumplimiento normativo.
|
||||
Empecé trabajando metal con mis manos como orfebre. Un día me interesé por la fotografía,
|
||||
y esa obsesión me llevó a construir mi propia marca durante 13 años. Cuando no podía
|
||||
permitirme el equipo que necesitaba, lo improvisaba. Construía soportes, modificaba
|
||||
accesorios, hacía funcionar lo que tenía.
|
||||
</p>
|
||||
<p class="text-text-secondary leading-relaxed mb-4">
|
||||
Mi enfoque es construir en público, compartiendo tanto los éxitos como los fracasos.
|
||||
Creo en la transparencia y en la comunidad indie, y quiero contribuir al ecosistema
|
||||
de emprendedores españoles compartiendo mi viaje.
|
||||
Ese mismo impulso me llevó a aprender Python, a montar mi propia impresora 3D desde cero,
|
||||
a trabajar en Qloudea desarrollando herramientas internas mientras gestionaba redes sociales
|
||||
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>
|
||||
</section>
|
||||
|
||||
<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">
|
||||
<li class="flex items-start">
|
||||
<span class="text-primary mr-2">→</span>
|
||||
<span class="text-text-secondary">
|
||||
<strong class="text-text-primary">Spanish-first:</strong> Productos diseñados
|
||||
para el mercado español y europeo
|
||||
<strong class="text-text-primary">Responsabilidad:</strong> Es más difícil abandonar
|
||||
cuando compartes progreso públicamente
|
||||
</span>
|
||||
</li>
|
||||
<li class="flex items-start">
|
||||
<span class="text-primary mr-2">→</span>
|
||||
<span class="text-text-secondary">
|
||||
<strong class="text-text-primary">Build-in-public:</strong> Transparencia
|
||||
total en métricas, aprendizajes y decisiones
|
||||
<strong class="text-text-primary">Enseñar:</strong> Siempre he sido formador
|
||||
(LinkedIn Learning, Podcast CulturaNAS 2000+ subs). Compartir lo que aprendo es parte de quién soy
|
||||
</span>
|
||||
</li>
|
||||
<li class="flex items-start">
|
||||
<span class="text-primary mr-2">→</span>
|
||||
<span class="text-text-secondary">
|
||||
<strong class="text-text-primary">AI-assisted:</strong> Aprovechando herramientas
|
||||
de IA para acelerar desarrollo (79% AI-assisted en WarrantyHub)
|
||||
</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
|
||||
<strong class="text-text-primary">Comunidad:</strong> Quiero conectar con otros
|
||||
builders españoles que están en el mismo viaje
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -83,47 +189,77 @@ import Footer from '../components/layout/Footer.astro';
|
||||
<section class="mb-12">
|
||||
<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="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">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>
|
||||
</section>
|
||||
|
||||
<section class="mb-12">
|
||||
<h2 class="text-3xl font-semibold mb-4">En Qué Estoy Trabajando</h2>
|
||||
<div class="bg-surface p-6 rounded-lg border border-primary/20">
|
||||
<h3 class="text-xl font-semibold mb-2 text-primary">Portfolio SaaS €4M ARR</h3>
|
||||
<p class="text-text-secondary mb-4">
|
||||
Construyendo un portfolio de productos SaaS en 3 fases:
|
||||
</p>
|
||||
<ul class="space-y-2">
|
||||
<li class="text-text-secondary">
|
||||
<strong class="text-text-primary">Fase 1 (0-8 meses):</strong> WarrantyHub,
|
||||
Verifactu compliance, análisis de contratos → €825K ARR
|
||||
</li>
|
||||
<li class="text-text-secondary">
|
||||
<strong class="text-text-primary">Fase 2 (8-18 meses):</strong> Plataforma
|
||||
de auditoría, integraciones → €1.8M ARR
|
||||
</li>
|
||||
<li class="text-text-secondary">
|
||||
<strong class="text-text-primary">Fase 3 (18+ meses):</strong> Expansión
|
||||
europea, liderazgo → €4M+ ARR
|
||||
</li>
|
||||
</ul>
|
||||
<h2 class="text-3xl font-semibold mb-4">Experiencia</h2>
|
||||
<div class="space-y-6">
|
||||
<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">Field Application Engineer</h3>
|
||||
<span class="text-sm text-text-tertiary whitespace-nowrap ml-4">2023 - Actualidad</span>
|
||||
</div>
|
||||
<p class="text-text-secondary mb-2">KEO Connectivity (Alemania)</p>
|
||||
<p class="text-text-secondary text-sm">
|
||||
Protocolo EEBUS para sistemas IoT de energía (e-movilidad, hogares inteligentes,
|
||||
bombas de calor). Documentación técnica, automatización con n8n, herramientas internas,
|
||||
soporte técnico.
|
||||
</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">Developer Python</h3>
|
||||
<span class="text-sm text-text-tertiary whitespace-nowrap ml-4">2022 - 2023</span>
|
||||
</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>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="text-3xl font-semibold mb-4">Conecta Conmigo</h2>
|
||||
<p class="text-text-secondary mb-6">
|
||||
Siempre estoy abierto a conversar con otros builders, inversores, o simplemente
|
||||
personas interesadas en emprendimiento tecnológico español.
|
||||
Siempre abierto a conversar con otros builders, gente interesada en EEBUS/IoT,
|
||||
o simplemente personas curiosas sobre construcción de productos.
|
||||
</p>
|
||||
<div class="flex flex-wrap gap-4 not-prose">
|
||||
<a
|
||||
@@ -136,7 +272,7 @@ import Footer from '../components/layout/Footer.astro';
|
||||
X (Twitter)
|
||||
</a>
|
||||
<a
|
||||
href="https://linkedin.com/in/davidaragon"
|
||||
href="https://linkedin.com/in/david-aragon-galiana"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="bg-primary/10 hover:bg-primary/20 text-primary px-6 py-3 rounded-lg
|
||||
@@ -165,4 +301,4 @@ import Footer from '../components/layout/Footer.astro';
|
||||
</article>
|
||||
</main>
|
||||
<Footer />
|
||||
</BaseLayout>
|
||||
</BaseLayout>
|
||||
|
||||
Reference in New Issue
Block a user