Retrato de Juan Martín

Juan Martín

Graduado en Computer Science — Missouri Valley College

Creo productos prácticos para móvil, web e inteligencia artificial, convirtiendo problemas complejos en experiencias sencillas.

Sobre mí

Soy graduado en Computer Science por Missouri Valley College y enfoco el desarrollo de software desde la perspectiva del producto. Creo aplicaciones completas para móvil y web, desde el backend hasta el despliegue, con especial interés en computer vision y generación de imágenes. Como exjugador universitario de baloncesto, aporto disciplina, competitividad y trabajo en equipo a cada proyecto.

Tecnologías

Lenguajes

  • TypeScript
  • JavaScript
  • Python
  • Swift

IA / Generación de imágenes

  • Gemini / Imagen
  • DALL·E
  • FLUX.1
  • Stable Diffusion
  • LoRA
  • ControlNet
  • Real-ESRGAN
  • PyTorch
  • OpenCV

Móvil

  • React Native
  • Expo
  • iOS
  • EAS
  • Live Activities
  • WidgetKit

Frontend

  • React
  • Astro
  • Vite
  • Tailwind CSS
  • Redux Toolkit
  • Three.js

Backend / Datos

  • FastAPI
  • Supabase
  • MySQL
  • PostgreSQL
  • SQLAlchemy
  • AsyncStorage

Cloud / DevOps

  • AWS EC2
  • Amazon S3
  • CloudFront
  • Amazon SES
  • Docker
  • CI/CD
  • Vercel

Plataformas de IA / APIs

  • Replicate
  • fal.ai
  • Google GenAI
  • OpenAI API
  • Resend
  • Stripe
  • Twilio

Testing / Calidad

  • Playwright
  • Pytest
  • React Testing Library
  • ESLint

Herramientas

  • Git
  • Xcode
  • VS Code
  • Linux
  • Docker Compose
  • systemd
  • vim

Trabajo profesional

Sistemas creados en Seattle Stones

Productos full-stack, inteligencia artificial aplicada y sistemas de despliegue, con especial atención a convertir imágenes generativas en recursos listos para producción.

Caso de estudio del proyecto

Measurely AI · Generación de tablas en alta resolución

PythonFastAPIGenerative AILoRAControlNetReal-ESRGANReactAWS

Problema

Las imágenes genéricas de IA no tienen la consistencia, el detalle ni la resolución necesarios para la impresión industrial de tablas.

Solución

Un pipeline de generación y mejora basado en el catálogo que produce diseños de piedra realistas en 4K y 8K, listos para imprimir.

Estructura y arquitectura

  • React y FastAPI gestionan proyectos, tareas de generación, recursos y pedidos.
  • La orquestación de prompts vincula los resultados de Imagen, DALL·E y FLUX con el catálogo de piedra de la empresa.
  • Un LoRA personalizado y máscaras de ControlNet especializan las texturas y guían la composición de las vetas.
  • Tareas con NVIDIA L4 combinan Real-ESRGAN y tiled diffusion para obtener resultados 8K detallados.
  • El postprocesado crea archivos listos para impresión; las versiones verificadas se despliegan mediante CI/CD.

Librerías y finalidad

  • FastAPI, Uvicorn y Pydantic — backend asíncrono y tipado.
  • PyTorch, Diffusers y Safetensors — inferencia con LoRA personalizado.
  • Imagen, DALL·E, FLUX y ControlNet — generación y control de composición.
  • Real-ESRGAN, Pillow y OpenCV — restauración y preparación para impresión.
  • React, TypeScript y Three.js — dashboard y previsualizaciones de materiales.
  • SQLAlchemy y MySQL — persistencia operativa.
  • Playwright — testing end-to-end.

Backend y servicios

  • AWS EC2 y NVIDIA L4 — aplicación y procesamiento mediante GPU.
  • S3 y CloudFront — almacenamiento duradero y distribución de recursos.
  • Gemini, OpenAI, Replicate y fal.ai — proveedores de IA intercambiables.
  • MySQL, Stripe y SES — datos, pagos y email.
  • CI/CD automatizado — controles de calidad y despliegues repetibles.

Caso de estudio del proyecto

Slabware · Portal de reparto de Rollup

ReactReduxFastAPIPythonMySQLAWSOffline-first

Problema

La información de reparto fragmentada dificulta el seguimiento de pedidos, especialmente cuando la conexión en ruta no es fiable.

Solución

Un portal basado en roles que centraliza la planificación, los flujos de trabajo de conductores, la documentación y las pruebas de entrega, también offline.

Estructura y arquitectura

  • React y Redux proporcionan flujos de trabajo según el rol y sesiones persistentes.
  • IndexedDB pone en cola los envíos de datos offline y los sincroniza más tarde.
  • FastAPI y MySQL asíncrono alimentan las APIs de entregas, documentos y autenticación.
  • Herramientas de PDF, firma e imagen capturan las pruebas de entrega.
  • Los builds automatizados despliegan versiones verificadas del frontend y backend.

Librerías y finalidad

  • React, Redux Toolkit y Router — interfaz del portal y estado persistente.
  • IndexedDB — cola de entregas offline y sincronización.
  • FastAPI, Pydantic y SQLAlchemy — backend validado y capa de datos.
  • Google Maps y herramientas de planificación — contexto y organización de entregas.
  • jsPDF, ReportLab y Signature Canvas — documentos y pruebas de entrega.
  • Pandas y OpenPyXL — informes operativos.
  • Pytest y React Testing Library — testing automatizado.

Backend y servicios

  • Slabware y MySQL — datos de pedidos y preparación.
  • AWS S3 — documentos y pruebas de entrega.
  • Twilio, email y Web Push — notificaciones operativas.
  • CI/CD automatizado — actualizaciones de producción repetibles.

Caso de estudio del proyecto

Infraestructura de newsletter · Listmonk

ListmonkAWS EC2DockerPostgreSQLResendAmazon SESCI/CD

Problema

La empresa necesitaba un envío de emails fiable sin perder el control de los datos de sus suscriptores.

Solución

Diseñé e implementé toda la plataforma de newsletter: desplegué Listmonk en la nube, creé las plantillas de email marketing de la empresa y organicé a los suscriptores en una estructura clara y fácil de mantener.

Estructura y arquitectura

  • La plataforma completa se ejecuta en la nube sobre una instancia de AWS EC2.
  • Listmonk y PostgreSQL se ejecutan como contenedores Docker aislados con almacenamiento persistente.
  • Las plantillas de marketing ofrecen layouts reutilizables y coherentes para las campañas de newsletter.
  • Los suscriptores se organizan en listas y segmentos estructurados para una segmentación precisa y campañas fáciles de gestionar.
  • La configuración mediante variables de entorno mantiene los secretos fuera de la imagen.
  • Resend y Amazon SES proporcionan el envío de emails.
  • El hosting de AWS, el almacenamiento persistente, los health checks y backups permiten recuperar el servicio.
  • CI/CD valida y despliega actualizaciones repetibles de los contenedores.

Librerías y finalidad

  • Listmonk — gestión y segmentación de suscriptores, campañas, plantillas y analítica de envíos.
  • Docker y Docker Compose — entornos y actualizaciones reproducibles para la aplicación y base de datos.
  • PostgreSQL — persistencia de suscriptores, listas, plantillas, campañas y eventos.
  • Integración SMTP — conexión independiente del proveedor entre Listmonk y el servicio de envío.

Backend y servicios

  • Resend — envío de emails gestionado y deliverability a nivel de dominio.
  • Amazon SES — infraestructura de AWS para el envío de emails.
  • AWS EC2 — computación cloud, red y host de producción para el stack de contenedores.
  • CI/CD automatizado — comprobaciones de configuración y versiones repetibles de los contenedores.

Trabajo independiente

Proyectos seleccionados

Caso de estudio del proyecto

Mindbite

React NativeExpoTypeScriptSupabasePython

Problema

El aprendizaje tradicional suele exigir más tiempo del que muchas personas tienen disponible.

Solución

Una aplicación móvil que convierte los ratos libres en lecciones breves respaldadas por fuentes, con tarjetas guardadas, historial y rachas de aprendizaje.

