Aplicativo web simples para acompanhar a cotação do dólar em tempo real e receber notificações quando a cotação atingir valores configurados.
- ✅ Passcode para limitar o acesso à aplicação
- ✅ Atualização automática da cotação do dólar a cada 30 segundos
- ✅ Exibição da variação percentual
- ✅ Sistema de alertas personalizados (acima/abaixo de um valor)
- ✅ Notificações push que funcionam mesmo com a aba fechada (via Service Worker)
- ✅ Interface moderna e responsiva
- ✅ Armazenamento local dos alertas
- ✅ Conversão de valores em dólares para reais
- ✅ Service Worker para notificações em background
-
Abrir o aplicativo
- Abra o arquivo
index.htmlno Chrome - Ou sirva via um servidor local (recomendado)
- Abra o arquivo
-
Permitir notificações
- Quando solicitado, permita as notificações do navegador
- Isso é necessário para receber os alertas
-
Criar alertas
- Selecione o tipo de alerta (Acima de / Abaixo de)
- Digite o valor em reais (ex: 5.50)
- Clique em "Adicionar Alerta"
-
Acompanhar
- Deixe a aba aberta no Chrome
- Quando a cotação atingir o valor configurado, você receberá uma notificação no Mac
npm start
# ou
node server.jsO servidor abrirá automaticamente no navegador em http://localhost:3000
npx http-server -p 3000 -o -c-1# Python 3
python3 -m http.server 3000
# Python 2
python -m SimpleHTTPServer 3000Depois acesse: http://localhost:3000
npm install- Copie o arquivo de exemplo:
cp .env.example .env - Edite
.enve defina sua senha:PASSCODE=sua_senha
Veja docs/passcode.md para mais detalhes.
O projeto usa Biome para linting e formatação de código.
Verificar código:
npm run checkCorrigir problemas automaticamente:
npm run check:fixApenas lint:
npm run lint
npm run lint:fixApenas formatação:
npm run format- Conta na Vercel
- Git configurado no projeto
-
Instalar a CLI da Vercel:
npm i -g vercel
-
Fazer login:
vercel login
-
Fazer deploy:
vercel
-
Para produção:
vercel --prod
-
Fazer push do código para um repositório:
git init git add . git commit -m "Initial commit" git remote add origin <seu-repositorio> git push -u origin main
-
Conectar na Vercel:
- Acesse vercel.com
- Clique em "Add New Project"
- Importe seu repositório
- A Vercel detectará automaticamente a configuração
- Clique em "Deploy"
- Acesse vercel.com
- Clique em "Add New Project"
- Escolha "Import Git Repository" ou faça upload dos arquivos
- Configure o projeto (a Vercel detectará automaticamente)
- Clique em "Deploy"
O projeto já está configurado com vercel.json que:
- Configura headers corretos para o Service Worker
- Otimiza cache de arquivos estáticos
- Garante que o Service Worker funcione corretamente
- Service Worker: O aplicativo usa Service Worker para funcionar mesmo com a aba fechada
- Notificações: As notificações funcionam mesmo quando a aba está em segundo plano ou fechada
- Permissões: As notificações só funcionam se você permitir as permissões do navegador
- Armazenamento: Os alertas e valores de conversão são salvos localmente no navegador (localStorage e IndexedDB)
- API: A API utilizada é a AwesomeAPI que é gratuita e pública
- HTTPS: O Service Worker requer HTTPS (ou localhost) para funcionar. A Vercel fornece HTTPS automaticamente
- HTML5
- CSS3 (com gradientes e animações)
- JavaScript (ES6+)
- Service Worker API
- Notification API do navegador
- IndexedDB para armazenamento
- AwesomeAPI para cotação do dólar
dollar-now/
├── api/
│ └── verify-passcode.js # Vercel serverless function para verificação de passcode
├── docs/
│ └── passcode.md # Documentação do passcode
├── index.html # Estrutura HTML
├── style.css # Estilos CSS
├── script.js # Lógica JavaScript
├── service-worker.js # Service Worker para background sync
├── favicon.svg # Favicon do aplicativo
├── server.js # Servidor HTTP Node.js (apenas para desenvolvimento local)
├── package.json # Configuração Node.js
├── biome.json # Configuração do Biome (linting e formatação)
├── vercel.json # Configuração para deploy na Vercel
├── .vercelignore # Arquivos ignorados no deploy
├── .biomeignore # Arquivos ignorados pelo Biome
├── .gitignore # Arquivos ignorados pelo Git
└── README.md # Documentação