<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: sumit kumar bighaniya</title>
    <description>The latest articles on Forem by sumit kumar bighaniya (@ammyy9908).</description>
    <link>https://forem.com/ammyy9908</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F453027%2F2d67a2f7-3278-4097-85dd-1dec435690c3.jpg</url>
      <title>Forem: sumit kumar bighaniya</title>
      <link>https://forem.com/ammyy9908</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ammyy9908"/>
    <language>en</language>
    <item>
      <title>Spotify HomePage Clone</title>
      <dc:creator>sumit kumar bighaniya</dc:creator>
      <pubDate>Sat, 08 Jan 2022 12:46:02 +0000</pubDate>
      <link>https://forem.com/ammyy9908/spotify-homepage-clone-1ip2</link>
      <guid>https://forem.com/ammyy9908/spotify-homepage-clone-1ip2</guid>
      <description>&lt;p&gt;HomePage=&amp;gt;&lt;a href="https://ammyy9908.github.io/spotifyhome/"&gt;👁 View Now:&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Github Repo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Ammyy9908/spotifyhome"&gt;Repo Link:&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Structure
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IE_ug-Z8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/896pyxn7b8zuwptbmvmd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IE_ug-Z8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/896pyxn7b8zuwptbmvmd.png" alt="Image description" width="338" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Author
&lt;/h3&gt;

&lt;p&gt;😜~ &lt;a href="https://github.com/Ammyy9908"&gt;Sumit&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;1.&lt;a href="https://ammyy9908.github.io/PortfolioSumit/"&gt;Website:&lt;/a&gt;&lt;br&gt;
2.&lt;a href="https://github.com/Ammyy9908"&gt;Github:&lt;/a&gt;&lt;br&gt;
3.&lt;a href="https://www.linkedin.com/in/sumit-kumar-097a3a204/"&gt;LinkedIn:&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Show Your Support
&lt;/h2&gt;

&lt;p&gt;~by giving ⭐️ to this Project&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>html</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Create a Spotify Clone with Song Playing Feature.</title>
      <dc:creator>sumit kumar bighaniya</dc:creator>
      <pubDate>Fri, 27 Aug 2021 15:27:24 +0000</pubDate>
      <link>https://forem.com/ammyy9908/create-a-spotify-clone-with-song-playing-feature-1913</link>
      <guid>https://forem.com/ammyy9908/create-a-spotify-clone-with-song-playing-feature-1913</guid>
      <description>&lt;p&gt;In this post i describe you how i build a spotify clone using ReactJS,Redux and Spotify Web &amp;amp; Playback API.&lt;/p&gt;

&lt;p&gt;Note:Only for Spotify Premium Users.and This is currently in development but you can view current build online by going.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://spotify-clone-steel-alpha.vercel.app"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User can view his/her profile&lt;/li&gt;
&lt;li&gt;User can play track,album,playlist&lt;/li&gt;
&lt;li&gt;User can control active device volume.&lt;/li&gt;
&lt;li&gt;User can perform play,pause,next,previous song.&lt;/li&gt;
&lt;li&gt;User can create playlist.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bugs currently have&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;There some glitch in play and pause button when we play a song directly inside app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You may encountered some problem in login to app due to spotify access_token stored in cookie basically this is happen because spotify provide an expiration time of access_token of 1 hour so after one hour that token expire but not deleted from cookies so to fix this you have to delete manually from the cookies if you are in Chrome You can visit dev option&amp;gt;application&amp;gt;cookies&amp;gt;url of website and here you find SPOTIFY_TOKEN just remove or delete and refresh the web page then try to login now this issue fixed.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sorry but i cannot explain the whole project in this post but you can ping me on &lt;a href="'https://www.linkedin.com/in/sumit-kumar-097a3a204/'"&gt;linkedin&lt;/a&gt; or directly on Dev community by sending a message.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Video
&lt;/h2&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;sorry you may found some noise in demo video.&lt;/p&gt;

&lt;p&gt;Please give a ⭐️ to  &lt;a href="https://github.com/Ammyy9908/spotify_clone"&gt;repo&lt;/a&gt; if You Like This&lt;/p&gt;

