O aplicativo de nosso projeto será desenvolvido com Kotlin no Android Studio, para tal iremos seguir a arquitetura recomendada pela documentação do android, com a utilização do padrão de arquitetura MVVM(Model-View-ViewModel).
Tal arquitetura permite a boa divisão de responsabilidades, boa manutenibilidade. Ademais, segue as boas práticas recomendadas pela Google, ponto crucial para o desenvolvimento de aplicações Android à longo prazo.

Representa a camada de apresentação, onde os dados serão exibidos e o usuário poderá interagir com o sistema.
É a camada responsável por encapsular a lógica de negócios que é reutilizada por vários ViewModels. Podendo intermediar relações entre a UI e a Data Layer, todavia seu uso é indicado como opcional.
Contém a lógica de negócios da aplicação. Sendo composta por regras que determinam como o app cria, armazena e muda dados. Nela estão presentes os repositórios, que podem conter de zero a muitas fontes de dados.
Esse padrão de arquitetura auxilia na separação da parte visual UI e da parte das regras de negócio e manipulação de dados, tornando um código mais fácil de ser entendido, por separar bem as resposabilidades por camadas, além de poder ser trabalhado juntamente com a arquitetura da Google.
Camada responsável pela apresentação dos dados ao usuário, ou seja a interface. Nela será implementado as classes das Activities e Fragments, gerenciando a parte visual com um layout definido em XML. Esse gerenciamento é facilitado com a biblioteca de Data Binding, esta responsável por “inflar” os elementos no arquivo XML e tornar o acesso mais fácil dos elementos no código.
A camada responsável pelo controle de dados da camada de View, ela quem irá gerenciar o recebimento e envio das informações da UI, ou seja vai gerenciar os estados dos dados por meio de objetos observáveis. Sendo observados pelas classes que compõem a View, qualquer alteração será observada e atualizada conforme for especificado. Essa camada também é importante, por fazer a ponte entre a View e a Model.
Essa camada conterá a definição do domínio da aplicação, além das suas regras de negócios e validações. Aqui irão atuar os repositories, classes que isolam a lógica do acesso aos dados, lidando melhor com a lógica de negócio. Para a persistência de dados, utilizaremos a biblioteca Retrofit, que é capaz de realizar chamadas HTTP para um serviço externo. E para o acesso de dados de modo mais “rápido”, será utilizado a biblioteca Room, capaz de persistir dados no aparelho utilizando o banco SQLite.