Skip to content
/ rythma Public

A Java-based backend for a music streaming service, featuring a comprehensive search system, notification alerts, and audit functionality. Used design patterns such as Command, Strategy, and Observable to facilitate clear and scalable code.

Notifications You must be signed in to change notification settings

annna7/rythma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rythma

Rythma is a backend service (written in Java) that simulates a music streaming service. It has a CLI interface that allows users to interact with the service. The service is capable of managing users, songs, playlists, podcasts and more.

Objects

  • User
    • Artist
    • Podcast Host
  • Playable Item
    • Song
    • Podcast Episode
  • Audio Collection
    • Playlist
    • Album
    • Podcast
  • Notification

Features

  • User Management
    • Register User
    • Login/Logout User
  • As a User
    • Create/Delete Playlists
    • Add/Remove Songs from Playlist
    • Follow or unfollow Playlists
    • View/clear notifications (e.g.: when a playlist you follow adds another song)
    • Search for Songs/Playlists/Albums/Podcasts/Artists/Podcast Hosts
  • As an Artist (+ all User features)
    • Create/Delete Albums
    • Add/Remove Songs from Albums
    • Update description & social media links
  • As a Podcast Host (+ all User features)
    • Create/Delete Podcasts
    • Add/Remove Episodes from Podcasts
    • Update affiliation

Design Patterns

  • Singleton - for services like UserService, MusicService etc.
  • Strategy - for different Search strategies
  • Factory - for creating Users etc.
  • Command
    • wraps every request from the CLI
    • provides an elegant way to handle I/O
    • makes appropriate calls to the service layer and to the audit system

About

A Java-based backend for a music streaming service, featuring a comprehensive search system, notification alerts, and audit functionality. Used design patterns such as Command, Strategy, and Observable to facilitate clear and scalable code.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages