Abhi Project Report
Abhi Project Report
JAVASCRIPT
Submitted by
ABHISHEK RANA
GEHU LOGO
This is to certify that the thesis titled “Spotify Clone” submitted by Abhishek Rana, to
Graphic Era Hill University for the award of the degree of Bachelor of Computer
Applications, is a bona fide record of the research work done by him/her under our
supervision. The contents of this project in full or in parts have not been submitted to any
other Institute or University for the award of any degree or diploma.
ACKNOWLEDGEMENT i
ABBREVIATIONS iii
1. INTRODUCTION
1
1.1. Features………………………………….………………...................................
1.2. Objectives……………………………………………………………………......
2. REQUIREMENT ANALYSIS
3
2.1. Introduction……………………………………………………………………...
2.2. Functional Requirements………………………………………………………..
3. Development Process
3.1. Project planning……………………………………………………………………….
4. Challenges faced
5.1. Conclusion……………………………………………………………………...
A. APPENDIX
ABBREVIATIONS
1. Introduction:
The purpose of this project report is to provide an overview of the development and
implementation of a Spotify clone, a music streaming application similar to Spotify. This
report outlines the project's objectives, requirements, development process, technologies
used, challenges faced, and future recommendations.
2. Objectives:
a) Create a user-friendly music streaming platform that allows users to discover, search, and
listen to music from various genres and artists.
c) Develop a robust backend infrastructure to handle user authentication, music storage, and
streaming capabilities.
d) Design an intuitive and visually appealing user interface for both web and mobile
platforms.
3. Requirements:
The requirements for the Spotify clone project can be categorized into three main areas:
a) Functional Requirements:
c) Technological Requirements:
- Database: MongoDB.
4. Development Process:
The development process for the Spotify clone project can follow an agile methodology, such
as Scrum, to ensure iterative development and regular feedback. The process can include the
following steps:
a) Project Planning:
5. Challenges Faced:
During the development of the Spotify clone project, several challenges may arise, including:
b) Copyright and Licensing: Ensuring compliance with copyright laws and obtaining proper
licensing for music distribution.
e) Security: Implementing secure user authentication and protecting user data from
unauthorized access.
6. Future Recommendations:
To enhance the Spotify clone application further, the following recommendations can be
considered:
a) Social Integration: Incorporate social features such as following friends, sharing playlists,
and collaborative playlist creation.
d) Machine Learning and AI: Utilize machine learning algorithms to improve music
recommendations and personalization.
e) Continuous Improvement: Gather user feedback and analytics to continuously improve the
application's features and performance.
7. Conclusion:
html code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<nav>
<ul>
<li>Home</li>
<li>Search</li>
<li>Playlist</li>
<li>Liked songs</li>
<li>About</li>
</ul>
</nav>
<div class="container">
<div class="songList">
<div class="songItemContainer">
<div class="songItem">
<img alt="1">
</div>
<div class="songItem">
<img alt="1">
</div>
<div class="songItem">
<img alt="1">
</div>
<div class="songItem">
<img alt="1">
</div>
<div class="songItem">
<img alt="1">
</div>
<div class="songItem">
<img alt="1">
</div>
<div class="songItem">
<img alt="1">
</div>
<div class="songItem">
<img alt="1">
</div>
<div class="songItem">
<img alt="1">
</div>
<div class="songItem">
<img alt="1">
</div>
</div>
</div>
<div class="songBanner"></div>
</div>
<div class="bottom">
<input type="range" name="range" id="myProgressBar" min="0" value="0"
max="100">
<div class="icons">
</div>
<div class="songInfo">
</div>
</div>
<script src="script.js"></script>
<script src="https://kit.fontawesome.com/26504e4a1f.js"
crossorigin="anonymous"></script>
</body>
</html>
CSS CODE:
@import url('https://fonts.googleapis.com/css2?family=Ubuntu&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Varela+Round&display=swap');
h1{
color:black
body{
*{
margin: 0;
padding: 0;
nav{
nav ul{
display: flex;
align-items: center;
list-style-type: none;
height: 65px;
background-color: black;
color: white;
}
nav ul li{
padding: 0 12px;
.brand img{
width: 44px;
padding: 0 8px;
.brand {
display: flex;
align-items: center;
font-weight: bolder;
font-size: 1.3rem;
.container{
min-height: 72vh;
background-color: black;
color: white;
display: flex;
width: 70%;
border-radius: 12px;
padding: 34px;
background-image: url('bg.jpg');
.bottom{
position: sticky;
bottom: 0;
height: 130px;
background-color: black;
color: white;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
.icons{
margin-top: 14px;
.icons i{
cursor: pointer;
#myProgressBar{
width: 80vw;
cursor: pointer;
}
.songItemContainer{
margin-top: 74px;
.songItem{
height: 50px;
display: flex;
background-color: white;
color: black;
margin: 12px 0;
justify-content: space-between;
align-items: center;
border-radius: 34px;
.songItem img{
width: 43px;
margin: 0 23px;
border-radius: 34px;
.timestamp{
margin: 0 23px;
.timestamp i{
cursor: pointer;
.songInfo{
position: absolute;
left: 10vw;
.songInfo img{
opacity: 0;
body {
background-color: red;
}
JAVASCRIPT CODE:
JsearchInput = wrapper.querySelector("input"),
infoText = wrapper.querySelector(".info-text"),
let audio;
if(result.title){
}else{
wrapper.classList.add("active");
if(definitions.synonyms[0] == undefined){
synonyms.parentElement.style.display = "none";}
else{
synonyms.parentElement.style.display = "block";
synonyms.innerHTML = "";
synonyms.insertAdjacentHTML("beforeend", tag);
function search(word){
fetchApi(word);
searchInput.value = word;
function fetchApi(word){
wrapper.classList.remove("active");
infoText.style.color = "#000";
});
searchInput.addEventListener("keyup", e =>{
fetchApi(word);
}
});
volume.addEventListener("click", ()=>{
volume.style.color = "#4D59FB";
audio.play();
setTimeout(() =>{
volume.style.color = "#999";
}, 800);
});
removeIcon.addEventListener("click", ()=>{
searchInput.value = "";
searchInput.focus();
wrapper.classList.remove("active");
infoText.style.color = "#9A9A9A";
infoText.innerHTML = "Type any existing word and press enter to get meaning, example,
synonyms, etc.";
});
ACKNOWLEDGEMENT
I completed the task of finishing this project thanks to my sincere efforts. On this project, I
have worked hard. The gracious assistance and support of many people, however, were
necessary for it to succeed.
My teacher, Mr. Chetan Pandey, has provided me with invaluable advice that has helped me
succeed in all phases of my project work, and I am very grateful for that. I want to thank my
lab mates and say how much I appreciate them. To the individuals who volunteered to lend
me their skills in building my idea.
I would also like to express my gratitude for the vital role played by the employees in the
mechanical laboratory, who granted me permission to use the lab apparatus as well as the
machine, to create the drawing, and to utilize all the other tools required in the lab.
Abhishek Rana
Roll no-2121035.