Estructura y arquitectura

  • Cliente multiplataforma en React Native con versiones nativas para iOS y Android gestionadas mediante Expo.
  • Feed personalizado de tarjetas con contenido guardado, progreso, rachas y recordatorios.
  • Autenticación de Supabase y progreso sincronizado protegido mediante Row Level Security.
  • Un pipeline independiente en Python extrae, elimina duplicados y publica lecciones a partir de fuentes abiertas y verificables.

Librerías y finalidad

  • React Native y Expo — aplicación móvil multiplataforma.
  • Supabase SDK — autenticación, datos y progreso sincronizado.
  • Módulos multimedia y de notificaciones de Expo — reproducción de lecciones y recordatorios.
  • AsyncStorage — preferencias locales y caché.
  • Python, httpx y Pydantic — pipeline validado para incorporar contenido.

Backend y servicios

  • Supabase — autenticación, datos en Postgres y controles de acceso por usuario.
  • Expo Application Services — builds para iOS y Android.
  • Pipeline en Python — generación de lecciones estructuradas a partir de fuentes verificables.

Caso de estudio del proyecto

Sitios web para negocios locales

AstroTypeScriptTailwind CSSSEOi18n

Problema

Los negocios locales necesitan sitios web rápidos donde sus servicios y formas de contacto sean fáciles de encontrar.

Solución

Sitios web de alto rendimiento en Astro, adaptados a cada marca, con servicios claros, contenido bilingüe y acciones directas de contacto.

Estructura y arquitectura

  • Arquitectura estática en Astro basada en componentes, optimizada para velocidad, SEO y un hosting de bajo mantenimiento.
  • Los componentes responsive reutilizables dan prioridad a los servicios, la confianza y las acciones de contacto.
  • Diamond incluye rutas en inglés y español, además de metadatos SEO localizados.

Librerías y finalidad

  • Astro 7 — generación de sitios estáticos y componentes de página reutilizables.
  • Tailwind CSS 4 — layout responsive y sistema visual de Farmaferraz53.
  • TypeScript — propiedades tipadas para componentes y un frontend fácil de mantener.
  • Astro View Transitions — navegación más fluida entre las páginas localizadas de Diamond.

Backend y servicios

  • Despliegue estático — hosting rápido y económico sin backend.
  • SEO y rutas localizadas — posicionamiento en cada mercado objetivo.
  • Maps, WhatsApp y redes sociales — consultas directas de clientes.
Ver Diamond Countertops

Caso de estudio del proyecto

Mesurely · E-Business Card Web

ReactTypeScriptViteTailwind CSSSupabaseStripePlaywright

Problema

Las tarjetas de visita en papel se pierden fácilmente y no permiten medir el seguimiento.

Solución

Una plataforma de identidad digital para crear perfiles, compartirlos mediante QR/NFC, captar leads y gestionar suscripciones.

Estructura y arquitectura

  • Aplicación single-page en React dividida en una web pública, un dashboard autenticado y perfiles públicos compartibles.
  • Los módulos funcionales incluyen diseño de tarjetas, QR/NFC, leads, eventos y suscripciones.
  • Los módulos de API tipados separan las operaciones de dominio de la interfaz.
  • Playwright verifica el onboarding, la creación de tarjetas, la captación de leads y el checkout.

Librerías y finalidad

  • React, TypeScript y Vite — aplicación y editor de perfiles.
  • Tailwind CSS — sistema visual responsive.
  • Supabase SDK — autenticación, datos, almacenamiento y funciones de servidor.
  • qrcode.react y html-to-image — exportación de códigos QR y tarjetas.
  • SheetJS — flujos de trabajo con hojas de cálculo.
  • Playwright — testing end-to-end.

Backend y servicios

  • Supabase — autenticación, Postgres, almacenamiento y funciones de backend.
  • Stripe — checkout y suscripciones.
  • Vercel — despliegue y analítica.
  • Apple/Google Wallet, QR y NFC — formas de compartir el perfil.
Ver proyecto online

Aprender construyendo

Aplicaciones móviles

