Skip to content

Latest commit

 

History

History
92 lines (67 loc) · 3.48 KB

README.md

File metadata and controls

92 lines (67 loc) · 3.48 KB

Spotify Clone

This is a clone of the Spotify app made with Android and Kotlin. The application use the Spotify API to get the data from the Spotify API and display it in a list, search for songs and artist and show the library of the user. The endpoints used is located in the Web Api Reference.

🔨 Download the app from Spotify Clone APK

⭐ Features

  • Fetch new releases from Spotify
  • Search for songs and artists
  • Show the library of the user
  • Authenticate with Spotify
  • Get token to make the requests
  • App arquitecture using MVVM and Clean Architecture

| 🏃 For run the app just clone the repository and execute the app on Android Studio.

Stack tech used

This application is developed using Kotlin and uses the following components:

  • MVVM + Clean Architecture
  • Retrofit
  • Room
  • Coroutines
  • Navigation Component
  • ViewModel
  • ViewBinding
  • LiveData
  • Dagger Hilt

Screenshots

Home Screen Search Library
Home Favorites Post Detail
LogIn

User guide

  • Use phones with Android API 21+
  • Sign in with a Spotify account

🎯 Architecture

The application is built using Clean Architeture pattern based on Architecture Components on Android. The application is divided into three layers:

Clean Arquitecture

  • Domain: This layer contains the business logic of the application, here we define the data models and the use cases.
  • Data: This layer contains the data layer of the application. It contains the database, network and the repository implementation.
  • Presentation: This layer contains the presentation layer of the application.

The organization of the application is based on the following diagram:

app/
├── core/
├── data/
│	├── local/
│	├── models/
│	├── remote/
│   └── RepositoryImplementationFiles
├── domain/
│   └── models/
│   └── repositories/
│   └── usecases/
├── presentation/
│   └── ui/
│        └── fragments/
│        └── adapters/
│   └── viewmodels/
└── di/

Each layer have your own models and the mappers are using extensions functions to transform the data between the layers.

🔧 Dependencies

  • Hilt for dependency injection
  • Kotlin Coroutines
  • Retrofit
  • Logging Interceptor
  • Gson
  • Room
  • LiveData
  • Navigation Component
  • Concat Adapter

All these dependencies are used following google guidelines for JetPack components, Architecture Components on Android. This allow us have a better integration between the dependencies.