Skip to content

Alessandro-AP/Yfi-Tops

Repository files navigation

Logo

Yfi Tops

The Yfi Tops Project is a school practical project that aims to extend our skills on android app development and team work.

Table of Contents
  1. About The Project
  2. Getting Started
  3. Architecture
  4. Project Structure
  5. Firebase Data Structure
  6. License
  7. Contact

About The Project

Yfi Tops is a music player application for Android, written in Kotlin.

The music source (playlists and songs) is loaded from a remote server. We used Firestore to store music metadata and Firebase Storage to store media files.

Users can browse different thematic playlists and songs. Tapping on a song will play it through the use of ExoPlayer. The application supports background playback and notification management.

Here is a preview of the Yfi Tops music player app :

app_preview

Built With

(back to top)

Getting Started

Prerequisites

You'll need the following components to use the project, please install them beforehand :

Set up the Firebase media source, respecting the structure shown in section Firebase Data Structure.

Installation

  1. Clone the repo
    git clone https://github.com/Alessandro-AP/Yfi-Tops.git
  2. Install dependencies with gradle.
  3. Add the Firebase API config file google-services.json into the ./app folder.
  4. Connect your smartphone with Android Studio and run the application.

(back to top)

Architecture

The general architecture of the application is shown below :

architecture

Our application consists of four main modules :

  • Jetpack compose : it constitutes the entire graphical interface of the application.

  • ViewModels : take care of updating the graphical interface dynamically when the livedata change. They are also used as an abstraction layer to communicate with the music service connector. In our case, our ViewModels use (wrap) the livedata contained in the firebase repository.

  • ExoPlayer: This module takes care of the media playback part, allowing our songs to be played, keeping playback in the background and offering a miniplayer in the notification bar. This component is divided into :

    • Music Service Connector: provide other components/modules of the app all methods and variables to be able to manage the player.
    • Music Service: takes care of initialising and preparing the multimedia playback.
    • Callbacks: takes care of performing actions based on specific events.
    • Converters: take care of converting our models into formats compatible and required by Exoplayer.
    • Notification: takes care of managing the app in the notification.
  • Firebase: use to store our music playlists. Firebase Storage is used to save all audio files, album images and individual song images. While Firestore, which is a NoSQL database, contains all the metadata of the playlists/songs, such as the title, author, image and link to the audio file (contained in the Storage).

Project Structure

Below you can see the structure and description of the different folders of the Android project.

tree_structure

(back to top)

Firebase Data Structure

The image below shows how the data are organised into the Firestore.

data_structure

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Alessandro Parrino - [email protected]
Daniel Sciarra - [email protected]
Wilfried Karel Ngueukam Djeuda - [email protected]

(back to top)

About

Yfi Tops is a music streaming app.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages