Spotistats
Next.js application using Spotify API for user listening habbits and statistics.
Demo
https://spotistats.vercel.app/
Features
- Playlist creation
- Time frame selection
API Reference
Get most listened tracks based on a time range
POST /api/time-range-tracks
Parameter | Type | Description |
---|---|---|
range |
string |
Required. Specified time range for tracks fetching |
token |
string |
Required. Users Spotify access token |
Get dominant color
POST /api/color
Parameter | Type | Description |
---|---|---|
array of songs |
array |
Required. Array of songs Spotify API returns |
Create a playlist of most listened songs
POST /api/create-playlist
Parameter | Type | Description |
---|---|---|
id |
string |
Required. Spotify user id |
token |
string |
Required. Users Spotify access token |
array of songs |
array |
Required. Array of songs Spotify API returns |
name |
string |
Required. Playlist name |
Description |
string |
Playlist description |
getSpotifyData(url, token)
Takes Spotify API endpoint and access token and returns the fetched data.
postSpotifyData(url, token, data)
Takes Spotify API endpoint, access token and data object and posts the data to the Spotify API & returns the response.
millisToMinutesAndSeconds(milis)
Takes miliseconds and converts them to minutes and second.
arrToRgb(arr)
Takes an array of RGB values [${r}, ${g}, ${b}]
and converts it to rgb(${r}, ${g}, ${b})
.
getColor(url)
Takes an image url and returns the dominant color.
Environment Variables
To run this project, you will need to add the following environment variables to your .env file
SPOTIFY_CLIENT_ID
SPOTIFY_CLIENT_SECRET
Tech Stack
Client: Next.js, SCSS, Framer Motion
Server: Node
Optimizations
Switched from Material-UI to custom SCSS for a ~50% reducuction to bundle size.
Run Locally
Clone the project
git clone https://github.com/mislavjc/spotistats.git
Go to the project directory
cd spotistats
Install dependencies
npm install
Start the server
npm run dev