App Android (Kotlin) que consome a API pública Rick and Morty para listar personagens, e exibir detalhes. Projeto focado em boas práticas, testabilidade e CI/CD com SonarCloud.
- Listagem paginada de personagens com scroll infinito
- Detalhes do personagem (status, espécie, gênero, origem, localização)
- Lista de episódios em que o personagem aparece
- Bottom sheet com detalhes do episódio
- Header colapsável com MotionLayout
- Consulta ao Google Gemini AI para obter informações do personagem em um episódio específico
- Suporte a temas claro e escuro
- Layout edge-to-edge com tratamento de insets
- Linguagem: Kotlin
- Arquitetura: MVVM + Repository Pattern
- Injeção de dependência: Hilt
- Navegação: Navigation Component + Safe Args
- Paginação: Paging 3 com PagingSource customizado
- Rede: Retrofit + OkHttp (dois clientes: Rick & Morty API e Google Gemini API — para consultar informações do personagem em episódios específicos)
- Carregamento de imagens: Glide
- Reatividade: Coroutines + Flow
- UI: Fragments + RecyclerView + MotionLayout + ViewBinding
- Testes: JUnit + Mockito + Truth + Espresso
app/src/main/java/com/example/rickandmorty/
├── base/ # Classes base (BaseViewModel)
├── data/
│ ├── character/ # API Rick & Morty (CharacterApi)
│ ├── gemini/ # API Google Gemini (GeminiApi)
│ ├── model/ # Modelos de dados (Parcelable)
│ └── repository/ # Repositórios (CharactersRepository, GeminiRepository)
├── di/ # Módulos Hilt + Qualifiers
├── screen/
│ ├── main/ # MainActivity (edge-to-edge)
│ ├── characters/ # Listagem paginada + MotionLayout
│ └── characterDetails/ # Detalhes + episódios + bottom sheet
├── utils/ # Constants, StatusColorUtil
└── widget/ # CharacterCardView (componente customizado)
- JDK 17
- Android SDK API 35 (minSdk 21)
- Gradle Wrapper incluso
macOS / Linux:
# Testes unitários
./gradlew testDebugUnitTest
# Lint
./gradlew lintDebug
# APK debug
./gradlew assembleDebug
# Testes instrumentados (emulador em execução)
./gradlew connectedDebugAndroidTestWindows (PowerShell / CMD):
gradlew.bat testDebugUnitTest
gradlew.bat lintDebug
gradlew.bat assembleDebug
gradlew.bat connectedDebugAndroidTest- GitHub Actions:
.github/workflows/project-ci.yml - SonarCloud: Painel do projeto


