Uma aplicação para converter a moeda de valores monetários.
Precisamos de um sistema que faça a conversão de valores entre moedas. A ideia é partir de uma solução simples como algo baseado em linha de comando e evoluir até termos uma API com persistência em banco de dados.
Ao desenvolver sistemas, é importante considerar padrões de dados estabelecidos. Neste caso, um padrão importante é o ISO-4217, que estabelece como representar moedas usando siglas de três caracteres.
O objetivo do conversor de moedas é ser um projeto que permita adquirir e aplicar novos conhecimentos gradualmente. A proposta é evoluir o projeto ao longo de cinco semanas.
Se possível, recomendamos investir um tempo para tentar aprender testes automatizados. Eles ajudarão ao longo de todas as etapas, validando cada incremento da solução e evitando alteração de comportamento sem previsibilidade.
"Acceptance tests are critical in an agile environment because they answer the questions, “How do I know when I am done?” for developers and “Did I get what I wanted?” for users."
Humble, Jez; Farley, David. Continuous Delivery (Addison-Wesley Signature Series (Fowler)) (p. 85). Kindle Edition.
Nesta primeira etapa, a solução pode ser em linha de comando ou baseada em arquivo. Para fins de simplificação, podemos suportar uma quantidade limitada de moedas.
Requisitos: #1
Transformar o conversor desenvolvido na semana 1 em uma api web, expondo um endpoint que realize a mesma operação proposta na etapa anterior.
Persistir as taxas de câmbio em uma tabela no Postgres. Talvez versionar as taxas de câmbio por data, permitindo conversões retroativas.
Consumir uma API real que forneça taxas de câmbio atualizadas e utilizar isso na resolução do problema. Sugestões:
Dockerizar a aplicação permitirá entender as vantagens trazidas pelos containers para os projetos de software modernos. Também facilitará o entendimento do papel dos containers na infraestrutura da Creditas.
Lidando com dinheiros:
- Como lidar com valores monetários em Javascript e outras linguagens
- Porque sempre calcular dinheiros em centavos
Docker: