Skip to content

rogerioaguas/Wallet

Repository files navigation

Wallet Build Status codecov version

Arquitetura MVP

MVP

Utilizada com Dagger2, RXKotlin e o framework ROOM da Google.

Adicionar nova moeda

Não há necessidade de criar novas activitys, como estou utilizando fragment, basta adicionar o endpoint para ser feita a chamada da nova moeda, adicionar o enum respectivo a sua nova cryptocurrency no projeto e alterar o exchange fragment.

Como usar

APK

  • Bastar baixar a última versão da APK disponível em Release

Android Studio

  • Clone o projeto:
git clone https://github.com/bcolombini/Wallet/ 
  • Abra o Android Studio e importe o diretório clonado.

Para buildar o projeto em sua maquina e rodar os testes execute o comando:

Obs.: Algum emulador precisa estar de pé

./gradlew lint build jacocoTestReport assembleAndroidTest

Desafio Mobile

O desafio consiste em criar uma carteira virtual de criptomoedas. Todo cliente ao se cadastrar recebe R$ 100.000,00 (cem mil reais) em conta para comprar Bitcoins e Britas. A cotação da criptomoeda Brita é equivalente ao dólar e pode ser consultada na API do Banco Central enquanto que a cotação do Bitcoin pode ser consultada na API do Mercado Bitcoin.

Sobre as operações financeiras de criptomoedas, é correto afirmar que:

  • O cliente pode vender suas criptomoedas ou trocar uma pela outra. ✔️

  • O cliente precisa saber o saldo discriminado por cada moeda. ✔️

  • O cliente precisa ter um extrato de operações financeiras. ✔️

Requisitos Técnicos

  • O desafio deve ser feito em Swift, Kotlin, Objective-C ou Java. -> Kotlin
  • Os dados precisam ser armazenados em um banco de dados local. -> ROOM

Critérios de Avaliação

O desafio será avaliado através de cinco critérios.

Entrega

  • O código possui algum controle de dependências? -> Gradle
  • O resultado final está completo para ser executado? ✔️
  • O resultado final atende ao que se propõe fazer? ✔️
  • O resultado final atende totalmente aos requisitos propostos? ✔️
  • O resultado final é visualmente elegante? ✔️

Boas Práticas

  • O código está de acordo com o guia de estilo da linguagem? ✔️
  • O código está bem estruturado? ✔️
  • O código está fluente na linguagem? ✔️
  • O código faz o uso correto de Design Patterns? -> MVP

Documentação

  • O código foi entregue com um arquivo de README claro de como se guiar? ✔️
  • O código possui comentários pertinentes? ✔️
  • O código está em algum controle de versão? -> GIT
  • Os commits são pequenos e consistentes? ✔️
  • As mensagens de commit são claras? ✔️

Código Limpo

  • O código possibilita expansão para novas funcionalidades? Como seria o caso de acrescentar novas criptomoedas? ✔️
  • O código é Don't Repeat Yourself? ✔️
  • O código é fácil de compreender? ✔️

Controle de Qualidade

  • O código possui configuração de lint? ✔️
  • O código possui testes unitários? ✔️
  • O código possui cobertura de testes? ✔️
  • O código está em Integração Contínua? ✔️

Material de Estudo

Licença

MIT License

Copyright (c) 2016 Stone Pagamentos

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.