Dos aplicaciones que diseñé y desarrollé para aprender React Native mediante experiencias móviles nativas y reales.

Caso de estudio del proyecto

CustosNotes

React NativeExpoTypeScriptSwift

Problema

Las notas importantes desaparecen en las listas y capturarlas puede requerir demasiados pasos.

Solución

Una aplicación privada y centrada en la voz que mantiene las notas visibles mediante recordatorios, widgets, Live Activities y Dynamic Island.

Estructura y arquitectura

  • Flujo de una sola pantalla en React Native: mantener pulsado, hablar y soltar.
  • El almacenamiento local mantiene las notas privadas y disponibles offline.
  • Targets en Swift proporcionan controles del Control Center, widgets y Live Activities.
  • Los módulos de calendario, voz y notificaciones gestionan la programación y captura.

Librerías y finalidad

  • React Native y Expo — aplicación móvil.
  • React Native Voice — captura de voz a texto.
  • Expo Calendar y Notifications — programación y recordatorios.
  • Expo Widgets y Apple Targets — superficies nativas de iOS.
  • AsyncStorage — notas y ajustes locales.

Backend y servicios

  • Sin backend ni cuenta — las notas permanecen en el dispositivo.
  • Apple Speech y Calendar — dictado y programación opcional.
  • iOS Live Activities, Dynamic Island y Control Center — acceso persistente.
  • Expo Application Services — builds para la App Store.
Ver en la App Store

Caso de estudio del proyecto

keepbin

React NativeExpoTypeScriptiOS Media Library

Problema

Limpiar una fototeca grande puede resultar abrumador y arriesgado.

Solución

Una herramienta privada basada en gestos: desliza a la derecha para conservar, a la izquierda para eliminar, deshaz cuando lo necesites y confirma antes del borrado.

Estructura y arquitectura

  • Tarjetas en React Native presentan una foto o vídeo cada vez.
  • Las decisiones entran en una cola reversible antes de que iOS confirme la eliminación.
  • Una capa multimedia gestiona previsualizaciones, metadatos y eliminación segura por lotes.
  • El almacenamiento local recuerda el progreso, los elementos pendientes y el espacio recuperado.

Librerías y finalidad

  • React Native y Expo — interfaz móvil y runtime.
  • Expo Media Library, Image y Video — acceso privado a recursos y previsualizaciones.
  • Gesture Handler y Reanimated — interacciones de deslizamiento.
  • AsyncStorage — historial de revisión y estado de la papelera.
  • Expo File System — cálculos de almacenamiento.

Backend y servicios

  • Sin backend, cuenta ni subidas — las decisiones permanecen en el dispositivo.
  • iOS Photo Library — acceso mediante permisos y eliminación confirmada.
  • Expo Application Services — builds para la App Store.
Ver en la App Store

Aficiones relacionadas con mi profesión

Construyendo y aprendiendo en mi homelab

Un entorno práctico donde exploro redes, privacidad, infraestructura multimedia y machine learning mediante servicios self-hosted.

Caso de estudio del proyecto

Pi-hole · Filtrado DNS para toda la red

Pi-holeDNSLinuxNetworkingPrivacy

Problema

Muchos dispositivos domésticos no admiten extensiones de navegador para bloquear anuncios y tracking.

Solución

Pi-hole filtra las solicitudes DNS de forma centralizada y ofrece visibilidad de la actividad de toda la red.

Estructura y arquitectura

  • Los dispositivos domésticos envían consultas DNS a un único endpoint local de Pi-hole, en lugar de contactar directamente con resolvers públicos.
  • Pi-hole FTL contrasta cada dominio con reglas de filtrado locales y suscritas.
  • Las solicitudes bloqueadas se detienen localmente; las permitidas se guardan en caché y se reenvían upstream.
  • El dashboard muestra la actividad de los clientes y ayuda a ajustar las reglas de filtrado.

Librerías y finalidad

  • Pi-hole FTL — resolución DNS de alto rendimiento, caché, filtrado y estadísticas de consultas.
  • Gravity database — combina blocklists suscritas con reglas locales de permiso y bloqueo.
  • Interfaz web — monitorización, inspección de clientes y gestión diaria de reglas.

