Daniel López Azaña

Tema

Social Media

Proyecto destacado

TiempoAnimal - Calculadora científica de edad de mascotas en Rust y WebAssembly

Aplicación web bilingüe desarrollada con Rust, Leptos y WebAssembly que calcula la edad de mascotas en años humanos mediante algoritmos respaldados científicamente, ofreciendo cálculos interactivos en tiempo real con rendimiento excepcional y optimización SEO multilingüe.

Los dueños de mascotas de todo el mundo se hacen la misma pregunta: “¿Qué edad tiene mi compañero en años humanos?” Aunque persisten respuestas tradicionales como “multiplica por 7”, la ciencia veterinaria moderna revela una realidad mucho más compleja. TiempoAnimal (conocida internacionalmente como ZooClock) transforma este conocimiento científico en una aplicación web accesible e interactiva que proporciona cálculos precisos de edad basados en investigación de vanguardia, envueltos en una experiencia bilingüe excepcional.

Modo avanzado de TiempoAnimal con indicadores completos de salud

Diseñé y desarrollé esta calculadora científica de edad de mascotas desde cero utilizando Rust, Leptos y WebAssembly, creando una plataforma que combina rigor académico con experiencia de usuario excepcional. El resultado es una aplicación web que ejecuta cálculos complejos en tiempo real mientras permanece accesible para dueños de mascotas en todo el mundo mediante su implementación dual-dominio completamente bilingüe.

El desafío: ciencia y experiencia de usuario

Las calculadoras tradicionales de edad de mascotas utilizan fórmulas excesivamente simplificadas que ignoran factores biológicos cruciales. La investigación veterinaria demuestra que la progresión de edad varía drásticamente según la especie, el tamaño de raza y las características individuales, pero presentar esta complejidad sin abrumar a los usuarios requiere un diseño cuidadoso.

Los dueños de mascotas necesitan:

  • Cálculos científicamente precisos de edad basados en investigación veterinaria moderna, no en mitos obsoletos.
  • Algoritmos específicos por raza que consideren diferentes tasas de maduración en razas de perros y gatos.
  • Resultados en tiempo real con interacciones suaves y responsivas que se sientan instantáneas.
  • Comprensión visual mediante gráficos interactivos que muestren la progresión de edad a lo largo del tiempo.
  • Información accesible en su idioma nativo (inglés/español) con optimización SEO adecuada.

El desafío técnico:

Construir un sistema que combine precisión científica con experiencia de usuario excepcional implicaba resolver varios problemas complejos simultáneamente: implementar algoritmos sofisticados que se ejecuten instantáneamente, crear una interfaz completamente reactiva que se actualice en tiempo real y mantener dos dominios separados con sincronización bilingüe perfecta y optimización SEO.

La solución: cálculos reactivos impulsados por Rust

Al aprovechar el rendimiento de Rust combinado con el framework reactivo de Leptos y la velocidad casi nativa de WebAssembly, creé una plataforma donde los cálculos complejos ocurren instantáneamente con cada cambio de parámetro. El sistema unificado de enrutamiento Axum garantiza un comportamiento SEO predecible, mientras que la arquitectura multilingüe basada en base de datos mantiene ambas versiones de idioma perfectamente sincronizadas.

Arquitectura y stack tecnológico

La plataforma está construida sobre una arquitectura SSR híbrida moderna que maximiza el rendimiento mientras mantiene características SEO excepcionales a través de dos dominios.

Componentes clave:

ComponenteTecnologíaPropósito
Framework frontendLeptos 0.8.2 (Rust)UI completamente reactiva con seguridad de tipos y arquitectura de islas
Motor de cálculoRust + WebAssemblyCálculos científicos de alto rendimiento ejecutados del lado del cliente
Servidor backendAxum (Rust)Sistema de enrutamiento unificado con renderizado del lado del servidor
Base de datosPostgreSQL + SQLxDatos de razas, parámetros científicos y contenido multilingüe
EstilosTailwind CSS + Font AwesomeInterfaz moderna y responsiva con soporte de modo oscuro
Sistema SEOHreflang basado en base de datosGeneración automática de enlaces bilingües y gestión de URLs

