Skip to content

hermannhueck/MusicService

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MusicService + Clients

A case study for a service implemented with Scala, Akka (not yet) and Play using clients implemented with different technologies

The MusicService is designed to manage two kinds of entities:

  • Recording entities are music recordings
  • Performer entities are performers who perform in the recordings. A Performer can be either a "Soloist" or an "Ensemble" or a "Conductor.
  • Many-to-Many describes the type of relationship between these two entities. (A performer can perform in many recordings. A recording can have many performers.)

The "Services" subdirectory contains different implementations of the MusicService web service. Currently there is one implementation written with Play in Scala.

  • RESTful Web Service implementation with Play in Scala persisting data in an SQL database with Slick

Ideas for future service implementations ...

  • RESTful Web Service implementation with Play in Scala persisting data in the MongoDB NoSQL database
  • RESTful Web service implementation with Akka-HTTP in Scala persisting data in the Cassandra NoSQL database
  • RESTful Web service implementation with NodeJS persisting data in the MongoDB NoSQL database

The "Clients" subdirectory contains different implementions of the MusicService REST clients. Currently there are three implementations.

  • Web App in Play using the web service client library of Play
  • Single Page Web App in HTML5, CSS and JavaScript using AngularJS and Bootstrap accessing the web service in JavaScript
  • Hybrid Mobile App in HTML5, CSS and JavaScript using Ionic, AngularJS and Cordova accessing the web service in JavaScript

Ideas for future client implementations ...

  • Web App in Play using the web service client library of Akka-HTTP
  • Web App in Play using Retrofit (with RxScala) as web service client library
  • Android App using Retrofit and RxJava as web service client library

Work is in progress. I'll add bug fixes, improvements, refactorings and more projects depending on the time I can spare to implement them. No promises. No time lines. This is just a fun job.

Note: There is a README in each project directory containing some brief informations, which help you to unterstand the fundamentals of the architecture as well as how to compile, test and run the respective service or application. These README do not contain an in-depth discussion of the implementation.

Have fun.

Hermann