O projeto foi desenvolvido com o objetivo de criar uma experiência de busca e visualização de quadrinhos, integrando-se com a API oficial da Marvel. O aplicativo permite explorar os nomes e imagens dos quadrinhos e personagens, favoritar HQs para acesso offline, e navegar de forma rápida e eficiente.
- Busca de Quadrinhos: O usuário pode visualizar todos os quadrinhos disponíveis publicamente utilizando a API da Marvel.
- Visualização de Personagens: Para cada quadrinho, os personagens presentes são listados, com a funcionalidade de paginação.
- Favoritar Quadrinhos: O usuário pode favoritar qualquer quadrinho, permitindo que ele seja baixado localmente e acessado mesmo offline.
- Listagem de Favoritos: Todos os quadrinhos favoritados são exibidos em uma tela separada que também permite desfavoritar.
- Hash MD5 para Requisições: Para consumir a API da Marvel, é necessário gerar um hash MD5 usando uma combinação da chave API pública, privada e um timestamp, isso para qualquer requisição.
- Adaptação de URLs HTTP para HTTPS: As URLs fornecidas pela API vinham em HTTP, o que causou um problema inicial com o carregamento de imagens pelo Coil, que requer HTTPS. Foi necessário adaptar as URLs para funcionar corretamente com HTTPS.
- Limitação de Personagens: Grande parte dos quadrinhos retornados pela API não contém personagens, o que afetou um terço do objetivo inicial do app. Além disso, dos quadrinhos que continham personagens, muitos tinham menos de 15, o que resultou na mudança da paginação para 8 personagens por vez.
- API Marvel: No mais, a integração com a API da Marvel foi tranquila no geral.
O projeto foi desenvolvido utilizando as seguintes principais tecnologias:
- Kotlin Coroutines: Para gerenciar operações assíncronas de forma eficiente.
- Koin: Utilizado para injeção de dependência.
- Ktor: Para realizar requisições HTTP à API.
- MongoDB: Usado para persistência de dados locais dos quadrinhos favoritados.
- Jetpack Compose: Para a criação de uma interface de usuário moderna e reativa.
- Coil: Biblioteca utilizada para carregar imagens de maneira eficiente.
- Arquitetura MVI: Seguindo a arquitetura Model-View-Intent para garantir a manutenção e escalabilidade do código, com gerenciamento de estado bem definido.
- Testes Unitários: Foram implementados testes unitários para cobrir as camadas de domínio e data. Esses testes garantem a integridade e a funcionalidade do aplicativo
- Clone o repositório do projeto.
- Gerar chaves de API no site da Marvel: https://developer.marvel.com/account
- Adicionar as chaves no arquivo
keys.properties
no projeto (criar se ele não existir). - Você pode gerar o APK de duas formas:
- Debug: Basta rodar o projeto diretamente no modo
debug
. - Release: Ir até a aba de Build no Android Studio e criar um APK de release para o seu dispositivo.
- Debug: Basta rodar o projeto diretamente no modo