---
title: "TOIN.app: dezenas de ferramentas online gratuitas em 5 idiomas"
description: "Construí o TOIN.app com Astro e Claude Code: dezenas de calculadoras e conversores gratuitos, em cinco idiomas e com zero JavaScript na home. As ferramentas que mais gente procura, e os motores de cálculo testados contra as efemérides do USNO e o catálogo de eclipses da NASA."
published: "2026-08-08"
tags: ["astro", "ferramenta", "seo", "ia"]
source: "https://marciotoledo.com/blog/toin-app-ferramentas-online-gratuitas"
---

# TOIN.app: dezenas de ferramentas online gratuitas em 5 idiomas

Toda vez que eu precisava saber quantos dias faltavam pra alguma coisa, ou converter uma medida boba, eu caía num site cheio de pop-up, banner que pula e formulário pedindo cadastro pra calcular uma subtração de datas. É um tipo de página que existe há vinte anos e continua ruim.

Então construí o [TOIN.app](https://toin.app): ferramentas simples que fazem uma coisa bem feita, sem instalar nada, sem criar conta. O nome é a brincadeira de sempre, Toin de Toledo Interactive ou de "Incredible Tools", e o slogan resume a proposta: *simple tools that do one thing well*.

O site está no ar com **dezenas de ferramentas**, **milhares de páginas** e **cinco idiomas**, e sigo construindo novas sempre que possível.

Este post é o passeio completo: o que tem lá dentro, quais ferramentas as pessoas realmente usam, e o que existe por trás delas que justifica confiar no número que aparece na tela. Porque calculadora online é um mercado onde quase ninguém confere a conta, e eu descobri que conferir dá muito mais trabalho do que calcular.

## O que tem lá dentro

As ferramentas estão organizadas em seis categorias, e cada categoria só existe porque consegue recusar alguma coisa. Explico isso melhor lá embaixo.

### Datas

A categoria maior, e a que me fez começar o projeto. Tem [calculadora de idade](https://toin.app/pt/calculadora-de-idade), [dias entre datas](https://toin.app/pt/dias-entre-datas), [quantos dias até](https://toin.app/pt/quantos-dias-ate) uma data qualquer, [calculadora de dias úteis](https://toin.app/pt/calculadora-de-dias-uteis) (com feriados nacionais por país), [conversor de fuso horário](https://toin.app/pt/conversor-de-fuso-horario), [semana do ano](https://toin.app/pt/semana-do-ano), [dia do ano](https://toin.app/pt/dia-do-ano) e uma [contagem regressiva](https://toin.app/pt/contagem-regressiva) com anéis de progresso em SVG.

Tem também a família de aritmética de relógio, que é surpreendentemente útil e surpreendentemente mal resolvida na internet: [calculadora de horas](https://toin.app/pt/calculadora-de-horas), [horas entre dois horários](https://toin.app/pt/calculadora-de-horas-entre-dois-horarios), [somar e subtrair horas](https://toin.app/pt/somar-horas) e [que horas serão](https://toin.app/pt/que-horas-serao).

### Astronomia

Minha categoria favorita, e a que mais deu trabalho. [Fases da lua](https://toin.app/pt/fases-da-lua), [nascer e pôr do sol](https://toin.app/pt/nascer-e-por-do-sol), [estações do ano](https://toin.app/pt/estacoes-do-ano) (equinócios e solstícios) e [eclipse lunar](https://toin.app/pt/eclipse-lunar).

Nenhuma delas chama API. Os cálculos são implementações dos algoritmos do Meeus e do NOAA rodando no próprio navegador, testados contra as efemérides publicadas do USNO e contra o catálogo da NASA. Foi a parte do projeto em que eu mais aprendi, e é o assunto da segunda metade deste post.

### Números

[Calculadora de porcentagem](https://toin.app/pt/calculadora-de-porcentagem), [aumento percentual](https://toin.app/pt/calculadora-de-aumento-percentual), [diferença percentual](https://toin.app/pt/calculadora-de-diferenca-percentual), [porcentagem de um valor](https://toin.app/pt/calculadora-de-porcentagem-de-um-valor), [calculadora de desconto](https://toin.app/pt/calculadora-de-desconto), [calculadora de gorjeta](https://toin.app/pt/calculadora-de-gorjeta), [calculadora de fração](https://toin.app/pt/calculadora-de-fracao), [regra de três](https://toin.app/pt/regra-de-tres) e sorteio aleatório.

A de frações faz aritmética racional exata, sem passar por ponto flutuante. A de gorjeta resolve o centavo que não divide, que é um daqueles detalhes que ninguém nota até dividir a conta entre sete pessoas.

### Saúde

[Calculadora de IMC](https://toin.app/pt/calculadora-de-imc) na escala da OMS, [calculadora de calorias](https://toin.app/pt/calculadora-de-calorias) por Mifflin-St Jeor (com a margem de erro declarada, porque ela existe), [calculadora de ovulação](https://toin.app/pt/calculadora-de-ovulacao) e [calculadora gestacional](https://toin.app/pt/calculadora-gestacional).

### Finanças

[Juros compostos](https://toin.app/pt/calculadora-de-juros-compostos), [juros simples](https://toin.app/pt/calculadora-de-juros-simples) e [simulador de financiamento](https://toin.app/pt/simulador-de-financiamento) com amortização Price e SAC.

### Conversores

[Comprimento](https://toin.app/pt/conversor-de-comprimento), [peso](https://toin.app/pt/conversor-de-peso), [temperatura](https://toin.app/pt/conversor-de-temperatura), [área](https://toin.app/pt/conversor-de-area), [volume](https://toin.app/pt/conversor-de-volume) e o mais brasileiro de todos: [álcool ou gasolina](https://toin.app/pt/alcool-ou-gasolina), que usa a eficiência do **seu** carro como parâmetro em vez de repetir a regra dos 70% como se ela valesse pra todo mundo.

## As sete que mais gente procura

Essa lista não é por gosto meu. Ela vem de volume de busca medido (DataForSEO, ago/2026), cruzado com o que o site tem de fato no ar.

| Ferramenta | Buscas/mês no Brasil |
| --- | --- |
| [Eclipse lunar](https://toin.app/pt/eclipse-lunar) | 165.000 |
| [Calculadora de porcentagem](https://toin.app/pt/calculadora-de-porcentagem) | 135.000 |
| [Juros compostos](https://toin.app/pt/calculadora-de-juros-compostos) | 110.000 |
| [Simulador de financiamento](https://toin.app/pt/simulador-de-financiamento) | 90.500 |
| [Contagem regressiva](https://toin.app/pt/contagem-regressiva) | 74.000 |
| [Calculadora de IMC](https://toin.app/pt/calculadora-de-imc) | 49.500 |
| [Celsius para Fahrenheit](https://toin.app/pt/conversor-de-temperatura) | 33.100 |

### 1. Eclipse lunar

A ferramenta mais procurada de todas, e a que quase virou um erro de escopo. O [eclipse lunar](https://toin.app/pt/eclipse-lunar) mostra instantes e magnitude de cada eclipse, validados contra o catálogo da NASA.

Eu **não** faço eclipse solar, de propósito. Eclipse lunar é global: todo mundo no lado noturno da Terra vê o mesmo instante, então hora e magnitude são a resposta inteira. Eclipse solar tem faixa de totalidade de algumas centenas de quilômetros, e publicar o instante sem dizer **onde** promete muito mais do que a página entrega. Por isso a rota é `/eclipse-lunar/` e não `/eclipses/`: nem a URL pode prometer demais.

### 2. Calculadora de porcentagem

Parece a ferramenta mais boba da lista e é uma das mais usadas. A [calculadora de porcentagem](https://toin.app/pt/calculadora-de-porcentagem) tem irmãs separadas para [aumento percentual](https://toin.app/pt/calculadora-de-aumento-percentual), [diferença percentual](https://toin.app/pt/calculadora-de-diferenca-percentual) e [desconto](https://toin.app/pt/calculadora-de-desconto), porque cada uma dessas é uma pergunta diferente que as pessoas digitam de um jeito diferente.

### 3. Juros compostos

A [calculadora de juros compostos](https://toin.app/pt/calculadora-de-juros-compostos) é a única página do site que estourou o orçamento de JavaScript de propósito, e a explicação vale a pena.

O argumento inteiro da ferramenta é **o mês em que os juros passam os aportes**. Uma tabela de números não deixa isso visível, então precisa de gráfico. Só que a biblioteca de gráfico mais barata que achei custa 14 KB, e as que todo mundo usa primeiro custam de 60 a 130 KB. Desenhei o gráfico à mão em SVG: cerca de 600 bytes de lógica.

> **TIP**
>
> Detalhe que só aparece testando no celular: o `<title>` do SVG, que a maioria usa pra tooltip de gráfico, **nunca abre no toque**. Num site majoritariamente mobile, uma dica dizendo "passe o mouse" promete o que o aparelho não entrega. Os valores foram pra uma linha embaixo do gráfico, com `pointerdown`. O `<title>` ficou, mas pro leitor de tela.

### 4. Simulador de financiamento

O [simulador de financiamento](https://toin.app/pt/simulador-de-financiamento) faz amortização Price e SAC, que é o que a maioria dos simuladores brasileiros não separa direito.

Uma decisão que parece pequena e não é: existem **duas tabelas de taxa** no projeto, e trocar uma pela outra publicaria número errado em centenas de páginas. Uma é o que o dinheiro **custa** (crédito imobiliário, usado aqui). A outra é o que o dinheiro **rende** (renda fixa, usada nos juros compostos). No mesmo país são números diferentes e se movem por motivos diferentes. Elas não se chamam `TAXA_A` e `TAXA_B`, se chamam pelo que medem.

### 5. Contagem regressiva

A [contagem regressiva](https://toin.app/pt/contagem-regressiva) tem anéis de progresso em SVG e conta pra qualquer data, com páginas prontas para as datas que as pessoas mais procuram.

> **WARNING**
>
> As páginas de contagem **nunca** imprimem "faltam 142 dias" no HTML estático. Isso está errado no dia seguinte ao build, e uma página que contradiz o próprio título perde a posição que conquistou. O texto fixo afirma só o que é permanente (a data e o dia da semana). O número vivo é calculado no navegador do leitor, contra o relógio dele.

### 6. Calculadora de IMC

A [calculadora de IMC](https://toin.app/pt/calculadora-de-imc) usa a escala da OMS, e é onde eu tive mais cuidado com linguagem, não com matemática.

Saúde é o assunto em que uma calculadora escorrega fácil pra tom de diagnóstico. A ferramenta afirma o número, a faixa da OMS em que ele cai, e qual intervalo de peso aquela faixa significa naquela altura. Ela **não** diz se a pessoa é saudável, nem o que deveria fazer. A faixa é nomeada como faixa ("peso normal"), nunca como pessoa ("você está normal"). A primeira descreve um intervalo numa tabela; a segunda descreve alguém.

Tem um detalhe de arredondamento que virou teste: o intervalo saudável arredonda **pra dentro**. A 1,50 m, o peso para IMC 18,5 é 41,625 kg, e arredondar pra 41,6 dá IMC 18,489, ou seja, a página anunciaria um intervalo e em seguida chamaria o próprio limite de abaixo do peso.

### 7. Celsius para Fahrenheit

O [conversor de temperatura](https://toin.app/pt/conversor-de-temperatura) fecha a lista, e ele existe assim por causa da decisão de produto mais importante do projeto, que é o próximo assunto.

Vale citar ainda a mais brasileira do site: [álcool ou gasolina](https://toin.app/pt/alcool-ou-gasolina), que usa a eficiência do **seu** carro como parâmetro, em vez de repetir a regra dos 70% como se ela valesse pra todo mundo.

## Poucas ferramentas, muitas páginas

O número que mais confunde quem olha o projeto é esse. Como algumas dezenas de ferramentas viram milhares de páginas?

Porque **uma ferramenta não é uma página com um dropdown. É uma página por coisa que as pessoas procuram.**

Essa é a decisão de produto mais importante do projeto, e é fácil errar: construir um conversor com um `<select>` de categoria parece mais organizado e é estritamente pior. Ninguém pesquisa "conversor de unidades" tanto quanto pesquisa "celsius para fahrenheit". Um hub com dropdown compete por um termo genérico; páginas separadas competem por termos específicos, cada uma com conteúdo próprio.

Some a isso os parâmetros na URL. Uma página tipo `/calculadora-de-idade/nascido-em-1990/` chega com a ferramenta já preenchida e a resposta já na tela, e a URL é compartilhável, linkável e indexável. Cada parâmetro curado vira uma página de cauda longa a mais. Multiplique por cinco idiomas e você chega nos milhares, divididos quase igualmente entre eles.

> **WARNING**
>
> O risco aqui não é a quantidade de páginas, é conteúdo raso. Só de datas dá pra gerar 36.500 URLs de "que dia da semana foi tal data", e gerar isso é exatamente o perfil que faz o AdSense recusar um site. A regra que uso é uma só: **se você não consegue nomear a busca que a página responde, a página não existe.** Nada de produto cartesiano.

## Cinco idiomas, e por que esses cinco

Inglês na raiz, e `/pt/`, `/es/`, `/de/`, `/fr/` como espelhos completos. Não são traduções automáticas jogadas por cima: as URLs também são localizadas, então a calculadora de idade é `/age-calculator/` em inglês e `/pt/calculadora-de-idade/` em português. Quem procura em português encontra uma URL em português.

A escolha dos idiomas não foi por população. Foi por RPM de publicidade: os mercados tier-1 pagam algo como 10× o RPM brasileiro, então inglês vem primeiro, depois alemão e francês. A Índia é a rejeição mais instrutiva da lista: país mais populoso do mundo, RPM de 5 a 10 vezes menor, e os cerca de 200 milhões de usuários que navegam em inglês já chegam pelo site em inglês mesmo.

Uma consequência bem concreta disso está no código: cada widget carrega só os textos do próprio idioma. A ferramenta de fases da lua nasceu com 14,2 KB de JavaScript porque importava o mapa de textos das cinco línguas, ou seja, a página em inglês baixava as oito descrições de fase em alemão, francês, espanhol e português. Nenhum bundler elimina isso sozinho. Hoje está em 4 KB.

## A stack

Astro 7 gerando site estático, TailwindCSS 4, deploy em Cloudflare Workers. E sim, JavaScript vanilla, que é só o jeito chique de dizer "JavaScript puro, sem framework": não tem React, não tem Vue, não tem nada. Cada ferramenta é um punhado de JavaScript próprio que roda no navegador.

Isso não é purismo, é orçamento. A meta é menos de 5 KB de JavaScript próprio por página, e a maioria das ferramentas cumpre com folga: calculadora de idade em 1.771 bytes, IMC em 2.493, semana do ano em 2.427. A home despacha **zero** JavaScript.

Medido em produção, antes de qualquer anúncio entrar:

| Métrica | Medido | Meta |
| --- | --- | --- |
| LCP | 72 ms | < 1,5 s |
| CLS | 0,00 | < 0,1 |
| TTFB | 3 ms | < 800 ms |
| JS próprio (página de ferramenta) | 3.781 B | < 5 KB |

Toda a matemática vive em módulos puros e testados: `date-engine`, `moon-engine`, `sun-engine`, `eclipse-engine`, `finance-engine`, `fraction-engine` e por aí. Separar o cálculo do componente é o que permite testar fase da lua contra efeméride publicada sem abrir um navegador.

## Abrindo o capô: a parte que ninguém confere

Agora a pergunta que interessa: como eu sei que essas contas estão certas?

As quatro ferramentas de astronomia ([fases da lua](https://toin.app/pt/fases-da-lua), [nascer e pôr do sol](https://toin.app/pt/nascer-e-por-do-sol), [eclipse lunar](https://toin.app/pt/eclipse-lunar) e [estações do ano](https://toin.app/pt/estacoes-do-ano)) são as mais difíceis de validar, e por isso viraram o padrão de rigor do projeto inteiro.

Efeméride não é dado dinâmico: a lua cheia de fevereiro de 2026 é a mesma hoje e daqui a dez anos. É função matemática, e chamar rede pra buscar resultado de função pura é desperdício.

O problema é que "parece certo" não significa nada. O erro clássico é escrever o teste a partir da própria implementação: rodar o código, ver que dá `2026-02-01 22:09`, e cravar isso no teste. Esse teste passa pra sempre e **só prova que o código não mudou**, não que ele está certo. Se eu transcrevi um coeficiente errado, o teste memoriza o erro e defende ele.

Então a validação é contra fonte externa e independente: o **US Naval Observatory**, o feed de calendário lunar do Google como segunda opinião, e o **catálogo de eclipses da NASA** (Espenak e Meeus). O motor bate com as duas primeiras em **204 fases entre 1977 e 2027**, dentro de 2 minutos, tipicamente abaixo de 30 segundos.

> **INFO**
>
> Escolhi 1977 de propósito: é quase cinquenta anos antes da época do algoritmo (o `k = 0` fica em 2000). Isso cobre um ramo diferente do cálculo de ΔT e prova que a precisão não vem de estar perto do zero da série.

### O teste que só vale se ele falhar

A disciplina que mais rendeu: depois que a suíte fica verde, eu introduzo o bug clássico **de propósito** e confiro se algum teste quebra.

Nas fases da lua, mudar um dígito de um coeficiente derruba 16 testes. Ótimo. Mas nas estações do ano, trocar dois coeficientes derrubou **um** teste só, e um teste é pouco pra erro de transcrição, que é justamente o que se comete copiando tabela de livro.

O caso mais instrutivo nem é astronomia. No sorteio aleatório eu apliquei o erro clássico do Fisher-Yates e **a suíte continuou verde**. Dois testes deixaram passar: um verificava que todas as 24 permutações de quatro elementos aparecem, e aparecem mesmo, só que algumas com o dobro da frequência. O outro contava chamadas ao gerador, idêntico nos dois casos. O que pegou foi contar a distribuição: `6 6 6 6 6 6` no correto contra `8 8 4 4 8 4` no bugado.

> **WARNING**
>
> Quando o defeito é uma **probabilidade** e não um **resultado**, só um teste que conta frequência enxerga. Teste de cobertura e de alcançabilidade passam alegremente enquanto o bug vai pra produção.

### Três armadilhas que custaram tempo

**ΔT não é monotônico.** A diferença entre tempo terrestre e universal parece só crescer, mas cai até cerca de −2,8 segundos por volta de 1900 antes de subir de novo. Quem ajusta uma parábola só erra o sinal.

**Fase da lua não é fração de lunação.** A tentação é interpolar: lua nova em 0, próxima em 1, cheia em 0,5. Errado, porque a lua anda mais rápido perto do perigeu. A cheia de agosto de 2026 cai em **0,525**, e esse desvio colocava o quarto minguante com 42,6% de iluminação em vez de 50%, chegando a nomear a fase errada.

**Nascer do sol precisa da atmosfera.** Não é quando o centro do disco cruza o horizonte, é quando a **borda superior** aparece, e a refração levanta a imagem cerca de 34 minutos de arco antes. Tirar essa correção derruba 13 testes. E `null` é resposta válida duas vezes: acima do círculo polar, o mesmo `null` significa sol da meia-noite em junho e noite polar em dezembro, então o retorno diz **qual** dos dois é.

### Onde o método acaba, é melhor admitir

O capítulo 54 do Meeus é uma série truncada, não uma efeméride completa. Perto da magnitude zero, o erro residual decide o resultado sozinho: o penumbral rasante de 18/07/2027 tem magnitude **+0,006 no catálogo da NASA** e sai **−0,006** aqui.

Eu poderia baixar o limiar pra "achar" esse. Não fiz, porque baixar o corte encontraria esse e passaria a **inventar** outros, e uma página anunciando eclipse que ninguém vê é pior que uma listagem discretamente incompleta. A ausência está documentada e tem teste fixando ela, pra ninguém "consertar" afrouxando o número depois.

## O bug que o projeto inteiro existe pra não ter

A [calculadora de idade](https://toin.app/pt/calculadora-de-idade) originou tudo, e ela tem a armadilha que quase todo site erra.

Um `<input type="date">` devolve, no `valueAsDate`, a **meia-noite em UTC**. Se você calcular idade pela diferença de milissegundos, o resultado sai um dia errado pra todo mundo a oeste de Greenwich, o que inclui o Brasil inteiro e as Américas inteiras.

A correção é não fazer aritmética de data com timestamp: o motor trabalha com componentes de calendário (ano, mês, dia) como inteiros, lendo a string `'YYYY-MM-DD'` direto do campo.

> **TIP**
>
> A regra é **epoch pra duração, calendário pra calendário**. A contagem regressiva mede tempo físico decorrido, então trabalha em milissegundos mesmo, e está certo: na noite em que o relógio muda, um "dia" tem 23 ou 25 horas, e contagem por calendário erraria uma hora duas vezes por ano. Idade é o caso oposto.

Mesma lógica no [conversor de fuso horário](https://toin.app/pt/conversor-de-fuso-horario): ele não implementa fórmula nenhuma, porque o navegador já conhece as regras da base IANA. E nunca guardo diferença entre duas cidades, porque "São Paulo está três horas atrás de Londres" é verdade em janeiro e mentira em julho: o Brasil acabou com o horário de verão em 2019 e o Reino Unido não.

A suíte inteira roda em menos de dois segundos e faz parte do comando de build no deploy. Regressão no motor de datas não derruba nada: ela **publica**. O site continua no ar, bonito, calculando errado. Esse gate é a única coisa entre um coeficiente trocado e a produção.

## O nome saiu de uma conversa no Claude Desktop

Antes de escrever uma linha de código eu precisava do domínio, e eu já tinha dois candidatos meus na mesa: `toin.app` e `tointools.com`. Joguei os dois no Claude Desktop pedindo mais ideias, com uma referência meio esquisita de propósito: queria algo na linha de Google, Uber, iFood, OLX, Buscapé, nomes que funcionassem no Brasil e fora dele ao mesmo tempo.

Veio uma lista grande, dividida por estratégia. Inventados curtos (`zumo.tools`, `piko.tools`, `vixo.app`, `nubo.tools`), nomes com sentido de kit ou ferramenta (`kitto.app`, `utilo.app`, `caixa.tools`), palavras reais que funcionam em português, espanhol e inglês (`pronto.tools`, `nexo.tools`, `lume.app`) e uns bem brasileiros que eu descartei na hora (`faztudo.com.br`, `jeitinho.app`, `ferramentinha.com.br`), porque um site que ia nascer em cinco idiomas não podia ter nome que só faz sentido aqui.

O útil não foi a lista, foi o veredito sobre o que eu já tinha. Entre os meus dois, `toin.app` ganhou de `tointools.com` por três motivos: é curto, não significa nada (o que é uma vantagem, e não um defeito, como Google demonstrou) e é pronunciável em português e inglês. O `tointools.com` é composto, mais longo e só funciona em inglês.

Duas ressalvas vieram junto, e são as que eu ainda carrego. `.app` obriga HTTPS, o que não custa nada, mas tem menos confiança de clique numa SERP brasileira do que um `.com`. E `.tools` é barato e disponível, só que ninguém digita direto, o que só não importa porque esse é um projeto de SEO puro, onde o tráfego chega pela busca e não pela barra de endereço.

É um uso de IA bem diferente do resto do projeto: não escreveu código nenhum, só me impediu de escolher o nome pior por conta própria.

## Construído com Claude Code

O site inteiro foi construído com Claude Code, e a parte que fez diferença não foi gerar componente: foi o `CLAUDE.md` do projeto. Ele tem centenas de linhas, e quase nada ali é instrução de estilo. É decisão de produto com o custo anotado junto: por que a categoria se chama `astronomy` e não `space`, por que `numbers` e não `math`, por que o bloco de ferramentas relacionadas mostra seis e não todas.

Esse último é meu exemplo favorito de armadilha. O componente listava todas as ferramentas menos a atual. Correto quando eram onze. Conforme a lista cresceu, virou 24 cards e 8,4 KB, 18% do HTML de toda página, mais que todo o JavaScript do site. Ninguém decidiu isso: a ausência de um limite decidiu por todo mundo. Já escrevi por aqui sobre [como o CLAUDE.md carrega o contexto do projeto](/blog/claude-md-contexto-projeto-claude-code), e o TOIN foi onde essa ideia mais rendeu, justamente porque as decisões ficaram escritas com o motivo, não só com a regra.

Outro detalhe que o Astro cobrou: `trailingSlash` e formato de build precisam combinar, ou o Cloudflare te dá um 308 em toda URL interna. Isso me mordeu antes, e [documentei a combinação que funciona](/blog/trailing-slash-astro-cloudflare-pages).

## Resumo

- **[TOIN.app](https://toin.app)**: dezenas de calculadoras e conversores gratuitos, sem cadastro e sem instalação.
- Seis categorias: datas, astronomia, números, saúde, finanças e conversores.
- Milhares de páginas em cinco idiomas, com URLs localizadas em cada um.
- Astro 7 estático, Tailwind 4, JavaScript puro, Cloudflare Workers.
- Uma página por variação de busca, com parâmetro na URL e resposta já preenchida na chegada.
- Menos de 5 KB de JavaScript próprio por página; home com zero.

E o que eu levo desse projeto pra qualquer código de cálculo:

1. **Teste contra fonte externa**, nunca contra a própria saída do código.
2. **Duas fontes independentes** valem muito mais que uma.
3. **Injete o bug de propósito** e veja se a suíte pega. Se não pegar, o teste é decorativo.
4. **Quando o método tem limite, escreva o limite** e fixe com teste, em vez de calibrar o número até o resultado ficar bonito.

> **NOTE**
>
> Nada disso está pronto de verdade. O roadmap tem mais ferramenta do que eu vou conseguir construir tão cedo, e duas páginas já passaram do orçamento de JavaScript sem ninguém aprovar. A diferença é que agora está escrito, em vez de despercebido.

Se você tem um cálculo chato que faz sempre no papel ou numa planilha, ou ainda alguma ferramenta que sente necessidade, me conta. É exatamente assim que a lista cresce.

## Referências

- Jean Meeus. *Astronomical Algorithms*, 2ª edição (capítulos 25, 27, 49 e 54)
- US Naval Observatory. [Astronomical Applications API](https://aa.usno.navy.mil/data/index)
- NOAA. [Solar Calculator](https://gml.noaa.gov/grad/solcalc/)
- Fred Espenak e Jean Meeus. [Five Millennium Canon of Lunar Eclipses](https://eclipse.gsfc.nasa.gov/lunar.html), NASA Eclipse Web Site
- DataForSEO. Volumes de busca do Google Ads, medidos em agosto de 2026
