Skip to content

Latest commit

 

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FX Target Logo

Um planejador financeiro inteligente para metas internacionais, com conversão de câmbio em tempo real e cálculo automático de viabilidade — construído com design Mobile-First.


📋 Sumário

  1. Sobre o Projeto
  2. Estratégia de Design e Desenvolvimento
  3. Consumo de APIs e Dados Externos
  4. Pitch do Projeto
  5. Prototipagem e Interfaces (Figma)
  6. Identidade Visual e Pesquisa de UX
  7. Gestão do Projeto (Agile)
  8. Arquitetura de Código e Estrutura de Arquivos
  9. Controle de Versão e Workflow

1. 🎯 Sobre o Projeto

FX Target
Home Mobile Pronta - FX Target

Planejar uma viagem, um intercâmbio ou a compra de um bem no exterior em moeda estrangeira é um desafio matemático real, dada a volatilidade constante do mercado de câmbio. O FX Target nasceu para resolver essa dor de forma direta e visual: o usuário cadastra uma meta em moeda estrangeira, informa sua capacidade de poupança mensal e recebe, em tempo real, um veredito claro sobre a viabilidade do seu objetivo — sem precisar abrir uma planilha ou fazer contas manuais.

Público-alvo: viajantes, estudantes de intercâmbio e qualquer pessoa que precise projetar uma economia em moeda estrangeira com previsibilidade — diretamente pelo smartphone.

💡 Diferencial de Engenharia: o motor do sistema calcula dinamicamente o tempo necessário para atingir a meta, utilizando a cotação vigente no momento da requisição:

Tempo (meses) = (Meta em Moeda Estrangeira × Taxa de Câmbio) / Economia Mensal (moeda local)

Se o tempo calculado for menor ou igual ao prazo estipulado pelo usuário, o projeto é marcado como Viável. Caso contrário, o sistema calcula automaticamente a quantidade de meses excedentes.

🔗 Aplicação em Produção: https://pedrobonetti01-ctrl.github.io/fx-target-project/


2. 🚀 Estratégia de Design e Desenvolvimento

Mobile First Badge

📱 Metodologia Mobile-First

A escolha pelo Mobile-First não foi estética, e sim estratégica: a maior parte das decisões financeiras do dia a dia — e a consulta de metas de economia — acontece em momentos rápidos, no celular, entre uma tarefa e outra. Projetar primeiro para a menor tela força um exercício de priorização: apenas o essencial sobrevive ao layout, resultando em uma experiência mais limpa, rápida e objetiva. Depois de validada a base mobile, o layout foi expandido de forma progressiva para telas maiores, garantindo fluidez sem sacrificar a usabilidade em nenhum breakpoint.

🎯 Escopo da V1.0

O desenvolvimento seguiu uma estratégia de entregas focadas na dor principal do usuário. A V1.0 do FX Target contempla o fluxo completo de gestão de metas financeiras:

  • Criação de Projetos Financeiros (metas ativas);
  • Edição de metas já existentes;
  • Exclusão de Projetos Financeiros ativos;
  • Active Tracker — cronômetro regressivo que acompanha o prazo de cada meta em tempo real;
  • Configurações de tema (claro/escuro), moeda padrão e gerenciamento de dados locais.

3. 🌐 Consumo de APIs e Dados Externos

Integração com API de câmbio

💱 API de Cotação de Moedas — AwesomeAPI

A precisão das cotações é o coração do FX Target, por isso a escolha recaiu sobre a AwesomeAPI, um serviço público e gratuito de câmbio em tempo real, amplamente utilizado por projetos financeiros brasileiros.

A aplicação consome o endpoint de cotações múltiplas, solicitando os pares de moedas necessários para os cálculos de conversão em uma única chamada:

https://economia.awesomeapi.com.br/json/last/USD-EUR,EUR-USD,BRL-USD

Estrutura da requisição (api.js):

/**
 * Configuração e chamada da AwesomeAPI para taxas de câmbio em tempo real
 */
const API_CONFIG = Object.freeze({
  BASE_URL: "https://economia.awesomeapi.com.br/json/last",
  PAIRS: ["USD-EUR", "EUR-USD", "BRL-USD", "USD-BRL"],
  TIMEOUT_MS: 8000,
  FALLBACK_RATES: Object.freeze({
    usdEur: 0.92,
    eurUsd: 1.08,
    brlUsd: 0.18,
    usdBrl: 5.50
  })
});

export async function fetchExchangeRates(options = {}) {
  const { timeout = API_CONFIG.TIMEOUT_MS, useFallbackOnError = true } = options;
  const endpoint = `${API_CONFIG.BASE_URL}/${API_CONFIG.PAIRS.join(",")}`;
  const controller = new AbortController();
  const timeoutId = setTimeout(() => controller.abort(), timeout);

  try {
    const response = await fetch(endpoint, {
      signal: controller.signal,
      headers: { Accept: "application/json" }
    });

    clearTimeout(timeoutId);

    if (!response.ok) {
      throw new Error(`API Request failed with status ${response.status}`);
    }

    const data = await response.json();

    return {
      usdEur: safeParseFloat(data.USDEUR?.bid, API_CONFIG.FALLBACK_RATES.usdEur),
      eurUsd: safeParseFloat(data.EURUSD?.bid, API_CONFIG.FALLBACK_RATES.eurUsd),
      brlUsd: safeParseFloat(data.BRLUSD?.bid, API_CONFIG.FALLBACK_RATES.brlUsd),
      usdBrl: safeParseFloat(data.USDBRL?.bid, API_CONFIG.FALLBACK_RATES.usdBrl)
    };
  } catch (error) {
    clearTimeout(timeoutId);
    console.error(`[CurrencyService] Error fetching rates: ${error.message}`);

    if (useFallbackOnError) {
      return { ...API_CONFIG.FALLBACK_RATES };
    }
    throw error;
  }
}

Solução adotada para precisão e resiliência:

Etapa Estratégia
Requisição Chamada assíncrona única (fetch + async/await), buscando os pares de câmbio simultaneamente
Validação Verificação explícita de response.ok antes de processar os dados
Parsing Conversão dos valores de bid (string) para float, garantindo precisão nos cálculos matemáticos
Resiliência Bloco try/catch com cotações de fallback fixas, prevenindo que uma instabilidade da API derrube a experiência do usuário

4. 🎬 Pitch do Projeto

Pitch do projeto FX Target

O vídeo pitch foi roteirizado e editado no DaVinci Resolve, com o objetivo de apresentar, em poucos minutos, o problema enfrentado por quem planeja uma meta financeira internacional, a solução proposta pelo FX Target e uma demonstração prática do fluxo completo de criação e gestão de metas dentro da aplicação.

Pontos-chave abordados no vídeo:

  • O problema da volatilidade cambial ao planejar metas no exterior;
  • A proposta de valor do FX Target como ferramenta visual de acompanhamento de metas;
  • Demonstração do fluxo de cadastro e cálculo de viabilidade;
  • Apresentação da solução final e seus diferenciais na prática.

5. 🖼️ Prototipagem e Interfaces (Figma)

Antes da codificação, os fluxos de tela e a arquitetura da informação foram desenhados no Figma, garantindo uma experiência fluida e totalmente responsiva.

Home Criação de Metas Listagem de Projetos
Wireframe da Home Wireframe das Conexões Wireframe do Formulário

Links do Figma:

Recurso Link
🎨 Link do Protótipo (Projeto) Explorar no Figma
🚀 Link do Protótipo (Executado) Testar no Figma

ℹ️ Como o projeto segue a filosofia Mobile-First, os fluxos foram desenhados e validados primeiro para dispositivos móveis e adaptados continuamente para telas maiores.


6. 🎨 Identidade Visual e Pesquisa de UX

🖌️ Design System e Cores

A paleta de cores foi definida no Coolors, buscando um equilíbrio visual que transmitisse confiança e modernidade — atributos essenciais para uma aplicação que lida com dinheiro e planejamento financeiro. A curadoria priorizou tons com bom contraste entre texto e fundo, respeitando critérios básicos de acessibilidade (legibilidade em componentes de vidro/glassmorphism e em telas pequenas).

Paleta de Cores (Coolors)
Paleta de Cores usada no Coolors
Referência Visual Sugestões de IA
Referência Visual 1 Sugestões de IA

🔍 Referências e Assistência de IA

O processo de design foi enriquecido por duas frentes de pesquisa:

  • Benchmarking visual: curadoria de referências no Pinterest, usadas como base para o moodboard organizado no Milanote;
  • Refinamento assistido por IA: consultas pontuais a LLMs (Gemini e Claude) para validar heurísticas de usabilidade, revisar a hierarquia visual dos componentes e sugerir melhorias na experiência de preenchimento de formulários.

