Fontes de dados
- Ações, BDRs, FIIs e ETF de ouro: API da Brapi (brapi.dev).
- Ouro spot (XAU/BRL): AwesomeAPI.
- Títulos públicos: API pública do Tesouro Direto.
Por que o site não chama a Brapi diretamente do navegador
Este é um site estático hospedado no GitHub Pages — ele não tem um servidor próprio rodando o tempo todo. Se o token da Brapi fosse colocado no JavaScript do site, qualquer visitante poderia abrir as ferramentas de desenvolvedor do navegador e copiar a chave em segundos. Por isso a chave nunca entra em nenhum arquivo público do repositório.
Como funciona na prática
- O token da Brapi fica guardado apenas em GitHub Actions Secrets, um cofre do próprio GitHub, associado ao repositório.
- Um workflow (
.github/workflows/atualizar-cotacoes.yml) roda automaticamente a cada 30 minutos nos servidores do GitHub. - Esse workflow executa
scripts/atualizar-cotacoes.mjs, que busca as cotações usando o token e grava o resultado emdados/cotacoes.json. - O site (rodando no navegador de cada visitante) só lê esse arquivo
dados/cotacoes.json— que é público, mas não contém nenhuma credencial.
Atualização e limitações
As cotações refletem o último ciclo do workflow (até ~30 minutos de atraso) — não são cotações em tempo real de milissegundo a milissegundo. A busca por ticker no formulário "Adicionar ativo" também funciona sobre essa mesma base pré-carregada; um ticker fora da lista acompanhada pelo site pode ser adicionado manualmente, informando nome e preço.
Cálculo das sugestões
Para cada classe de ativo, o valor alocado é dividido igualmente entre os ativos ativos (não excluídos) daquela classe. A quantidade sugerida de cotas/títulos é o valor por ativo dividido pelo preço unitário, arredondada para baixo. Isso é apenas uma ilustração de proporção — não considera lote mínimo real de negociação, custos de corretagem ou impostos.