Por qué Rust + Leptos + WebAssembly

Rust fue la elección natural por su rendimiento excepcional, seguridad de memoria y garantías en tiempo de compilación. El framework Leptos proporciona una experiencia de desarrollo nivel React con rendimiento runtime superior mediante su enfoque de arquitectura de islas.

Beneficios clave:

  • Cálculos instantáneos: algoritmos científicos complejos se ejecutan con latencia casi cero.
  • Estado reactivo type-safe: el compilador detecta bugs antes de que lleguen a los usuarios.
  • Tamaño de bundle óptimo: tree-shaking y eliminación de código muerto mantienen los módulos WASM compactos.
  • Cero overhead runtime: sin pausas de recolección de basura durante los cálculos.

SSR híbrido con arquitectura de islas

La aplicación utiliza hidratación selectiva mediante la arquitectura de islas de Leptos, donde solo los componentes interactivos incluyen WebAssembly:

SPA tradicional

flowchart TB A[🌐 Solicitud inicial] -->|Bundle JS grande| B[Cliente] B -->|Parsear y ejecutar| C[Hidratar todo] C -->|Llamadas API| D[Servidor]

⏱️ Carga inicial más lenta

Islas ZooClock

🌐 Solicitud inicial

flowchart TB subgraph Server[" "] E[HTML SSR] F[WASM pequeño] end G[Solo calculadora hidratada] E --> G F --> G style Server fill:transparent

⚡ Visualización de contenido instantánea

Impacto en el rendimiento:

  • Tiempo de interacción más rápido: el contenido estático se renderiza inmediatamente desde SSR.
  • Payload inicial más pequeño: solo el componente calculadora incluye WASM.
  • Mejor SEO: los motores de búsqueda ven HTML completamente renderizado.
  • Mejora progresiva: el sitio funciona sin JavaScript, la calculadora mejora cuando se carga.

Características principales

1. Algoritmos de cálculo de edad científicos

La plataforma implementa algoritmos respaldados científicamente basados en investigación veterinaria revisada por pares:

Cálculo avanzado de edad de perros (Versión 3.0):

  • Tasas de maduración basadas en tamaño de raza: las razas pequeñas maduran más rápido que las grandes.
  • Progresión no lineal: los primeros años cuentan diferente según investigación de metilación de ADN.
  • Factores de género y estado de castración: considera diferencias biológicas.
Tamaño de razaAl añoA los 2 añosBase científica
Pequeña (< 10kg)15,0 años humanos24,0 años humanosMaduración más rápida, madurez sexual temprana (6-8 meses)
Mediana (10-25kg)13,5 años humanos23,0 años humanosTasa de desarrollo intermedia
Grande (> 25kg)12,0 años humanos22,0 años humanosMaduración más lenta, madurez sexual tardía (12-18 meses)

Cálculo de edad de gatos:

  • Patrones de envejecimiento felino distintos: diferentes de los caninos.
  • Ajustes específicos por raza: considera variaciones de tamaño de raza.
  • Consideraciones de nivel de actividad: factores de estilo de vida interior vs. exterior.

Implementación técnica:

  • Motor de cálculo basado en Rust: compilado a WebAssembly para máximo rendimiento.
  • Datos de razas basados en base de datos: PostgreSQL almacena más de 200 razas de perros y 80+ razas de gatos.
  • Recálculo en tiempo real: cada cambio de parámetro dispara actualizaciones instantáneas.
  • Animaciones suaves: retroalimentación visual usando transiciones CSS y reactividad Leptos.

2. Interfaz de usuario completamente reactiva

Construida con la reactividad de grano fino de Leptos, la UI se actualiza instantáneamente sin manipulación manual del DOM:

Componentes interactivos:

  • Selector de raza con búsqueda: autocompletado busca entre cientos de razas.
  • Deslizador de edad con control de precisión: soporta granularidad a nivel de mes.
  • Gráfico visual de progresión de edad: gráfico interactivo mostrando equivalente de vida.
  • Indicadores de esperanza de vida: muestra porcentaje de vida vivida y restante.