Backend y servicios

  • DNS local — una única política de filtrado protege toda la LAN sin extensiones en los clientes.
  • DNS upstream — resuelve las solicitudes permitidas después de que Pi-hole aplique la política local.
  • Configuración DNS de DHCP/router — dirige los dispositivos domésticos a través del servicio de filtrado.

Caso de estudio del proyecto

Jellyfin · Servidor multimedia personal

JellyfinFFmpegLinuxMedia ServerSelf-hosting

Problema

El contenido personal repartido entre archivos y discos es difícil de organizar y reproducir de forma consistente.

Solución

Jellyfin organiza mi videoteca y la reproduce de forma privada en clientes web, móviles y televisores.

Estructura y arquitectura

  • El almacenamiento multimedia se monta en el servidor Jellyfin y se organiza en una videoteca dedicada.
  • Los escaneos de la biblioteca añaden carátulas, descripciones y metadatos de codecs y subtítulos.
  • Los usuarios locales acceden a un catálogo compartido desde distintos clientes.
  • Los archivos usan Direct Play cuando es posible y transcodificación con FFmpeg cuando es necesario.

Librerías y finalidad

  • Jellyfin Server — indexación, usuarios, metadatos, decisiones de reproducción y APIs de streaming.
  • jellyfin-ffmpeg — remuxing y conversión o transcodificación cuando un cliente no reproduce el archivo original.
  • Clientes de Jellyfin — experiencia coherente en navegadores, móviles, ordenadores y televisores.

Backend y servicios

  • Almacenamiento multimedia local — conserva los archivos originales y su estructura de carpetas.
  • Proveedores de metadatos — añaden carátulas e información de títulos al catálogo privado.
  • Gestión local de usuarios — controla el acceso sin requerir una cuenta externa de streaming.

Caso de estudio del proyecto

Trading Signals · Sistema cuantitativo de criptomonedas

PythonPandasscikit-learnCoinbase APITelegramDockerGitHub Actions

Problema

Monitorizar manualmente varios criptoactivos dificulta mantener un análisis y control de riesgo consistentes.

Solución

Un sistema de homelab que combina indicadores de mercado, detección de anomalías y reglas de riesgo; después envía señales BUY/SELL aprobadas por una persona mediante Telegram, sin ejecutar operaciones.

Estructura y arquitectura

  • Coinbase proporciona diez mercados configurables, analizados cada 15 minutos en temporalidades de 1h y 4h.
  • Bollinger Bands, RSI, MACD, ATR y tendencias EMA alimentan un motor de confluencia configurable.
  • Modelos Isolation Forest por activo detectan anomalías y se reentrenan semanalmente o tras detectar drift.
  • El sentimiento de las noticias puede pausar entradas; las reglas de riesgo limitan el tamaño, las operaciones abiertas y la exposición total.
  • Telegram entrega gráficos y botones de aprobación; los resultados actualizan un Health Score capaz de pausar estrategias débiles.
  • Docker ejecuta el servicio en mi NAS; GitHub Actions despliega de forma privada mediante Tailscale, con backup y rollback.

Librerías y finalidad

  • Pandas, NumPy y ta — datos de mercado e indicadores técnicos.
  • scikit-learn — modelos normalizados Isolation Forest para detectar anomalías.
  • Plotly, Kaleido y Matplotlib — gráficos preparados para Telegram.
  • schedule y PyYAML — tareas recurrentes y configuración.
  • Pytest — cobertura de datos, señales, riesgo y backtesting.

Backend y servicios

  • Coinbase y CryptoCompare — datos de mercado y sentimiento de noticias.
  • Telegram Bot API — señales, informes y aprobación manual.
  • Docker Compose — runtime en el NAS con health checks y estado persistente.
  • GitHub Actions, Tailscale y SSH — despliegue privado y rollback.
  • Joblib, JSON y Backtest CLI — modelos, historial de rendimiento y validación.
Ver código en GitHub

Contacto

Puedes llamarme, escribirme por email o conectar conmigo en LinkedIn.