Skip to content
OluizkPublic

About

Simulador de valor de Bitcoin em Reais: conversor BRL/BTC/mBTC/sat, gráfico histórico e simulação de rendimento de trás para frente.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Calculus

Calculus

Simulador de valor de Bitcoin em Reais. Converta BRL ⇄ BTC / mBTC / satoshi, veja o histórico e simule quanto um valor teria rendido — de trás para frente.

CI Deploy GitHub Pages Release License: MIT

Abrir o app · Baixar para Windows · Imagem Docker


O que é

Um conversor de Bitcoin com uma pergunta a mais: em vez de mostrar apenas quanto o BTC valia no passado, o Calculus pega o valor que você digitou e mostra como ele se comportaria em cada momento da história.

Três modos de gráfico:

Modo Responde
Preço do BTC Quanto valia 1 BTC em cada momento.
Simulação Quanto o seu valor compraria/valeria em cada momento (R$ 1.000 → quantos mBTC; 5 mBTC → quantos reais).
Rendimento Você "compra" na data escolhida e vê quanto essa compra valeria ao longo do tempo, para frente até hoje e para trás.

Exemplo: R$ 10 investidos em 15/03/2014 viraram 0,0065 BTC — hoje isso vale cerca de R$ 2.586 (+25.764%).

Recursos

  • Conversor bidirecional BRL ⇄ BTC / mBTC / satoshi, aceitando vírgula ou ponto.
  • Cotação "Agora" ou "Em uma data" — campo de data/hora desde jun/2013 ou clique direto num ponto do gráfico.
  • Oito períodos: 1 D, 5 D, 1 M, 6 M, YTD, 1 A, 5 A e Máx, com troca automática de fonte por período.
  • Preço ao vivo por WebSocket da Binance, com polling REST como reserva.
  • Painéis opcionais: "Renda seria" / "E se…" e resumo do período (máxima, mínima, média, variação).
  • Opções ocultas na engrenagem: fonte de dados, tempo real, escala logarítmica, altura do gráfico, tema claro/escuro, marcadores de máx/mín.
  • Link compartilhável com valor, unidades, período, modo e data (?v=10&de=BRL&para=BTC&p=MAX&modo=yield&data=…).
  • Ajuda apenas sob demanda: tooltip no ícone ? e popovers que não bloqueiam a tela. Sem tour, sem dicas automáticas.
  • Interface em português, tema claro e escuro, responsiva até 375 px.

Rodando localmente

git clone https://github.com/Oluizk/Calculus.git
cd Calculus
npm install
npm run dev

Abre em http://localhost:5173.

Script O que faz
npm run dev Servidor de desenvolvimento (Vite).
npm run build Build estático em dist/.
npm run preview Serve o dist/ para conferência.
npm run icons Regenera build/icon.ico e build/icon.png.
npm run electron:dev Sobe o Vite e abre o app desktop apontando para ele.
npm run app:win Gera o instalador e o portátil .exe em release/.
npm run docker:build / docker:run Imagem local e container em http://localhost:8080.

App desktop (.exe)

O empacotamento usa Electron + electron-builder e produz dois arquivos em release/:

  • Calculus-1.0.0-setup.exe — instalador NSIS, permite escolher a pasta, cria atalhos.
  • Calculus-1.0.0-portable.exe — executável único, não instala nada.
npm install
npm run app:win

Para Linux (AppImage e .deb) use npm run app:linux; para macOS (.dmg), npm run app:mac.

Detalhes da versão desktop:

  • Em produção a interface é servida por um protocolo próprio (app://calculus/) em vez de file://, para que as chamadas às APIs públicas e o WebSocket de preço passem pelo CORS normalmente.
  • contextIsolation ligado, nodeIntegration desligado, sandbox ativo e nenhum canal IPC aberto — o preload expõe apenas versão e plataforma.
  • Links externos abrem no navegador padrão, nunca dentro da janela do app.
  • Instância única: abrir de novo foca a janela existente.

Cada tag v* dispara o workflow de release, que compila Windows e Linux e anexa os arquivos ao GitHub Releases:

npm version patch   # ou minor / major
git push --follow-tags

Docker

docker compose up -d          # http://localhost:8080

Ou direto da imagem publicada:

docker run --rm -p 8080:80 ghcr.io/oluizk/calculus:latest

A imagem é multi-stage: node:22-alpine compila e nginx:1.27-alpine serve os estáticos, com fallback de SPA, gzip, cache imutável nos assets com hash e no-cache no index.html. O build da imagem não baixa o binário do Electron (ELECTRON_SKIP_BINARY_DOWNLOAD=1).

Deploy

Destino Gatilho Workflow
GitHub Pages push em main deploy-pages.yml
Imagem no GHCR push em main e tags v* docker.yml
.exe, .AppImage, .deb no Releases tags v* release.yml
Build web + imagem (verificação) push e pull request ci.yml

O base do Vite é './', então o mesmo build funciona em subpasta (Pages), na raiz de um domínio, dentro do container e dentro do Electron.

Neste repositório o Pages já está ligado com Source: GitHub Actions — cada push em main republica o site. Em um fork, se o primeiro deploy falhar em Create Pages site, ligue o Pages uma vez em Settings → Pages e rode o workflow de novo.

Como o app é totalmente estático e só consome APIs públicas, ele também sobe em Netlify, Vercel, Cloudflare Pages ou qualquer servidor de arquivos — basta publicar dist/.

Fontes de dados

Todas públicas, sem chave de API:

Fonte Uso Cobertura
Binance (par BTCBRL) 1 D a 5 A e preço ao vivo desde out/2020
Mercado Bitcoin (API v4) período Máx e reserva geral desde jun/2013
CoinGecko última reserva últimos 365 dias

Em "Automática" o app tenta as fontes nessa ordem e cai para a próxima em caso de falha. O CryptoCompare foi removido por passar a exigir chave de API.

Estrutura

src/
  api/sources.js        adaptadores Binance / Mercado Bitcoin / CoinGecko
  api/market.js         períodos, busca com fallback, cotação por data, feed ao vivo
  composables/          useMarket (estado + cache), useSettings (localStorage), useToast
  components/           PriceChart (SVG próprio), Converter, QuoteDate, InfoPanel, SettingsPanel…
  utils/                units (conversões), format (pt-BR)
electron/               processo principal (.cjs) e preload do app desktop
docker/nginx.conf       configuração do servidor da imagem
scripts/make-icons.mjs  gera o .ico e o .png do app sem dependências externas
.github/workflows/      CI, Pages, Docker e release do desktop

O gráfico é SVG desenhado à mão (eixos, escala log, hover, marcadores) — sem biblioteca de charts.

Contribuindo

Issues e pull requests são bem-vindos. Antes de abrir um PR, rode npm run build para garantir que o projeto compila. Mudanças de interface: mantenha a regra do projeto de ajuda só sob demanda, sem textos automáticos ou tours.

Aviso

Ferramenta educativa. Os dados vêm de APIs públicas de terceiros, podem divergir entre corretoras e não constituem recomendação de investimento.

Licença

MIT © Oluizk

About

Simulador de valor de Bitcoin em Reais: conversor BRL/BTC/mBTC/sat, gráfico histórico e simulação de rendimento de trás para frente.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages