The ultimate encyclopedia of every character across the most interdimensional series in the galaxy.
RickMortyPedia is the ultimate portal to explore the vast Rick and Morty multiverse.
From the genius scientist Rick Sanchez to his anxious grandson Morty Smith, discover a galaxy full of interdimensional creatures, aliens, and bizarre lifeforms.
- 🔍 Complete Exploration – Browse a rich, dynamic character database
- 🎨 Modern Interface – Built entirely with Jetpack Compose for a smooth and intuitive UX
- 🧩 Feature-based Clean MVI Architecture – Modular, testable, and reactive
- 🌗 Dark Mode Support – Automatically adapts to your system theme
- 🚀 Reactive Performance – Powered by Kotlin Coroutines and Flow
- 📱 Native Experience – Fully written in Kotlin for Android
- Feature-based Clean Architecture – Modular, maintainable, and scalable
- MVI Pattern (Model–View–Intent) – Unidirectional data flow and state management
- Separation of Concerns – Domain, data, and presentation layers
- Koin – Lightweight and pragmatic dependency injection framework for Kotlin
- Kotlin Coroutines – Structured concurrency and non-blocking background tasks
- Flow / StateFlow / SharedFlow – Reactive data streams and event-driven UI updates
- Ktor Client – Modern and asynchronous HTTP client for consuming APIs
- Room Database – Local persistence and smart caching mechanism
- Jetpack Compose – Declarative UI toolkit for building native Android apps
- Material Design 3 – Clean and cohesive design system
- Compose Navigation – Type-safe navigation between screens
- 🌗 Dark Mode – Seamless switch between light and dark themes
- JUnit 4 – Core unit testing framework
- Mockito – Mocking framework for unit and integration tests
- Turbine – Easy testing for Flows and coroutines
RickMortyPedia follows a feature-based modular structure, aligned with Clean and MVI architectural principles:
📦 app/
┣ 📂 manifests/
┃ ┗ 📜 AndroidManifest.xml
┣ 📂 kotlin+java/
┃ ┗ 📂 dev/
┃ ┗ 📂 sergiosabater/
┃ ┗ 📂 rickmortypedia/
┃ ┣ 📂 core/
┃ ┃ ┣ 📂 common/
┃ ┃ ┃ ┣ 📂 error/
┃ ┃ ┃ ┃ ┗ 📜 DomainError.kt
┃ ┃ ┃ ┗ 📜 Extensions.kt
┃ ┃ ┣ 📂 data/
┃ ┃ ┃ ┗ 📂 database/
┃ ┃ ┃ ┗ 📜 AppDatabase.kt
┃ ┃ ┣ 📂 di/
┃ ┃ ┃ ┣ 📜 CoilModule.kt
┃ ┃ ┃ ┣ 📜 DatabaseModule.kt
┃ ┃ ┃ ┣ 📜 NavigationModule.kt
┃ ┃ ┃ ┣ 📜 NetworkModule.kt
┃ ┃ ┃ ┣ 📜 RepositoryModule.kt
┃ ┃ ┃ ┣ 📜 UIModule.kt
┃ ┃ ┃ ┣ 📜 UseCaseModule.kt
┃ ┃ ┃ ┗ 📜 ViewModelModule.kt
┃ ┃ ┣ 📂 navigation/
┃ ┃ ┃ ┣ 📜 AppNavHost.kt
┃ ┃ ┃ ┣ 📜 AppNavigator.kt
┃ ┃ ┃ ┗ 📜 NavigationRoute.kt
┃ ┃ ┣ 📂 network/
┃ ┃ ┃ ┣ 📜 ApiConstants.kt
┃ ┃ ┃ ┗ 📜 RickAndMortyApiService.kt
┃ ┃ ┗ 📂 ui/
┃ ┃ ┗ 📂 theme/
┃ ┃ ┣ 🎨 Color.kt
┃ ┃ ┣ 🌓 Theme.kt
┃ ┃ ┣ ⚙️ ThemeManager.kt
┃ ┃ ┣ 💾 ThemePreferences.kt
┃ ┃ ┗ ✍️ Type.kt
┃ ┣ 📂 features/
┃ ┃ ┣ 📂 character/
┃ ┃ ┃ ┣ 📂 data/
┃ ┃ ┃ ┃ ┣ 📂 local/
┃ ┃ ┃ ┃ ┃ ┣ 📜 CharacterDao.kt
┃ ┃ ┃ ┃ ┃ ┣ 📜 CharacterEntity.kt
┃ ┃ ┃ ┃ ┃ ┣ 🔄 CharacterEntityMapper.kt
┃ ┃ ┃ ┃ ┃ ┣ 📜 PaginationInfoDao.kt
┃ ┃ ┃ ┃ ┃ ┗ 📜 PaginationInfoEntity.kt
┃ ┃ ┃ ┃ ┣ 📂 remote/
┃ ┃ ┃ ┃ ┃ ┣ 📜 CharacterDto.kt
┃ ┃ ┃ ┃ ┃ ┣ 🔁 CharacterMapper.kt
┃ ┃ ┃ ┃ ┃ ┗ 📜 CharacterRepositoryImpl.kt
┃ ┃ ┃ ┣ 📂 domain/
┃ ┃ ┃ ┃ ┣ 📂 model/
┃ ┃ ┃ ┃ ┃ ┗ 👤 Character.kt
┃ ┃ ┃ ┃ ┣ 📂 repository/
┃ ┃ ┃ ┃ ┃ ┗ 📜 CharacterRepository.kt
┃ ┃ ┃ ┃ ┗ 📂 usecase/
┃ ┃ ┃ ┃ ┣ 📜 GetCharacterByIdUseCase.kt
┃ ┃ ┃ ┃ ┣ 📜 GetCharactersUseCase.kt
┃ ┃ ┃ ┃ ┗ 🔍 SearchCharactersUseCase.kt
┃ ┃ ┃ ┣ 📂 presentation/
┃ ┃ ┃ ┃ ┣ 📂 detail/
┃ ┃ ┃ ┃ ┃ ┣ 🖼 CharacterDetailScreen.kt
┃ ┃ ┃ ┃ ┃ ┗ 📜 CharacterDetailViewModel.kt
┃ ┃ ┃ ┃ ┣ 📂 list/
┃ ┃ ┃ ┃ ┃ ┣ 📂 components/
┃ ┃ ┃ ┃ ┃ ┃ ┗ 🖼️ CharacterListScreen.kt
┃ ┃ ┃ ┃ ┃ ┗ 📜 CharactersListViewModel.kt
┃ ┃ ┃ ┗ 📂 error/
┃ ┃ ┃ ┗ 📂 presentation/
┃ ┃ ┃ ┗ ⚠️ ErrorScreen.kt
┃ ┃ ┗ 📂 splash/
┃ ┃ ┗ 📂 presentation/
┃ ┃ ┣ 🖼 SplashScreen.kt
┃ ┃ ┗ 📜 SplashViewModel.kt
┃ ┣ 🏠 MainActivity.kt
┃ ┗ 🌍 RickMortyPediaApp.kt
Each feature contains:
- UI Layer (Compose + MVI State)
- Domain Layer (UseCases, Models)
- Data Layer (Repositories, DTOs, API)
- 🌍 Location Explorer – Discover every planet and dimension
- 📺 Episode Catalog – Complete information on all episodes
- ❤️ Favorites System – Save and manage your favorite characters
- 🔔 Notifications – Get alerts about new content and updates



