Skip to content

AhmetOcak/DeezerApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Deezer App

The application is developed using the Kotlin language and incorporates Jetpack Compose. On the initial screen of the app, music genres are listed. On the same page, there is a heart icon that leads to the 'Favorites' page. When a music genre is selected, it takes you to the 'Artists' page, which lists artists related to the chosen music genre. When you select a specific artist, it displays details about the artist and lists their albums on the 'Artist Details' page. If you select an album from the list, it takes you to the 'Album Details' page, where you can add songs to your favorites. You can also remove songs from your favorites if they are already added. A 30-second preview of the selected songs is available, and you can stop the preview whenever you like. In the 'Favorites' page, you can play 30-second previews of the added songs and stop them as needed. You can also remove songs from your favorites. The application is compatible with both light and dark themes.

Tech Stack πŸ“š

Video from app πŸ“±

record.mp4

Outputs πŸ–Ό

Dark Light
Music Genres
Artists
Artist Detail
Album Detail
Favorites
Play Music

Modularization πŸ“¦

  • :app The module responsible for navigation.
  • :feature:albumdetail,:feature:artistdetail ,:feature:artists ,:feature:favorites ,:feature:musicgenres, :feature:playmusic Each module represents a screen.
  • :feature:designsystem It houses the components and icons present in the application. It sets the theme of the application.
  • :feature:ui It houses the common components used by screens.
  • :core:models It contains the models to be used on the UI side.
  • :core:domain It houses use cases. It serves as a bridge between the data layer's repositories and the UI.
  • :core:data It retrieves data from sources and sends it to the UI through the :core:domain module.
  • :core:network It sends requests to APIs and processes the returned responses.
  • :core:database It stores data in a local database using Room.
  • :core:common Stores common classes shared between modules.

Architecture πŸ—

The app uses MVVM [Model-View-ViewModel] architecture to have a unidirectional flow of data, separation of concern, testability, and a lot more.

mvvm