Voltar aos projetos
Logotipo de Sincronario

Sincronario

Ferramenta que automatiza a conversão do calendário gregoriano para a Sincronia Galáctica das 13 Luas.

AstroTypeScriptPWA

O conceito de tempo no mundo moderno é ditado quase exclusivamente pelo calendário gregoriano, um sistema de doze meses assimétricos e irregulares. Essa estrutura, embora seja o padrão global, carece de uma harmonia geométrica ou astronômica precisa. Por outro lado, a Sincronia das 13 Luas propõe um paradigma alternativo: um calendário perpétuo baseado em 13 ciclos de exatamente 28 dias (364 dias), mais um “Dia Fora do Tempo” para sincronizar com o ano solar.

O problema que abordei neste projeto não é filosófico, mas computacional: como traduzir e sincronizar dinamicamente a irregularidade do modelo gregoriano com a estrutura determinística e cíclica do modelo das 13 Luas, mantendo um desempenho web ideal e acessibilidade universal?

A utilidade real desta ferramenta está em automatizar esse cálculo complexo. Ao inserir ou detectar uma data, o sistema mapeia a coordenada temporal gregoriana em relação a uma data de referência estática (26 de julho de 2013, Kin 164) e calcula imediatamente o Kin correspondente, seu Selo Solar, seu Tom Galáctico, a Lua, o dia específico dessa lua e o Plasma Radial.

O fluxo de trabalho é direto:

  1. O usuário acessa a aplicação web.
  2. O sistema captura a data local atual.
  3. O motor de lógica de negócio executa o algoritmo de transformação.
  4. A interface retorna um cartão de identidade temporal (Kin) e sua posição na matriz das 13 luas. Isso permite que pessoas não familiarizadas com a matemática da sincronia obtenham sua coordenada temporal de forma instantânea e compreensível.

Análise Arquitetural Aprofundada (Perspectiva Técnica)

Como arquiteto desta solução, priorizei a velocidade de entrega, uma pegada mínima no lado do cliente e uma separação clara entre a lógica de domínio e a camada de apresentação.

Arquitetura Geral e Padrões de Design

O projeto está estruturado como uma aplicação monolítica leve sob o paradigma de Server-Side Rendering (SSR) com Astro.

A decisão técnica de usar SSR em vez de um site estático (SSG) baseia-se na natureza da aplicação: o conteúdo principal é inerentemente dependente do tempo (new Date()). Ao renderizar no servidor (neste caso, no Edge ou em Serverless Functions por meio do adaptador da Vercel), garanto que o cliente receba HTML puro com a data pré-calculada, eliminando tempos de carregamento devidos à execução de JavaScript no navegador e melhorando o SEO e o First Contentful Paint (FCP).

O padrão arquitetural subjacente segue uma abordagem de Separação de Responsabilidades:

  • Camada de Domínio/Lógica (src/lib/): Contém algoritmos puros, independentes do framework.
  • Camada de Apresentação (src/pages/ e src/components/): Responsável exclusivamente por consumir a camada de domínio e estruturar a marcação.

Modelagem de Dados e Lógica de Negócio

O núcleo do sistema é a lógica de sincronização. Projetei a entidade principal DreamspellDate para ser imutável depois de calculada. Não há gerenciamento de estado reativo global, porque a aplicação, em seu fluxo principal atual, calcula e expõe um instantâneo estático do tempo.

O motor de regras trata casos-limite matemáticos particulares da sincronia:

  • O início do ano é invariavelmente ancorado no dia 26 de julho gregoriano.
  • O dia 25 de julho é abstraído do fluxo lunar padrão, sendo tratado como o Dia Fora do Tempo.
  • O dia 29 de fevereiro (dia bissexto gregoriano) é isolado da contagem regular de kins, tratado funcionalmente como 0.0 Hunab Ku, o que evita o deslocamento do calendário perpétuo.
flowchart TD
    A[Data Gregoriana Alvo] --> B{É 29 de fevereiro?}
    B -- Sim --> C[Retornar Objeto Hunab Ku]
    B -- Não --> D{É 25 de julho?}

    D -- Sim --> E[Atribuir Dia Fora do Tempo]
    D -- Não --> F[Calcular Dias desde o Início do Ano]

    F --> G[Calcular Índice da Lua e Dia da Lua]
    E --> H[Calcular Kin Base]
    C --> END[Fim do Cálculo]
    G --> H

    H --> I[Calcular Deslocamento a partir da Data de Referência]
    I --> J[Determinar Selo Solar 1-20]
    I --> K[Determinar Tom Galáctico 1-13]
    I --> L[Determinar Plasma Radial 1-7]

    J --> M[Construir Entidade DreamspellDate]
    K --> M
    L --> M
    E --> M

    M --> END

A entidade de dados resultante está estruturada da seguinte forma:

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

O ecossistema de ferramentas foi selecionado estritamente por sua eficiência, tipagem forte e experiência de desenvolvimento.

TecnologiaPapel ArquiteturalJustificativa Técnica
AstroMeta-framework e RenderizaçãoOferece SSR rápido e envia Zero-JS por padrão. Ideal para conteúdo altamente estático ou dependente da requisição ao servidor.
TypeScriptTipagem EstáticaGarante a integridade das entidades de domínio (DreamspellDate) e previne erros em operações matemáticas complexas com datas.
Tailwind CSSCSS Utility-FirstPermite um design ágil diretamente nos componentes, sem inflar arquivos CSS globais. Funciona em sinergia com o bundler Vite.
Vite PWAConfiguração de Progressive Web AppImplementa recursos offline e instalação nativa de forma integrada ao processo de build do Astro.
Vercel AdapterImplantação e InfraestruturaFacilita a execução da função SSR gerada pelo Astro diretamente na infraestrutura Serverless da Vercel.

A combinação do Astro em modo SSR, de um domínio lógico fortemente tipado em TypeScript e de uma interface desacoplada forma uma solução de alto desempenho. O sistema abstrai a complexidade algorítmica da conversão de calendários, encapsulando a lógica matemática em funções puras e entregando um produto final que responde em milissegundos com uma pegada de execução mínima no cliente.

Arraste para mover o diagrama. Use + e − para dar zoom, as setas para movê-lo e 0 para redefinir a visualização.

Vamos trabalhar juntos

Engenheiro de Software e desenvolvedor Senior Full-Stack, trabalho remotamente a partir de Santa Cruz, Bolívia. Aberto a novas oportunidades.