&lt;p&gt;📙~Only supports Spotify Premium Accounts.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>node</category>
      <category>api</category>
    </item>
    <item>
      <title>Create a URL shortener using NodeJS &amp; MongoDB.</title>
      <dc:creator>sumit kumar bighaniya</dc:creator>
      <pubDate>Sat, 31 Jul 2021 17:06:09 +0000</pubDate>
      <link>https://forem.com/ammyy9908/create-a-url-shortener-using-nodejs-mongodb-2o60</link>
      <guid>https://forem.com/ammyy9908/create-a-url-shortener-using-nodejs-mongodb-2o60</guid>
      <description>&lt;p&gt;In this post i will show you how to build a simple url shortener service like &lt;a href="https://bitly.com/" rel="noopener noreferrer"&gt;bit.ly&lt;/a&gt; below is the final product.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F30069626%2F126607472-e7040998-1026-4ae4-8ac3-000659a374ad.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F30069626%2F126607472-e7040998-1026-4ae4-8ac3-000659a374ad.png" alt="final-product"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;This is the list of npm packages we need to use to make this url shortener in this tutorial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://expressjs.com/" rel="noopener noreferrer"&gt;Express&lt;/a&gt;&lt;br&gt;
A web application framework for the Nodejs applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://mongoosejs.com/" rel="noopener noreferrer"&gt;mongoose&lt;/a&gt;&lt;br&gt;
Used to model the objects for Nodejs for the Mongodatabase.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/shortid" rel="noopener noreferrer"&gt;shortid&lt;/a&gt;&lt;br&gt;
Unique short id generator package for nodejs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/cors" rel="noopener noreferrer"&gt;cors&lt;/a&gt;&lt;br&gt;
CORS is a node.js package for providing a Connect/Express &lt;br&gt;
middleware that can be used to enable CORS with various &lt;br&gt;
options.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/package/valid-url" rel="noopener noreferrer"&gt;valid-url&lt;/a&gt;&lt;br&gt;
valid-url is used to check the is the entered url is an valid url or not.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tutorial
&lt;/h2&gt;

&lt;p&gt;Before starting the tutorial you must have on mongodb cloud account.because i'm not showing here how to create a mongodb cloud account You just visit&lt;a href="https://www.mongodb.com" rel="noopener noreferrer"&gt;Mongodb&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Let's Begin🚀
&lt;/h1&gt;

&lt;p&gt;Make a project directory to anywhere where you easily excess it anytime.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$mkdir url_shortner
$cd url_shortner
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Intialize a node project by npm&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$npm init -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install required packages
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$npm i express mongoose cors shortid  valid-url
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create a index.js file
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express');
const mongoose = require('mongoose');
const shortid = require('shortid');
const cors = require('cors');
const URL = require('./models/URL');
const bp = require('body-parser');
var validUrl = require('valid-url');



const app = express();

/*SET APP VIEW ENGINE TO EJS*/
app.set('view engine','ejs')
app.use(cors());
//set app static file directory to public
app.use(express.static('public'))
app.use(bp.json())
app.use(express.urlencoded({extended: true}));




    mongoose.connect('&amp;lt;Mongodb cloud url&amp;gt;/URLSHORTNER',{useNewUrlParser:true,useUnifiedTopology:true},()=&amp;gt;{
        console.log("Database connected!");
    });

// Database connection



// Routes

app.get('/',async (req,res) =&amp;gt; {
    res.render('index',{title:'URLY-url shortner'});
})

app.get('/:uid',async (req,res) =&amp;gt; {
    const url = await URL.findOne({shorten_id:req.params.uid});
    if(!url){
        return res.status(500).json({error:"Invalid Shorten URL!"});
    }
    res.redirect(url.url);
})
app.post('/',async (req,res) =&amp;gt; {
    const {url} = req.body;
/// first validate the url
const isValid = validUrl.isUri(url)
console.log(isValid);
if(!isValid) {
    return res.status(400).json({error: 'Invalid URL'});
}
//check is there is same url present in database if yes give the shorten id of the url
   const isExists = await URL.findOne({url:url});
   if(!isExists) {
       const newURL = new URL({
           url,
           shorten_id:shortid.generate()
       })
       const result = await newURL.save();
       return res.send({shorten_url:`https://easyurly.herokuapp.com/${result.shorten_id}`});
   }

})


