Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pokédex Android App

Uma Pokédex Android nativa construída em Kotlin, seguindo os padrões mais modernos de arquitetura, injeção de dependências, persistência local e testes automatizados. O objetivo principal do app é demonstrar qualidade de código, cobertura de testes unitários e de UI e resiliência offline.


🚀 Funcionalidades

  1. Splash Screen: Tela de abertura com animação vetorial do giro da Pokebola desenvolvida nativamente em Jetpack Compose.
  2. Lista de Pokémons com Paginação: Grid infinito consumindo a PokéAPI com carregamento sob demanda conforme o usuário desce o scroll.
  3. Busca em Tempo Real: Campo de busca funcional integrado que filtra por nome completo ou parcial e exibe os estados adequados da UI.
  4. Estados visuais da UI: Tratamento robusto e amigável para os estados de Loading (indicador circular), Success (grid de cards com imagens), Error (mensagem de falha com botão de tentar novamente) e Empty (quando uma busca não encontra resultados).
  5. Detalhes do Pokémon: Exibição detalhada de cada Pokémon incluindo ID formatado (#001), imagem, tipos, peso, altura e estatísticas básicas com barras de progresso lineares animadas.
  6. Modo Offline: Persistência automática em banco de dados local com Room. Ao abrir o app sem conexão com a internet, o banco local serve como fallback imediato, mantendo a experiência do usuário funcional.

🛠️ Stack Tecnológico

Categoria Tecnologia Uso Principal
Linguagem Kotlin Desenvolvimento nativo moderno.
UI Framework Jetpack Compose Design declarativo com Material 3.
Arquitetura Clean Architecture + MVVM Separação rígida de responsabilidades e alta manutenibilidade.
DI Hilt (Dagger) Injeção de dependências limpa.
Network Retrofit + OkHttp Consumo seguro da PokéAPI e interceptação de logs HTTP.
Cache Local Room Database Cache offline e persistência de dados localmente.
Assincronismo Coroutines + Flow Programação assíncrona orientada a fluxos de dados reativos.
Imagens Coil Compose Carregamento assíncrono e cache local de sprites de imagens.
Testes JUnit 4, Mockito Kotlin, Google Truth, Espresso Testes unitários de ViewModel/Repository/Mappers e testes instrumentados de UI.
Cobertura JaCoCo Geração de relatórios analíticos de cobertura de código.

📸 Referência Visual & Demonstração

Demonstração do Pokédex


📐 Arquitetura do Projeto

O app implementa os conceitos de Clean Architecture dividindo o projeto em três camadas principais:

  1. Domain (Domínio): Contém os modelos puros do negócio (Pokemon), as interfaces de repositórios (PokemonRepository) e os Casos de Uso (GetPokemonsUseCase, GetPokemonDetailUseCase). É uma camada puramente Kotlin, sem dependência de frameworks do Android.
  2. Data (Dados): Responsável pelo fornecimento dos dados. Implementa as interfaces do domínio coordenando chamadas de rede da PokéAPI (Retrofit) e cache local (Room). Faz a tradução de DTOs de rede e entidades locais para modelos de domínio por meio de Mappers.
  3. Presentation (Apresentação): Composta por Views declarativas em Jetpack Compose e ViewModels Hilt. As ViewModels transformam fluxos de dados assíncronos em estados reativos legíveis pela UI (StateFlow).

🧪 Como Executar os Testes e Medir Cobertura

O projeto prioriza a qualidade do código com testes unitários (cobrando lógica de ViewModel, Repository e Mapeamentos) e testes de UI.

1. Testes Unitários (Mappers, ViewModel e Repository)

Execute o comando abaixo para compilar e rodar os testes unitários locais de forma determinística:

.\gradlew.bat testDebugUnitTest

2. Testes de UI (Instrumentação Espresso / Compose Test)

Com um emulador ativo ou dispositivo conectado, execute os testes de interface:

.\gradlew.bat connectedDebugAndroidTest

3. Geração de Relatório de Cobertura (JaCoCo)

Para medir a cobertura do código, execute:

.\gradlew.bat jacocoTestReport

O relatório HTML detalhado será gerado em: app/build/reports/jacoco/jacocoTestReport/html/index.html Você pode abrir o arquivo index.html em qualquer navegador para auditar a cobertura por arquivos e métodos.


📦 Configuração e Execução do Projeto

  1. Clone o repositório.
git clone https://github.com/dierlisson/PokedexApp.git
cd PokedexApp
  1. Abra o projeto no Android Studio.
  2. Execute a sincronização do Gradle.
  3. Compile e execute o app no seu dispositivo ou emulador.

👨‍💻 Autor

Dierlisson Justiniano

📬 Contato

About

Pokédex Android com Jetpack Compose, Clean Architecture, Hilt, Room, Retrofit, modo offline e testes.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages