Skip to content
A página inicial do Esoteric Numbers, com o título "Read the numbers in your name"
Todo o trabalho

Projeto independente

Esoteric Numbers

Uma plataforma de numerologia em 67 idiomas que trata um nicho cheio de paywalls e barreiras de email com verdadeira seriedade de produção, gratuita, privada e bem engenheirada.

Visitar o projeto
Notas de campo

Começou com um livro de numerologia e uma noite preguiçosa. Cansei-me de fazer os exercícios à mão e escrevi um programa que os fizesse por mim. Desde então, nunca mais parou de crescer.

Atlantic Forge

O que estava em jogo

O Esoteric Numbers começou com um livro e uma noite preguiçosa. Estava a ler sobre numerologia e a fazer os exercícios à mão, a transformar nomes e datas de nascimento em números, até a repetição deixar de ter graça. Fiz então o que os engenheiros fazem quando uma tarefa se torna mecânica: escrevi um pequeno programa de terminal para correr os cálculos por mim. Depois dei-lhe uma interface simples, só para o tornar mais visual. E algures nesse caminho, o projeto deixou de ser para mim.

Porque eu já tinha visto o que existia. As plataformas disponíveis eram caras para o leitor e difíceis de percorrer: sites datados, leituras mantidas reféns de um endereço de email ou de um paywall, e nenhuma palavra sobre o que acontece ao nome e à data de nascimento que lá escrevemos. Se eu queria estes cálculos, outras pessoas também queriam, e nada dizia que tivessem de pagar a um porteiro por aritmética. O objetivo definiu-se sozinho: uma plataforma gratuita na sua essência, honesta quanto à privacidade, fácil de navegar e construída para chegar ao maior número de pessoas possível.

Se um site pede o seu nome e a sua data de nascimento, deve-lhe encriptação, não uma barreira de email.

A decisão

A parte pouco convencional foi recusar tratar um nicho “divertido” de forma leviana. O Esoteric Numbers está engenheirado como um produto com algo a perder: dados pessoais encriptados em repouso, contas protegidas por OAuth e autenticação de dois fatores, pagamentos através do Stripe em vez de um checkout improvisado, e observabilidade completa do browser aos trabalhos em segundo plano, para que uma só pessoa o possa operar como deve ser e saber, em vez de esperar, que está saudável.

Algumas calculadoras depois, a leitura honesta era que a plataforma ainda estava aquém do seu potencial. Chegar às pessoas, de forma sustentável, não é um desejo; é um problema de engenharia, e a resposta foi a camada de tradução. Sessenta e sete idiomas não é um projeto que se encomenda uma vez; é um fardo de manutenção que se agrava a cada alteração de conteúdo. Por isso a plataforma mantém-se a si própria: um modelo de linguagem a correr em hardware local ajuda a traduzir o conteúdo novo e a manter todos os idiomas atualizados à medida que as calculadoras evoluem. Sem avença de agência, sem fatura de API à palavra, e sem nenhum idioma a apodrecer em silêncio.

O alargamento continua: um blog, e a cobertura de tradições de numerologia de todo o mundo, o passo de uma calculadora para uma referência.

O que entregámos

Um SaaS de produção completo. Um front-end em Nuxt 4 comunica com um back-end em Django através de GraphQL, assente em PostgreSQL. O trabalho em segundo plano corre em Celery, com RabbitMQ e Redis. Os relatórios em PDF são gerados por um serviço dedicado, e todo o sistema é vigiado pelo Sentry e pelo New Relic. Dezenas de calculadoras em várias tradições de numerologia, todas gratuitas.

A stack, e porquê

Django, em vez de um back-end em JavaScript. As partes desta plataforma que podiam realmente magoar alguém, pagamentos, autenticação, dados pessoais encriptados, são problemas resolvidos e auditados no ecossistema do Django. A integração com o Stripe, o OAuth, a autenticação de dois fatores e a encriptação ao nível do campo têm bibliotecas maduras e postas à prova. Reconstruir essa superfície de segurança de raiz numa stack Node teriam sido semanas de trabalho para chegar a algo menos comprovado. O Python é também uma casa confortável para a lógica das próprias calculadoras, dezenas de sistemas numerológicos que são, no essencial, aritmética cuidadosa sobre nomes e datas.

GraphQL, em vez de REST. Dezenas de calculadoras multiplicadas por 67 idiomas significam centenas de necessidades de dados ligeiramente diferentes. Em REST, isso torna-se ou uma proliferação de endpoints ou alguns endpoints inchados que trazem dados a mais em cada pedido. Um único schema GraphQL tipado permite que cada página peça exatamente o que apresenta, e o contrato entre front-end e back-end é verificado em vez de lembrado.

Nuxt, em vez de uma SPA renderizada no cliente. Toda a história de aquisição é pesquisa orgânica em 67 idiomas. Uma SPA renderiza o conteúdo depois de o crawler já ter partido; o Nuxt renderiza as páginas de cada idioma no servidor, com routing i18n adequado, para que cada língua seja um site de pleno direito, indexável. A alternativa era a invisibilidade exatamente nas pesquisas que a plataforma existe para responder.

O que mudou

  • Os visitantes leem na sua própria língua, em 67 idiomas, sem barreiras de email pelo caminho
  • Os dados pessoais estão encriptados e protegidos por 2FA, num espaço que não oferece nem uma coisa nem outra
  • Pagamentos, trabalhos em segundo plano e observabilidade correm como em qualquer sistema de produção sério
  • O pipeline de tradução mantém-se a si próprio com um modelo local, para que o alcance não decaia
Um resultado de número de destino, calculado a partir de um nome e de uma data de nascimento
Uma leitura, calculada em direto no browser
A página de calculadoras completa, com o seu longo índice de secções de numerologia
Dezenas de calculadoras, de muitas tradições