/WAD2

Primary LanguageHTML

Open in Visual Studio Code

IS216 - Group 11 - Pepe Guitarra

tiger

A Sleek and Useful Website for the Classical Guitar Learners

Project Proposal | Figma Prototype


๐ŸŽธ Group Members

  • Yu Yiling yiling.yu.2019
  • Goh Jia En jiaen.goh.2020
  • Lim Zhan Rong zrlim.2018
  • Lim Jia Yi jiayi.lim.2020

๐ŸŽธ Project Overview

  • Pepe Guitarra, a one stop classical guitar resources platform for all music-learners, providing them with reliable classical guitar resources - ranging from Scores to Useful Youtube Playlist.

๐ŸŽธ Why Pepe Guitarra?

  • With the introduction of affordable or free music learning via online resources, people interested in music but lack money to opt for often expensive music tutors, are now able to effectively learn music through utilizing the many free but valuable resources available online.
  • We understand that learning music can be expensive and with the internet in our hands, it can be difficult to find good and reliable music resources specifically Classical Guitar.
  • Moreover, during this Covid-19 pandemic, with everyone facing increasing amounts of stress and anxiety while being coop up at home, many of us turn to new hobbies to relieve emotional stress. An effective healing activity for people.
  • With all this considerations in mind, Pepe Guitarra is created.

๐ŸŽธ For who?

  • For everyone.
  • Pepe Guitarra is designed for everyone, anywhere, regardless of age.
    • People who are interested in learning the classical guitar for free online
    • Older people or people with disabilities that want to use online resources to learn the classical guitar

๐ŸŽธ System Architecture Diagram

๐ŸŽต Spotify API
  1. Request Access Token using Client details (Id, Secret Key)
  2. Retrieve Access Token using Axios
  3. Using the suitable Web API Console (Search the keyword "Classical Guitar", Input type as "Playlist")
  4. Return JSON object of all the playlists with keyword "Classical Guitar"
  5. Display Spotify widget using Spotify API data
๐Ÿ“น Youtube API
  1. Identify 3 professional and popular classical guitar channels from Youtube
  2. Use Channels: list to retrieve channel details by specifying channel names via Axios
  3. Use ChannelSections: list to retrieve channel section details by specifying channel id via Axios
  4. Construct data for the 3 identified channel in Vuejs. For each channel, specify their id, name, thumbnail, description, and section playlists
  5. Note:
    • Why we dont let users to search and choose Youtube channels on their own?
      • Since the api call for Search: list has a quota cost of 100 units and we have limited free quota units, we decide to just identify and fix the top 3 classical guitar ourselves in our website and not let users to search and call api themselves to save quota units.
    • Why we would like to put our Youtube API response data in Vue but not call it everytime when user request it? Is it hardcoding?
      • Since we have already fixed our channels, the channel id and playlist id will not really change for each api call. Thus we would just like to save those channel details in Vue to save api call unit cost and website loading time. Also, since every iframe can actaully be seen as an api call and we are using playlist id in iframes to retrieve the videos, if the channel uploads new videos in the playlists, our website will also reflect the new uploads dynamically. Thus it is not hardcoded.
    • Why we just show 2 playlist per channel?
      • Though there are more than 2 playlists for each channel, if we display all of them using iframe, it will significantly slow down the page loading. Thus we would just like to show 2 playlist per channel save loading time to prioritise user experience.
๐Ÿ“ Scores Page - Dealing with files
  • In order to dynamically populate the lists of scores in the Scores page, an external python script getFileNames uses the glob function to retrieve all filenames in the three folders (beginner, intermediate, advanced), and then appends that to the resources html files. Everytime the folders are updated with new songs, simply running getFileNames once will automatically get the filenames and update the html files.

๐ŸŽธ [OPTIONAL] How to Deploy Our Web Application (for Developers) - Netlify

  • Netlify, a fully multi-cloud infrastructure, provides hosting for websites whose source files are stored in the version control system Git and then generated into static web content files.

Few Simple steps to deploy Pepe Guitarra onto Netlify! ๐Ÿ‘‡

1. Sign Up With Netlify (Using GitHub)

2. Authorize Netlify

3. Depoly GitHub Web App onto Netlify

4. Authorize Netlify Deployment

5. Select desired repos to deploy

6. Connect your repository

7. View deploy link

AND YOU ARE DONE!

๐ŸŽธ How to Install and Run Our Web Application (for Developers)

To start deploying the Pepe Guitarra GitHub repo, you need to edit the items mentioned below ๐Ÿ‘‡

๐ŸŽต Spotify API Token Authorization
  1. Head to Spotify Developer to Login in your Developer's Dashboard
  2. Register an application with Spotify

  1. Authenticate a user and get authorization to access user data - Client ID & Client Secret

  1. Replace the client_id and client_secret with your Access token details in Spotify_APIs/apiapp.js
const app = Vue.createApp({
    data(){
        return{

            // Spotify data
            client_id : '8c8963de217343da89154d4dd9d27cf4',
            client_secret : 'd390b69d6d3d43469f7296e006f71704',
            data: "",
            token: "", // Store token

            // Default display, to be modified upon random_generate()
            display: [
                {name: 'Classical Guitar', link: '3sFlYchrFtMnxK6xY5uO27'},
                {name: 'Peaceful Guitar', link: '37i9dQZF1DX0jgyAiPl8Af'},
                {name: 'Classical guitar music', link: '37i9dQZF1EIcSXgw8fnVjD'}
            ],

            // Store Playlist Info from Spotify API
            playlists_list: [],
            playlist_links: [],
        };
    },
๐Ÿ“น Youtube API Token
  1. Create a project in the Google Developers Console
  2. Obtain authorization credentials, Click on "Create Project"

  1. Then click on "Create Credentials" and "API Key"

  1. Restrict the API Key

  1. API key configurated. Now can pass this key with key=API_KEY parameter in Youtube API urls to retrieve the infomation we need.

๐ŸŽธ X-Factors used

  • GitHub
    • What is it? It is a software development and version control service that uses Git.
    • How does this benefit our project? Our group splits work in such a way that each member owns certain components/parts of our project web application. We used GitHub to regularly check in and merge our source code so as to exercise continuous integration.
  • Vue.js
    • What is it? Vue.js is an open-source modelโ€“viewโ€“viewmodel front end JavaScript framework for building user interfaces and single-page applications.
    • How does this benefit our project? We used Vue in our Youtube API section to separate the user interface from the application logic. It saves lots of work to do the Bootstrap Carousel and makes it easier for us to change the Youtube playlists.
  • animate.css
    • What is it? Animate.css is a library of ready-to-use, cross-browser animations for use in web projects. Great for emphasis, home pages, sliders, and attention-guiding hints.
    • How does this benefit our project? Our group used animate.css for lots of animations such as fading and sliding.
  • jQuery
    • What is it? jQuery is a lightweight, "write less, do more", JavaScript library.
    • How does this benefit our project? jQuery makes it much easier to use JavaScript on our website. We used The jQuery library mainly for HTML/DOM manipulation.

๐ŸŽธ How to Use Our Web Application (for Visitors to our Website)

  1. Upon entering Pepe Guitarra, Click 'Begin' to start your music learning journey!
  2. It will then being you to the Resources Page
    1. Choose your desired level of Classical Guitar scores
      • Beginner
      • Intermediate
      • Advanced
    2. You then can choose to:
      1. Download Score
      2. Download MP3
      3. Listen the the MP3 directly
  3. Under the Appreciation Page
    1. Explore different Classical Guitar Youtube Playlists
      • Choose different Youtubers by click on the icon
      • Read on the Channel information / Background
      • Watch Channel Playlist
    2. Listen to Spotify playlists on Classical Guitar
      • Click on "Show Me Something New" for more interesting Classical Guitar Playlist

๐Ÿค“ Useful Resources