O aplicativo Ws Cars foi criado para atender um desafio proposto pela WS Work Sistemas. Ele consiste na criação de uma base de leads interessados em carros. Programaticamente o aplicativo consta com: MVVM + Clean + Retrofit + Koin + Room e muito mais! Além disso, existe uma rotina de envio dos leads para o banco de dados remoto.
Arquiteturas
: Decidi usar MvvM + Clean neste projeto para seguir os padrões utlizados atualmente no mercado de trabalho. Deixando-o mais limpo, de fácil manutenção, de fácil entendimento e facilmente testável.
Dados do Usuário
: Para adquirir os dados do usuário, decidi ter mais um fragment onde ele pode colocar seu nome e e-mail para ser contactado futuramente.
Tema de cores do Aplicativo
: Em relação as cores do aplicativo, eu optei por utilizar as cores do site da WS Work Sistemas, responsável pela criação deste desafio.
Validação dos dados do Usuário
: Para evitar o envio de dados inconsistentes para a API, o usuário só consegue se tornar um Lead quando seus dados forem validados como "válidos" .
Rotina de envio de Leads
: Na primeira tela do aplicativo é disparado a funcionalidade de envio de leads que consiste em: Buscar no banco de dados local a lista de leads salva > Checar se essa lista não está vazia para evitar envios de listas vazias para a Api > Em caso da lista não estar vazia é feito o envio desses leads para a Api > Em caso de sucesso do envio de leads, o banco de dados local é limpo.
Demonstrar interesse em um carro (se tornar um Lead)
Kotlin
: linguagem utilizada no projeto.
ViewBinding
: fazer binding de view.
Flow
: fazer atualizações da tela em tempo real.
Courutines
: usado para colocar ações demoradas em um thread secundária.
Git
: usado para versionar o código no github.
Room
: usado para persistência de dados em banco de dados interno com SQLite.
Retrofit
: usado para se comunicar com a API.
Koin
: usado para injeção de dependência.
Arquitetura Clean + MvvM
: projeto foi feito totalmente nas duas arquiteturas.
Fragments
: Esse aplicativo é um SAP (Single Activity App)
Navigation Component
: Utilizado para navegação entre fragments.
State Pattern
Observer Pattern
Após baixar o projeto, você pode abrir com o Android Studio. Para isso, na tela de launcher clique em: Open an Existing Project (ou alguma opção similar) Procure o local onde o projeto está e o selecione (Caso o projeto seja baixado via zip, é necessário extraí-lo antes de procurá-lo) Por fim clique em OK, O Android Studio deve executar algumas tasks do Gradle para configurar o projeto, aguarde até finalizar. Ao finalizar as tasks, você pode executar o App.