Created as a finalist project for the SiriusXM + Pandora Apprenticeship
An application that allows users to save, sort, and play a list of podcasts.
- Users can click on a podcast to view it's details and play it
- Users can add a podcast to the list(must have all required information fields, and submit form)
- Users can like or dislike a podcast, as well as see how many likes and dislikes the podcast has.
- Users can sort the list by name, title, number of likes, and number of dislikes.
Sort By Name:
Sort By Title:
Sort By Likes:
Sort By Dislikes:
Open/View/Play Podcast:
Discover:

High Level Overview: Project has a frontend written in React and a backend server created with Java Spring Boot. Data model has a single entity, the Podcast. The backend has REST controlled endpoints that use functions provided by a Service class which in turn utilizes a Repository class to communicate with the database. I chose to use a Postgres database for this project because it is what I am most familiar with. A NoSQL database would probably have worked just as well given the simple nature of the application. The front end utilizes views and controllers to serve content and make requests to the backend server. As much as possible, the business logic is separated out from the view componenets. Right now, the application utilizes a command line runner to load database when application starts. It is configured to drop tables when application ends, and create them again on new run. This is for the dev environment, a production database would obviously need to persist.
- Users can view the list of podcasts
- Users can open a podcast from the list and listen to it
- Users can like a podcast
- Users can dislike a podcast
- Users can sort the podcast list in 4 different ways
- Users can use the discovery feature to find new podcasts on iTunes
- Application follows MVC pattern
- Backend service manages the podcast list that is stored in a database
- Has operations to create, read, update, and delete a podcast. The delete capability is currently unused, but exists anyway to be thorough.
- Application utilizes the iTunes search API to allow users to discover new podcasts based on a search term.
Uses abstraction and encapsulation in both server side functions from controller going through service/repository to abstract away from places that don't need access to that information
- Add some sort of authentication or make use of session data/cookies to prevent one person from liking or disliking a podcast multiple times.
- Add some sort of user account creation function so users can be logged in and have their own personal podcast lists
download project
run mvn clean install to install dependencies
run ./mvnw spring-boot:run to run program
check out the project at localhost:8080/
