The system consists of 5 components:
- Music Player
- Alarm
- Planner
- User Service
- User Interface
The first four components are all mutually connected and communicate with each other using Java Message Service (JMS). Also, they share a mutual MySQL database with whom they communicate using Java Persistence API (JPA). User Interface is a JavaFX application which communicates with User Service using RESTful web services it provides. MySQL, JMS and JPA services must be configured before running the system.
"User Interface" also uses Bing Maps API (Bing Maps V8 Web Control and Bing Maps REST Services) for displaying maps and calculating travel distance, and Spotify Web API for searching and embedding Spotify tracks. Necessary API keys must be embedded in the source code on marked places before running the system.
Alarm
- Fetching user's alarms from the database.
- Turning user's alarms on and off.
- Setting new alarm to ring at the desired time.
- Setting periodic alarms.
- Configuring desired alarm ringtone (Spotify track)
Music Player
- Searching for and playing Spotify tracks.
- Storing and fetching Spotify tracks that user had saved in the database.
Planner
- Saving user's events in the database with its start time, duration and location.
- Organizing user's events so they don't overlap.
- Setting reminder for event.
- Calculating travel distance between events' locations using Bing Maps API.
User Service
- Provides REST API for the User Interface component
- Authentication and authorization services.
User Interface
- Provides communication between user and the rest of the system without communicating with the database directly.