Essa combinação de curadoria manual com revisão assistida por IA ajudou a antecipar problemas de usabilidade antes mesmo da etapa de codificação.


7. 📌 Gestão do Projeto (Agile)

A gestão de tarefas foi realizada via Kanban no Trello, simulando o fluxo de trabalho de squads de produto em empresas de tecnologia, com colunas de To Do, Doing e Done. Essa organização permitiu quebrar o desenvolvimento em ciclos diários bem definidos, facilitando o acompanhamento do progresso e a priorização das entregas até o fechamento da V1.0.

Estrutura Kanban no Trello

8. 🏗️ Arquitetura de Código e Estrutura de Arquivos

Decisões de Engenharia e Layout

Estruturação HTML Semântica A aplicação foi desenvolvida utilizando HTML5 semântico, priorizando a acessibilidade e a organização clara dos fluxos de dados com a tag <form>, agrupamento correto de inputs de escolha única (type="radio") e estrutura limpa para renderização dos dados de cotação.

Engenharia de CSS e Responsividade A interface traz a identidade visual projetada no Figma através de técnicas modernas de CSS3 (Flexbox e CSS Grid), garantindo responsividade total alinhada à metodologia Mobile-First. Para aprimorar a experiência visual, foram aplicadas técnicas de profundidade como Glassmorphism (backdrop-filter: blur()), aumentando o contraste e a legibilidade dos elementos.

Decisão de Design: Estrutura Key-Value Rows

Para otimizar a usabilidade em dispositivos móveis, a interface utiliza uma estrutura dinâmica de cartões dispostos em linhas chave-valor baseada na semântica de Description Lists (<dl>, <dt>, <dd>). Essa abordagem substitui tabelas tradicionais rígidas, garantindo um layout fluido em qualquer tamanho de tela, preservando a acessibilidade e mantendo o código limpo.

Home Mobile Criação de Metas Interface Dinâmica
Home Pronta Mobile Formulário Customizado Mobile Estrutura Key-Value Rows

📂 Padronização e Modularização do CSS

Para manter a folha de estilo organizada e de fácil manutenção, o CSS foi modularizado por responsabilidade, evitando um único arquivo monolítico:

css/
├── variables.css      # Paleta de cores, espaçamentos e tokens de design
├── header.css         # Estilos do cabeçalho e navegação
├── footer.css         # Estilos do rodapé e seção do autor
├── forms.css          # Componentes de formulário (create-goal.html)
├── key-value-rows.css # Estrutura dinâmica de listagem de projetos
└── main.css           # Reset, tipografia e estilos globais

Essa separação torna cada arquivo pequeno e previsível, facilitando localizar e ajustar um componente específico sem afetar o restante da interface — uma prática essencial para manter a escalabilidade do código.

🛠️ Arquitetura Técnica (Vanilla Stack)

Focado no ecossistema core da web para garantir performance extrema:

Camada Tecnologia
Frontend HTML5 semântico (uso estrito de tags de acessibilidade) e CSS3 avançado (Flexbox/Grid)
Metodologia Mobile-First real, focado na experiência do usuário
Lógica JavaScript Vanilla (sem frameworks, foco em manipulação limpa da DOM)
APIs Integração assíncrona com AwesomeAPI para cotações em tempo real
Persistência Web Storage API para retenção de dados local
Detalhes visuais e bio do autor
Seção Customizada Sobre o Criador

9. 🔀 Controle de Versão e Workflow

O versionamento do projeto foi gerido através do Git e hospedado no GitHub, priorizando a consistência do código e a integridade do repositório ao longo do desenvolvimento:

  • Commits objetivos, registrando o progresso incremental da aplicação de forma clara e profissional;
  • Integração contínua, garantindo a sincronização e a estabilidade da branch principal (main) a cada nova implementação;
  • Controle de histórico, mantendo o rastro de alterações e a rastreabilidade das entregas da interface e das integrações.

A gestão de versão garantiu que a evolução do código ocorresse de maneira estruturada, resultando em um repositório limpo e pronto para produção.

Registros de Terminal e Commits
Terminal Git e Commits

About

🌍 Planejador financeiro inteligente para metas internacionais. Calcula a viabilidade de objetivos em moedas estrangeiras (USD/EUR) com base em economias em BRL e possui um cronômetro regressivo ativo para tracking de metas. Desenvolvido em Vanilla JS.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages