How antarezaghifary/rickandmortyapp works
This is a Compose-based Rick and Morty character browser with character search/filtering, detail views, and locally persisted favorites. The evidenced workflow runs from app launch through navigation and character presentation, into view models and use cases, then through a repository that fetches API data or accesses Room favorites. The tree also declares location, episode, and favorites destinations, but their navigation entries are commented out in the sampled NavGraph. Source excerpts are limited, so links among unsampled view models and use cases are indicative of their module boundaries, not verified calls.
Main entry points: NavGraph.kt Navigation host · CharacterRepositoryImpl.kt Repository implementation · CharactersScreen.kt Character list · CharacterDetailScreen.kt Character detail
Components 20
App and navigation
- Main activity
app/src/main/java/com/samrez/rickandmortyapp/MainActivity.kt - App root
app/src/main/java/com/samrez/rickandmortyapp/RickMortyApp.kt - Navigation host
app/src/main/java/com/samrez/rickandmortyapp/navigation/NavGraph.kt - Screen routes
app/src/main/java/com/samrez/rickandmortyapp/navigation/Screen.kt
Character experience
- Character list
app/src/main/java/com/samrez/rickandmortyapp/features/characters/presentation/list/CharactersScreen.kt - List view model
app/src/main/java/com/samrez/rickandmortyapp/features/characters/presentation/list/CharactersViewModel.kt - Character detail
app/src/main/java/com/samrez/rickandmortyapp/features/characters/presentation/detail/CharacterDetailScreen.kt - Detail view model
app/src/main/java/com/samrez/rickandmortyapp/features/characters/presentation/detail/CharacterDetailViewModel.kt
Character data
- Character use cases
app/src/main/java/com/samrez/rickandmortyapp/features/characters/domain/usecase - Repository contract
app/src/main/java/com/samrez/rickandmortyapp/features/characters/domain/repository/CharacterRepository.kt - Repository implementation
app/src/main/java/com/samrez/rickandmortyapp/features/characters/data/repository/CharacterRepositoryImpl.kt - Character API
app/src/main/java/com/samrez/rickandmortyapp/features/characters/data/remote/CharacterApi.kt - DTO mapping
app/src/main/java/com/samrez/rickandmortyapp/features/characters/data/mapper/CharacterMapper.kt
Platform services
- Character favorites DAO
app/src/main/java/com/samrez/rickandmortyapp/core/database/dao/CharacterDao.kt - Room database
app/src/main/java/com/samrez/rickandmortyapp/core/database/AppDatabase.kt - Favorite entity
app/src/main/java/com/samrez/rickandmortyapp/core/database/entity/CharacterFavoriteEntity.kt - HTTP client
app/src/main/java/com/samrez/rickandmortyapp/core/network/HttpClientFactory.kt - Shared UI components
app/src/main/java/com/samrez/rickandmortyapp/core/designsystem/components
Other components
- App user
- Rick and Morty API
Connections 20
- App user → Main activity: launches
- Main activity → App root: sets content
- App root → Navigation host: hosts
- Navigation host → Screen routes: selects routes
- Navigation host → Character list: renders
- Navigation host → Character detail: renders
- Character list → List view model: dispatches actions
- Character detail → Detail view model: dispatches actions
- List view model → Character use cases: requests character data
- Detail view model → Character use cases: requests character data
- Character use cases → Repository contract: invokes
- Repository implementation → Character API: fetches characters
- Repository implementation → Character favorites DAO: reads and writes favorites
- Repository implementation → DTO mapping: maps records
- Character API → HTTP client: uses client
- HTTP client → Rick and Morty API: sends requests
- Room database → Character favorites DAO: provides DAO
- Character favorites DAO → Favorite entity: stores
- Character list → Shared UI components: uses components
- Character detail → Shared UI components: uses components