Uma aplicação web moderna para conversão de moedas em tempo real com interface intuitiva e responsiva.
CoinShift é um conversor de moedas que utiliza a API de taxas de câmbio em tempo real. A aplicação permite converter valores entre diferentes moedas (USD, EUR, GBP) de forma rápida e prática.
- 🔄 Conversão de moedas em tempo real
- ✨ Interface moderna e intuitiva
- 🎨 Design responsivo e elegante
- ⚡ Performance otimizada com Vite
- 🔒 TypeScript para segurança de tipos
- 📱 Compatibilidade com dispositivos móveis
- 🌐 Integração com Exchange Rate API
- Consumo em baixa latência de APIs
- Estados dinâmicos para interação rápida e temporária de um usuário
- Media Queries para melhor experiência em dispositivos móveis
- Componentização de elementos
- Estados de carregamento com animações e feedback visual
- Frontend Framework: React
- Build Tool: Vite
- Linguagem: TypeScript
- Styling: CSS
- API: Exchange Rate API (v6.exchangerate-api.com)
- Linting: ESLint com TypeScript Support
- Package Manager: npm
- @vitejs/plugin-react: Plugin React para Vite
- @types/react & @types/react-dom: Tipagens TypeScript para React
- typescript-eslint: Linting avançado com suporte a TypeScript
- eslint: Ferramenta de análise estática de código
Antes de começar, certifique-se de ter instalado:
- Node.js (versão 18.0 ou superior)
- npm ou yarn (gerenciador de pacotes)
- Uma chave de API gratuita do Exchange Rate API
git clone https://github.com/buyscode/coinshift.git
cd coinshiftnpm installCrie um arquivo .env.local na raiz do projeto e adicione sua chave de API:
VITE_API_KEY=sua_chave_api_aquiNota: A chave de API é obtida gratuitamente em exchangerate-api.com. Após se registrar, você receberá sua chave de API.
Inicie o servidor de desenvolvimento na porta 3000:
npm run devA aplicação estará disponível em http://localhost:3000
Compile a aplicação para produção:
npm run buildOs arquivos compilados serão gerados na pasta dist/
Visualize a versão de produção localmente:
npm run previewVerifique e corrija problemas de linting:
npm run lintcoinshift/
├── src/
│ ├── components/ # Componentes React reutilizáveis
│ │ ├── Header.tsx # Cabeçalho com título da aplicação
│ │ └── Card.tsx # Componente principal de conversão
│ ├── assets/ # Arquivos estáticos (imagens, ícones)
│ ├── App.tsx # Componente raiz da aplicação
│ ├── App.css # Estilos globais
│ ├── index.css # Estilos base
│ └── main.tsx # Ponto de entrada da aplicação
├── public/ # Arquivos públicos estáticos
├── vite.config.ts # Configuração do Vite
├── tsconfig.json # Configuração TypeScript
├── tsconfig.app.json # Configuração TS para aplicação
├── tsconfig.node.json # Configuração TS para Node
├── eslint.config.js # Configuração ESLint
├── package.json # Dependências e scripts do projeto
├── index.html # Arquivo HTML principal
└── README.md # Este arquivo
Arquivo: src/components/Header.tsx
Componente que renderiza o cabeçalho da aplicação com o título "CoinShift". Possui styling bicolor para destacar visualmente a marca.
Arquivo: src/components/Card.tsx
Componente principal que contém toda a lógica de conversão de moedas. Gerencia:
- Estado das moedas selecionadas: Moeda de origem e destino (padrão: USD → EUR)
- Estado do valor: Quantidade a converter e resultado final
- Estado de carregamento: Indicador visual durante a requisição
- Conversão de moedas: Integração com Exchange Rate API
- Seleção de moedas (USD, EUR, GBP)
- Campo de entrada para quantidade
- Formatação de moeda na saída
- Estado de carregamento com spinner
- Tratamento de erros
- Botão convertedor com feedback visual
Realiza a requisição à API de câmbio:
- Define o estado de carregamento como
true - Faz uma requisição GET para a Exchange Rate API
- Extrai a taxa de câmbio para a moeda desejada
- Calcula e formata o valor convertido
- Atualiza o estado com o resultado
A aplicação utiliza a Exchange Rate API (v6.exchangerate-api.com) para obter as taxas de câmbio em tempo real.
GET https://v6.exchangerate-api.com/v6/{API_KEY}/latest/{currency}
{
"result": "success",
"conversion_rates": {
"USD": 1.0,
"EUR": 0.92,
"GBP": 0.79,
...
}
}VITE_API_KEY: Sua chave de API do Exchange Rate API (armazenada em.env.local)
- Selecione a moeda de origem: Escolha a moeda que você deseja converter (dropdown "From")
- Selecione a moeda de destino: Escolha para qual moeda fazer a conversão (dropdown "To")
- Insira o valor: Digite a quantidade que deseja converter no campo "Amount"
- Clique em "Convert": Pressione o botão para realizar a conversão
- Visualize o resultado: O valor convertido será exibido em "Converted Amount" com formatação de moeda
- Converter 100 USD para EUR:
- Selecionar "USD" em "From"
- Selecionar "EUR" em "To"
- Inserir "100" em "Amount"
- Clicar em "Convert"
- Resultado será exibido no formato de moeda (ex: €92.00 EUR)
A aplicação utiliza CSS3 para estilização moderna e responsiva:
- Paleta de cores: Gradientes e cores vibrantes
- Tipografia: Fontes modernas e legíveis
- Responsividade: Design adaptável a diferentes tamanhos de tela
- Animações: Spinner de carregamento durante a conversão
- Acessibilidade: Labels associados aos inputs
Arquivo: vite.config.ts
export default defineConfig({
plugins: [react()],
})Arquivo: tsconfig.json
Configuração completa de TypeScript com suporte a React e imports absolutos.
Arquivo: eslint.config.js
Fornece linting de código com suporte a React Hooks e React Refresh.
- A chave de API é armazenada em variável de ambiente (
.env.local) - A aplicação não expõe informações sensíveis no código-fonte
- Validação de resposta da API antes de usar os dados
- Tratamento de erros para falhas de conexão
- ⚡ Build rápido com Vite
- 🎯 Code splitting automático
- 🔄 React Fast Refresh para desenvolvimento
- 📦 Bundle otimizado para produção
- 🎪 Lazy loading de componentes
Solução: Certifique-se de que o arquivo .env.local existe e contém VITE_API_KEY=sua_chave_api
Solução:
- Verifique sua conexão com a internet
- Confirme que a chave de API é válida
- Verifique o console do navegador para mensagens de erro detalhadas
Solução: Use uma porta diferente com o comando:
npm run dev -- --port 3001- Suporte para mais moedas
- Histórico de conversões
- Favoritação de conversões frequentes
- Modo escuro
- Suporte offline com cache
- Gráficos de taxas históricas
- Suporte multi-idioma
Este projeto está sob licença privada. Todos os direitos reservados.
Desenvolvido por Guilherme Buys (BuysCode)
Para dúvidas ou problemas, abra uma issue no repositório.
Versão: 0.1
Último Update: Março de 2026
Status: Em Desenvolvimento ✨