Reactividad en acción:

// Ejemplo simplificado mostrando reactividad Leptos
let (edad, set_edad) = create_signal(3.0);
let (raza, set_raza) = create_signal(Raza::MestizaMediana);

// La edad humana se recalcula automáticamente cuando cambian las señales
let edad_humana = create_memo(move |_| {
    calcular_edad_humana(edad.get(), raza.get())
});

Cada cambio de señal se propaga automáticamente a través del grafo de computación, disparando solo los componentes afectados para re-renderizar con precisión quirúrgica.

3. Arquitectura multi-dominio bilingüe

La plataforma sirve dos dominios distintos con sincronización perfecta:

Estrategia de doble dominio:

SEO basado en base de datos:

  • Generación automática de hreflang: alternativas de idioma entre dominios.
  • Gestión de contenido unificada: PostgreSQL almacena todas las traducciones.
  • URLs optimizadas para SEO: rutas limpias y descriptivas en ambos idiomas.
  • Detección de idioma del lado del servidor: sistema de preferencias basado en cookies.

Beneficios:

  • SEO mejorado: cada dominio posiciona independientemente en su idioma.
  • Mejor experiencia de usuario: el dominio nativo genera más confianza.
  • Crecimiento flexible: fácil añadir más idiomas o dominios.

4. Características avanzadas de UI/UX

Soporte de modo oscuro:

  • Detección de tema del lado del servidor: sin flash de contenido sin estilo.
  • Persistencia basada en cookies: la preferencia sobrevive recargas de página.
  • Transiciones suaves: cambio de tema animado.

Accesibilidad:

  • Navegación por teclado: soporte completo de teclado para todas las interacciones.
  • Optimizado para lectores de pantalla: HTML semántico y etiquetas ARIA.
  • Soporte de alto contraste: cumple estándares WCAG 2.1 AA.

Optimizaciones de rendimiento:

  • Lazy loading: imágenes y assets no críticos se cargan bajo demanda.
  • Minificación de assets: CSS, JavaScript y HTML comprimidos.
  • Listo para CDN: assets estáticos optimizados para entrega en edge.

5. Modo avanzado: cálculos personalizados en profundidad

TiempoAnimal ofrece un modo avanzado que desbloquea parámetros adicionales para usuarios que buscan cálculos aún más precisos y personalizados:

Campos adicionales del modo avanzado:

  • Fecha de nacimiento precisa: introduce la fecha exacta de nacimiento para cálculos al día.
  • Control de peso: ajusta el peso específico con control deslizante para considerar variaciones respecto al peso medio de raza.
  • Sexo: selecciona entre macho o hembra para ajustar tasas de envejecimiento biológicas.
  • Estado de castración: especifica si está castrado o sin castrar, afectando longevidad y progresión de edad.

Indicadores adicionales en modo avanzado:

  • Progresión de etapas de vida: visualiza en qué etapa se encuentra tu mascota (cachorro, adolescente, joven, maduro, senior) con rangos de edad para cada etapa.
  • Índice de salud: evaluación basada en peso respecto a su rango ideal, con indicador visual de estado (bajo, bueno, excelente).
  • Rango seguro de temperaturas: muestra temperaturas ideales y peligrosas específicas para la raza, con gráfico visual del rango de confort.

Modo avanzado de TiempoAnimal mostrando parámetros adicionales

Beneficios del modo avanzado:

  • Precisión máxima: considera factores biológicos individuales que afectan el envejecimiento.
  • Recomendaciones personalizadas: consejos de salud específicos según parámetros ingresados.
  • Información educativa: ayuda a los dueños a comprender mejor las necesidades específicas de su mascota.
  • Interfaz intuitiva: la complejidad adicional se presenta de forma clara sin abrumar.

Modo avanzado de TiempoAnimal mostrando campos adicionales e indicadores de salud completos

Resultados e impacto

