Es una app que permite buscar canciones por nombre,autor y album. Al seleccionar una cancion, muestra a que album pertenece y todas las canciones del mismo. Asi tambien nos permite reproducir una preview de 30 segundos de cualquier cancion
haciendo uso de iTunes Search API
Model-View-ViewModel (MVVM): El patrón Model-View-ViewModel (MVVM) ayuda a separar limpiamente la lógica de negocios y presentación de una aplicación de su interfaz de usuario (UI). facilita los tests, el mantenimiento y la evolución de una aplicación. También puede mejorar considerablemente las oportunidades de reutilización del código.
Clean Arquitecture: Es una arquitecurta en la que todas las capas que componen el software son independientes unas de otras de manera que, a la hora de ampliar las funcionalidades de un proyecto o cambiar un componente por otro, no haya conflicto y este cambio se realice con el menor coste de tiempo posible.
En el proyecto se usaron 3 capas
- Domain
- Data
- App
├── app (module)
│ ├── application
│ ├── di
│ └── ui
| ├── activity
| ├── adapter
│ └── viewmodel
│
├── data (module)
│ ├── remote
| │ ├── api
| | └── dto
│ │
│ ├── repository
│ └── utils
│ └── di
|
└── domain (module)
├── entities
├── repository
└── usecases
- ViewBinding.
- Coroutines: A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
- LiveData: Data objects that notify views when the underlying database changes.
- ViewModel: Stores UI-related data that isn't destroyed on UI changes.
- Paging 3: The Paging Library helps you load and display small chunks of data at a time. Loading partial data on demand reduces usage of network bandwidth and system resources.
- Retrofit 2: A Retrofit 2 Converter.Factory for Kotlin serialization.
- Picasso:A powerful image downloading and caching library for Android
- Exoplayer:ExoPlayer is an application level media player for Android. It provides an alternative to Android’s MediaPlayer API for playing audio and video both locally and over the Internet
- Koin: for dependenci Injection
- Mockito:Tasty mocking framework for unit tests in Java
- Moshi:Moshi is a modern JSON library for Android, Java and Kotlin. It makes it easy to parse JSON into Java and Kotlin classes