Volver a proyectos
Sincronario logo

Sincronario

Herramienta que automatiza la conversión del calendario gregoriano al Sincronario Galáctico de 13 Lunas.

Astro TypeScript PWA

El concepto del tiempo en el mundo moderno está dictado casi exclusivamente por el calendario gregoriano, un sistema de doce meses asimétricos e irregulares. Esta estructura, si bien es el estándar global, carece de una armonía geométrica o astronómica precisa. Por otro lado, el Sincronario de 13 Lunas propone un paradigma alternativo: un calendario perpetuo basado en 13 ciclos de 28 días exactos (364 días), más un “Día Fuera del Tiempo” para sincronizar con el año solar.

El problema que he abordado en este proyecto no es filosófico, sino computacional: ¿Cómo traducir y sincronizar dinámicamente el caos del modelo gregoriano hacia la estructura determinista y cíclica del modelo de 13 Lunas, manteniendo un rendimiento web óptimo y una accesibilidad universal?

La utilidad real de esta herramienta radica en automatizar este cálculo complejo. Al ingresar o detectar una fecha, el sistema mapea la coordenada temporal gregoriana contra una fecha de referencia estática (26 de julio de 2013, Kin 164) y calcula de forma inmediata el Kin correspondiente, su Sello Solar, su Tono Galáctico, la Luna, el día específico de dicha luna y el Plasma Radial.

El flujo de trabajo es directo:

  1. El usuario accede a la aplicación web.
  2. El sistema captura la fecha local actual.
  3. El motor de reglas de negocio ejecuta el algoritmo de transformación.
  4. La interfaz devuelve una tarjeta de identidad temporal (Kin) y su posición en la matriz de 13 lunas. Esto permite a personas ajenas a la matemática del sincronario obtener su coordenada temporal de forma instantánea y comprensible.

Análisis Profundo de Arquitectura (Perspectiva Técnica)

Como arquitecto de esta solución, he priorizado la velocidad de entrega, el mínimo peso en el lado del cliente y una separación limpia entre la lógica de dominio y la capa de presentación.

Arquitectura General y Patrones de Diseño

El proyecto se estructura como una aplicación monolítica ligera bajo el paradigma de Server-Side Rendering (SSR) utilizando Astro.

La decisión técnica de utilizar SSR en lugar de un sitio estático (SSG) se basa en la naturaleza de la aplicación: el contenido principal es intrínsecamente dependiente del tiempo (new Date()). Al renderizar en el servidor (en este caso, en el Edge o en Serverless Functions a través del adaptador de Vercel), aseguro que el cliente reciba un HTML puro con la fecha calculada, eliminando tiempos de carga por ejecución de JavaScript en el navegador y mejorando drásticamente el SEO y el First Contentful Paint (FCP).

El patrón arquitectónico subyacente sigue un acercamiento de Separation of Concerns:

  • Capa de Dominio/Lógica (src/lib/): Contiene algoritmos puros e independientes del framework.
  • Capa de Presentación (src/pages/ y src/components/): Exclusivamente responsable de consumir la capa de dominio y estructurar el marcado.

Modelado de Datos y Lógica de Negocio

El corazón del sistema es la lógica de sincronización. He diseñado la entidad principal DreamspellDate para que sea inmutable una vez calculada. No hay gestión de estado reactivo global porque la aplicación, en su flujo principal actual, calcula y expone una foto estática del tiempo.

El motor de reglas maneja casos límite (edge cases) matemáticos particulares del sincronario:

  • El inicio del año se ancla invariablemente el 26 de julio gregoriano.
  • El 25 de julio se abstrae del flujo lunar estándar, siendo tratado como el Día Fuera del Tiempo.
  • El 29 de febrero (día bisiesto gregoriano) se aísla de la cuenta regular de kines, tratándose funcionalmente como 0.0 Hunab Ku, evitando el desfase del calendario perpetuo.
flowchart TD
    A[Fecha Gregoriana Objetivo] --> B{¿Es 29 de Febrero?}
    B -- Sí --> C[Retornar Objeto Hunab Ku]
    B -- No --> D{¿Es 25 de Julio?}

    D -- Sí --> E[Asignar Día Fuera del Tiempo]
    D -- No --> F[Calcular Días desde Inicio de Año]

    F --> G[Calcular Índice de Luna y Día de Luna]
    E --> H[Calcular Kin Base]
    C --> END[Fin de Cálculo]
    G --> H

    H --> I[Cálculo de Desfase desde Fecha Referencia]
    I --> J[Determinar Sello Solar 1-20]
    I --> K[Determinar Tono Galáctico 1-13]
    I --> L[Determinar Plasma Radial 1-7]

    J --> M[Construcción de Entidad DreamspellDate]
    K --> M
    L --> M
    E --> M

    M --> END

La entidad de datos resultante se estructura de la siguiente manera:

classDiagram
    class DreamspellDate {
      +Date gregorianDate
      +number kin
      +string seal
      +number sealIndex
      +string tone
      +number toneIndex
      +string moon
      +number moonIndex
      +number dayOfMoon
      +string plasma
      +boolean isDayOutOfTime
      +string color
    }

Stack Tecnológico

El ecosistema de herramientas ha sido seleccionado estrictamente por su eficiencia, tipado fuerte y experiencia de desarrollo.

TecnologíaRol ArquitectónicoJustificación Técnica
AstroMeta-framework y RenderizadoProporciona SSR rápido y envía Zero-JS por defecto. Ideal para contenido altamente estático o dependiente de peticiones únicas al servidor.
TypeScriptTipado EstáticoGarantiza la integridad de las entidades del dominio (DreamspellDate) y previene errores en las complejas operaciones matemáticas de fechas.
Tailwind CSSEstilos Basados en UtilidadesPermite un diseño ágil directamente en los componentes sin inflar el peso de los archivos CSS globales. Funciona en sinergia con el empaquetador de Vite.
Vite PWAConfiguración de Progressive Web AppImplementa capacidades offline y de instalación nativa de forma transparente en el proceso de compilación de Astro.
Vercel AdapterDespliegue e InfraestructuraFacilita la ejecución de la función SSR generada por Astro directamente en la infraestructura Serverless de Vercel.

La conjunción de Astro en modo SSR, un dominio lógico fuertemente tipado en TypeScript y una interfaz desacoplada conforma una solución extremadamente performante. El sistema abstrae exitosamente la complejidad algorítmica de la conversión calendárica, encapsulando la lógica matemática en funciones puras y entregando un producto final que responde en milisegundos con una huella de ejecución en el cliente prácticamente nula.