Logros de rendimiento

Cálculos instantáneosLatencia casi cero para algoritmos científicos complejos gracias a la ejecución WebAssembly.
Animaciones suavesActualizaciones reactivas a 60 FPS en toda la interfaz sin tirones.
Bundle WASM compactoMódulo WebAssembly optimizado bajo 150KB mediante tree-shaking agresivo.
Código base type-safeEl compilador de Rust detecta bugs en tiempo de compilación, asegurando fiabilidad sólida.

Impacto empresarial

Plataforma bilingüe dual-dominioSirviendo tanto mercados en inglés (zooclock.com) como en español (tiempoanimal.com) con optimización SEO nativa.
Credibilidad científicaAlgoritmos basados en investigación revisada por pares mejoran la confianza y autoridad.
Accesible para dueños de mascotas en todo el mundoLa interfaz simple hace que la ciencia compleja sea accesible para todos.
Plataforma lista para producciónEn vivo en ambos dominios con conjunto completo de características y estabilidad excepcional.

Logros técnicos

Se demostró la viabilidad de la arquitectura de islas Leptos para aplicaciones web de producción combinando SSR con hidratación selectiva.
Se implementó SEO multilingüe basado en base de datos con generación automática de hreflang entre dominios duales.
Se crearon algoritmos de cálculo de edad científicamente precisos basados en investigación veterinaria moderna.
Se establecieron mejores prácticas para Rust+Leptos+WASM en aplicaciones reactivas con rendimiento óptimo.

Conclusión

El proyecto TiempoAnimal (ZooClock en su versión internacional) representa una fusión exitosa de rigor científico y tecnología web moderna. Al aprovechar Rust, Leptos y WebAssembly, creé una plataforma que ofrece cálculos científicos complejos con capacidad de respuesta instantánea mientras mantiene SEO excepcional a través de dominios bilingües duales.

Este proyecto demuestra que algoritmos sofisticados y experiencia de usuario hermosa no son mutuamente excluyentes. La decisión arquitectónica de usar la arquitectura de islas de Leptos con hidratación selectiva resultó en una plataforma que logra tanto cargas iniciales rápidas como interactividad instantánea donde más importa.

Conclusiones clave para proyectos similares

  1. La arquitectura de islas permite rendimiento óptimo mediante hidratación selectiva.
  2. Rust + WebAssembly ofrece velocidad de cálculo de clase escritorio en navegadores.
  3. La reactividad de grano fino proporciona UX suave sin overhead de framework.
  4. La arquitectura multilingüe basada en base de datos escala elegantemente entre dominios.
  5. El full stack type-safe previene clases enteras de bugs en tiempo de compilación.

¿Necesitas una solución similar?

Para empresas que requieren aplicaciones web de alto rendimiento con:

  • Cálculos complejos en tiempo real (dominios científicos, financieros, de ingeniería).
  • Optimización SEO multilingüe a través de múltiples dominios.
  • Interfaces reactivas instantáneas con rendimiento de clase escritorio.
  • Desarrollo full-stack type-safe minimizando bugs en runtime.

El stack Rust/Leptos/WebAssembly demostrado en TiempoAnimal proporciona una solución robusta, de alto rendimiento y escalable.

Estoy disponible para consultoría y desarrollo en aplicaciones similares de alto rendimiento, ayudándote a ofrecer experiencias de usuario excepcionales respaldadas por ingeniería sólida.

Ponte en contacto →

Daniel López Azaña

Sobre el autor

Daniel López Azaña

Emprendedor tecnológico y arquitecto cloud con más de 20 años de experiencia transformando infraestructuras y automatizando procesos.

Especialista en integración de IA/LLM, desarrollo con Rust y Python, y arquitectura AWS & GCP. Mente inquieta, generador de ideas y apasionado por la innovación tecnológica y la IA.

Comentarios

Sé el primero en comentar

Enviar comentario

¿Tienes un proyecto similar en mente?

Hablemos sobre cómo puedo ayudarte a alcanzar tus objetivos

Iniciar conversación