const port = process.env.PORT || 3000;

app.listen(port,()=&amp;gt;{


        console.log(`Server listen at ${port} &amp;amp; DB is also connected!`);

})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Make a static public &amp;amp; views directory in root directory of the project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$mkdir public views

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;create a css file inside public folder for our view file.&lt;/p&gt;

&lt;p&gt; also create a views directory and create a index.ejs file inside it which renders an webpage on index route of our node application&lt;/p&gt;

&lt;h4&gt;
  
  
  /views/index.ejs
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;link rel="stylesheet" href="/style.css"&amp;gt;
    &amp;lt;title&amp;gt;&amp;lt;%= title %&amp;gt; &amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;nav&amp;gt;
        &amp;lt;div class="contaier__nav"&amp;gt;
            &amp;lt;div class="brand__name"&amp;gt;
                &amp;lt;strong&amp;gt;URLY&amp;lt;/strong&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class="links"&amp;gt;
                &amp;lt;a href="https://dev.to/ammyy9908" class="btn-about" title="Feature not supported"&amp;gt;About Devloper&amp;lt;/a&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/nav&amp;gt;
    &amp;lt;div class="container"&amp;gt;
        &amp;lt;div class="container__left"&amp;gt;
            &amp;lt;h1&amp;gt;Map Your Long Urls with URLY&amp;lt;/h1&amp;gt;
            &amp;lt;p&amp;gt;A URL shortener/mapper built with NodeJS&amp;lt;/p&amp;gt;
            &amp;lt;div class="input__div"&amp;gt;
                &amp;lt;form&amp;gt;&amp;lt;input type="text" name="url" placeholder="Shorten Your URL" autocomplete="off"&amp;gt;&amp;lt;input type="submit" value="Shorten URL"&amp;gt;&amp;lt;/form&amp;gt;

            &amp;lt;/div&amp;gt;
            &amp;lt;!-- &amp;lt;a href="#/" class="btn btn-primary"&amp;gt;Explore&amp;lt;/a&amp;gt; --&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="output"&amp;gt;

        &amp;lt;a href="" class="shorten__url"&amp;gt;Demo&amp;lt;/a&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.21.0/axios.min.js"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script&amp;gt;
        const form = document.querySelector('form');
        form.addEventListener('submit', async (e)=&amp;gt;{
            e.preventDefault();
            const url =form.url.value;
            if(url){
               try {
                const r = await axios.post('http://localhost:5000/',{url:url});
            if (r.status === 200) {
                document.querySelector('.output').style.display = 'flex';

                   document.querySelector('.output').innerHTML = `&amp;lt;p href="#" class="shorten__url"&amp;gt;${r.data.shorten_url}&amp;lt;/p&amp;gt;`;

                   form.reset();
            }
        } catch (e) {
            if (e.response &amp;amp;&amp;amp; e.response.data) {
                alert(e.response.data.error);
                const error = e.response.data.error;
                showError(error);

            }
        }
            }
        })
        // add event on output to copy the url
        document.querySelector('.output').addEventListener('click', function (e){
            navigator.clipboard.writeText(e.target.textContent).then(()=&amp;gt;{
                e.target.innerHTML = '&amp;lt;p&amp;gt;URI COPIED!&amp;lt;/p&amp;gt;';
                setTimeout(function () {
                    document.querySelector('.output').style.display = 'none';
                },3000);
            })
        })
        const showError = (err)=&amp;gt;{
            document.querySelector('.output').innerHTML = `&amp;lt;p&amp;gt;${err}&amp;lt;/p&amp;gt;`;
        }
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  /public/style.css
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:root{
    --primary-color:linear-gradient(to right, #92fe9d 0%, #00c9ff 100%);
}
body{
    margin: 0;
    padding: 0;
    background-color: #fafafa;
}

nav{
width: 100%;
height: 65px;
}
.contaier__nav{
    max-width: 1277px;
    display: flex;
    justify-content: space-between;
    margin: 0 auto;
    align-items: center;
    height: 100%;
}
.brand__name &amp;gt; strong{
    background: linear-gradient(120deg, #84fab0 0%, #8fd3f4 100%);
    font-family: "ProximaNova ExtraBold","Helvetica Neue",Helvetica,Arial,sans-serif;
    font-size: 22px;
    margin-left: 10px;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    transition:all 3s ease-in-out;
    background-size: 300%;
}
.links{
    display: flex;
    justify-content:space-around;
    flex: .3;
}
.links &amp;gt; a{
    text-decoration: none;
    font-family: "ProximaNova ExtraBold","Helvetica Neue",Helvetica,Arial,sans-serif;
    padding: 10px 32px;
    display: inline-flex;
    justify-content:flex-start;
    align-items:center;
    margin-right: 10px;
}
.btn-about{
    background: var(--primary-color);
    color: #fff;
    border-radius: 5px;
}
.disabled{
    cursor: not-allowed;
    background-color: #ccc;
}
.container{
    width: 100%;
    display: flex;
    align-items: center;
    margin-top: 35px;
    justify-content:center;
    margin-bottom: 35px;
    height: 75vh;

}
.container &amp;gt; div{
    max-width: 95%;
    padding-bottom: 35px;
}
.container__left{
    flex: 1;
    display:flex;
    flex-direction: column;
    justify-content:space-evenly;
    align-items: center;
}

.container__left &amp;gt; h1{
    font-family: "ProximaNova ExtraBold","Helvetica Neue",Helvetica,Arial,sans-serif;
    font-size: 55px;
    color: rgb(245, 14, 64);
    background: linear-gradient(120deg, #84fab0 0%, #8fd3f4 100%);
    -webkit-background-clip: text;
    font-weight: 900;
    -webkit-text-fill-color: transparent;
    animation: gradients 10s infinite linear;
    background-size: 300%;
}
@keyframes gradients {
    0%{
       background-position: 0 50%;

    }
    50%{
        background-position: 100% 50%;
    }
    100%{
        background-position: 0 50%;

    }
}
.container__left &amp;gt; p{
    color: #56575b;
    font-weight: 400;
    font-size: 24px;
    font-family: "ProximaNova Regular","Helvetica Neue",Helvetica,Arial,sans-serif;
    margin-top: 15px;
}
.btn{
    font-size: 20px;
    padding: 18px 30px;
    background: var(--primary-color);
    border-radius: 6px;
    font-size: inherit;
    color: #fff;
    text-decoration: none;
    outline: none !important;
    font-family: "ProximaNova Regular","Helvetica Neue",Helvetica,Arial,sans-serif;
}
.input__div{
    width: 65%;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content:center;
    margin-top: 10px;
}
.input__div &amp;gt; form{
    flex: 1;
    display: flex;
    justify-content:space-evenly;
    align-items: center;
    width: 100%;
}
.input__div &amp;gt; form &amp;gt; input[type=text]{
flex: .5;
height: 45px;
padding-left: 10px;
border: 2px solid #84fab0;
outline: none;
border-radius: 4px;
}
.input__div &amp;gt; form &amp;gt; input[type=submit]{
flex:.4;
height: 50px;
padding-left: 10px;
background:linear-gradient(120deg, #84fab0 0%, #8fd3f4 100%);
color: #fff;
border: 0;
outline: none;
border-radius: 5px;
text-transform: uppercase;
font-weight: 700;
transition:all 3s ease-in-out;
}
.input__div &amp;gt; form &amp;gt; input[type=submit]:hover{

    background:linear-gradient(60deg, #8fd3f4 0%, #84fab0 100%);


    }

.shorten__url{
    font-size: 12px;
    font-family: "ProximaNova Regular","Helvetica Neue",Helvetica,Arial,sans-serif;
    color: #fff;
    text-decoration: none;
}
.output{
    width: 100%;
    display: none;
    background-color: #262626;
    margin: 0;
    height: 45px;
    justify-content:center;
    align-items: center;
    transition: all .5s ease-in-out;
    position: fixed;
    bottom:0;
    cursor: pointer;

}
.output &amp;gt; p{
    font-size: 12px;
    font-family: "ProximaNova Regular","Helvetica Neue",Helvetica,Arial,sans-serif;
    color: #fff;
    text-decoration: none;
}

@media (max-width:768px){
    .links{
        display: none;
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a Mongoose Model
&lt;/h2&gt;

&lt;p&gt;Using Schema class of mongoose package .to do this create a file called URL.js inside a model directory and create a schema using Schema class and pass to model function by giving collection name &amp;amp; schema &lt;/p&gt;

&lt;h3&gt;
  
  
  /models/URL.js
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const {model,Schema} = require('mongoose');

const URLSchema = new Schema({
    url:{
        type: 'string',
        required: true,
    },
    shorten_id:{
        type: 'string',
        required: true,
    }
});


module.exports = model('url',URLSchema);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  😇 Thanks for Reading....
&lt;/h3&gt;

&lt;p&gt;Clone &lt;a href="https://github.com/Ammyy9908/url-shortener" rel="noopener noreferrer"&gt;Github Repo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tool</category>
      <category>node</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Creating a Spotify Web Clone with ReactJS+Spotify WEB API.</title>
      <dc:creator>sumit kumar bighaniya</dc:creator>
      <pubDate>Tue, 20 Jul 2021 13:41:19 +0000</pubDate>
      <link>https://forem.com/ammyy9908/creating-a-spotify-web-clone-with-reactjs-spotify-web-api-1b8g</link>
      <guid>https://forem.com/ammyy9908/creating-a-spotify-web-clone-with-reactjs-spotify-web-api-1b8g</guid>
      <description>&lt;p&gt;Pre View:&lt;a href="https://romantic-wozniak-9ac9cd.netlify.app"&gt;View:&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this post i represent how i build a spotify clone web app using ReactJS+Redux using Spotify Web API...&lt;a href="https://developer.spotify.com/documentation/web-api/"&gt;Read docs.&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Note::
&lt;/h3&gt;

&lt;p&gt;We cannot play audio of any song because this feature is not yet updated in spotify web api docs.&lt;/p&gt;

&lt;p&gt;hence in this project user can view their spotify data in terms of application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Actors of the Application:
&lt;/h3&gt;

&lt;p&gt;Non-Premium Spotify Users:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* Check their latest played song
* Visit Spotify User profile.
* Check their saved &amp;amp; liked playlists.
* View which device playing current song in song player.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Premium Spotify Users:&lt;br&gt;
    * The above 4 features of Non Premium Users is also same for the Premium users &lt;br&gt;
    in addition with this premium users can control player i.e user can play Next, Previous song, stop or resume the current played song, user can also control device volume by sliding the user control in player.&lt;/p&gt;

&lt;p&gt;Github Repo:&lt;a href="https://github.com/Ammyy9908/spotify"&gt;Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Please 🌟 the repo if you like.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>css</category>
      <category>beginners</category>
      <category>react</category>
    </item>
    <item>
      <title>Create a Spotify HomePage with NextJs.</title>
      <dc:creator>sumit kumar bighaniya</dc:creator>
      <pubDate>Mon, 19 Jul 2021 17:34:13 +0000</pubDate>
      <link>https://forem.com/ammyy9908/create-spotify-homepage-with-nextjs-2525</link>
      <guid>https://forem.com/ammyy9908/create-spotify-homepage-with-nextjs-2525</guid>
      <description>&lt;p&gt;HomePage=&amp;gt;&lt;a href="https://spotify-home-page.vercel.app"&gt;👁 View Now:&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Github Repo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Ammyy9908/spotifyHomePage"&gt;Repo Link:&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Structure
&lt;/h3&gt;

&lt;p&gt;--Components(Ui React Components)&lt;br&gt;
--data:(Hardcoded Spotify Plans Data)&lt;br&gt;
--styles(All css Styles)&lt;br&gt;
--pages(All pages that can be navigate)&lt;/p&gt;

&lt;h4&gt;
  
  
  Note 📙 All components in the project is Functional React components and there is no fully interaction as in Real Spotify Website it's just a standalone not fully dynamic nor a fully static.
&lt;/h4&gt;

&lt;h2&gt;
  
  
  Components
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.Footer.jsx&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This component represent the Footer UI of the Home Page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.HomeHero.jsx&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HomeHero build the Top Hero Section of the Home Page.&lt;/p&gt;

&lt;h4&gt;
  
  
  3.InputGroup.jsx
&lt;/h4&gt;

&lt;p&gt;A Custom React Component used for Login &amp;amp; SignUp form.&lt;/p&gt;

&lt;h4&gt;
  
  
  4.Layout.jsx
&lt;/h4&gt;

&lt;p&gt;A Layout component which render some UI components based on page route.&lt;/p&gt;

&lt;h4&gt;
  
  
  5.Logo.jsx
&lt;/h4&gt;

&lt;p&gt;A Custom component to render the Spotify Logo in Navbar Component.&lt;/p&gt;

&lt;h4&gt;
  
  
  6.Logo2.jsx
&lt;/h4&gt;

&lt;p&gt;Another React Component which is used to render spotify black logo in svg format used in Login &amp;amp; Signup Page.&lt;/p&gt;

&lt;h4&gt;
  
  
  7.Navbar.jsx
&lt;/h4&gt;

&lt;p&gt;A React functional component which use to render the Navbar UI of the Page.&lt;/p&gt;

&lt;h4&gt;
  
  
  8.PlanCard.jsx
&lt;/h4&gt;

&lt;p&gt;A React Card Component use to Display a Single Plan Card for the Spotify subscription plan.&lt;/p&gt;

&lt;h4&gt;
  
  
  9.Plans.jsx
&lt;/h4&gt;

&lt;p&gt;A React component which contains a wrapper in which we iterate through the list of plans imported from the data directory by using Array.map() method.&lt;/p&gt;

&lt;h4&gt;
  
  
  10.Sidenav.jsx
&lt;/h4&gt;

&lt;p&gt;Last React Component use to build the Sidenav for the Pages which we can toggle by clicking on hamburger menu button from top right.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pages
&lt;/h2&gt;

&lt;h4&gt;
  
  
  1.index.js
&lt;/h4&gt;

&lt;p&gt;This will render the index or home page of the spotify home page.&lt;/p&gt;

&lt;h4&gt;
  
  
  2.login.js
&lt;/h4&gt;

&lt;p&gt;This represent the Login Screen of the Spotify Login Page.&lt;/p&gt;

&lt;h4&gt;
  
  
  3.register.js
&lt;/h4&gt;

&lt;p&gt;This will render the registration page containing some other custom components which i declared above.&lt;/p&gt;

&lt;h4&gt;
  
  
  4.premium.js
&lt;/h4&gt;

&lt;p&gt;This will display the Plans for the Premium Users.&lt;/p&gt;

&lt;h4&gt;
  
  
  5.support.js
&lt;/h4&gt;

&lt;p&gt;This page renders the support page ui of the spotify home page.&lt;/p&gt;

&lt;h4&gt;
  
  
  6.download
&lt;/h4&gt;

&lt;p&gt;This is the last page in whole project just renders the download page of the spotify website.&lt;/p&gt;

&lt;h3&gt;
  
  
  Author
&lt;/h3&gt;

&lt;p&gt;😜~ &lt;a href="https://github.com/Ammyy9908"&gt;Sumit&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;1.&lt;a href="https://ammyy9908.github.io/PortfolioSumit/"&gt;Website:&lt;/a&gt;&lt;br&gt;
2.&lt;a href="https://github.com/Ammyy9908"&gt;Github:&lt;/a&gt;&lt;br&gt;
3.&lt;a href="https://www.linkedin.com/in/sumit-kumar-097a3a204/"&gt;LinkedIn:&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Show Your Support
&lt;/h2&gt;

&lt;p&gt;~by giving ⭐️ to this Project&lt;/p&gt;

</description>
      <category>css</category>
      <category>react</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
