Spotilist is a React application that enables users to customize their music preferences and receive personalized playlists based on their favorite genres and artists. The app integrates with the Spotify API to fetch music-related data.
*UI is inspired from SPotify
The Main component serves as the main entry point for the Spotilist app. It consists of several sub-components, each catering to specific functionalities.
-
Genre Component: Displays a list of music genres retrieved from the Spotify API. Users can select their favorite genres, and it provides visual feedback for the selected genres.
-
Category Component: Fetches music categories from the Spotify API and allows users to select their preferences. It provides a visually appealing interface for users to choose their preferred music categories.
-
Artist Component: Fetches and displays a list of artists based on user preferences. Users can select their favorite artists, and the component provides visual feedback for the selected artists.
-
OAuthPage Component: Handles the Spotify OAuth authentication process, allowing users to log in to their Spotify account.
-
Playlist Component: Fetches playlists recommended for the user based on their selected genres and artists. Displays the recommended playlists with clickable links to open them in Spotify.
- User starts with the Main Component, gets user name and navigates to Genre Component.
- After selecting favorite genres, they navigate to the Category Component.
- In the Category Component, users choose their preferred music categories and proceed to the Artist Component.
- The Artist Component allows users to select their favorite artists and navigate to the OAuthPage Component for Spotify authorization.
- Once authorized, users are directed to the Playlist Component, which displays personalized playlists.
To run the Spotilist app locally:
- Install SSDK and Get Domain & API Token from SurveySparrow to test your development, Know how to setup
ssdk create
in the terminal- Select
your_first_react_app
in the terminal - Clone the repository and replace the files in the template
- Enter
npm i
to install required packages ssdk run
to run the spotilist web application- Navigate to
localhost:30001/custom_configs
to install your SurveySparrow API key for your custom app. - Navigate to
https://yourdomain.surveysparrow.com/settings/marketplace-apps?dev=true
to test your app.
NOTE: Make sure you get your client ID and client secret and replace the CLIENT_ID and CLIENT_SECRET in the js files orelse spotify API won't work
The app integrates with the Spotify API for fetching music-related data. Ensure that you have a Spotify Developer account, and obtain the client ID and client secret for authentication.
Spotilist leverages the SurveySparrow Software Development Kit (SSDK) for React local development. The SSDK incorporates Webpack 5, offering native support for React applications. This tutorial provides a comprehensive guide for implementing React applications using the SSDK.
- React: The main JavaScript library for building user interfaces.
- @sparrowengg/twigs-react: UI components for styling and layout.
- @sparrowengg/twigs-react-icons: Icons for visual elements.
- Spotify API: Used for accessing music genres, categories, artists, and playlists.
- Main
![image](https://private-user-images.githubusercontent.com/56198819/282653535-3ea7c419-896c-4d51-9124-1dde7d5bb2fe.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyMzMzOTYsIm5iZiI6MTcyNDIzMzA5NiwicGF0aCI6Ii81NjE5ODgxOS8yODI2NTM1MzUtM2VhN2M0MTktODk2Yy00ZDUxLTkxMjQtMWRkZTdkNWJiMmZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIxVDA5MzgxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTczOTUwMjBiMjgwNWEwNDY3OTk0ODdmODg5ZmU0MzFlNTRmNGVlZjkyMWY3ZjQzYzdiYTRhOGJmY2E3MTJjOWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tIl22L4NLVAUUycZaSAzlhbkNKh5rRBpd1XWLHQKb4U)
![image](https://private-user-images.githubusercontent.com/56198819/282653651-9b9c55ff-c2ae-4b6e-857b-ce245c8af04a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyMzMzOTYsIm5iZiI6MTcyNDIzMzA5NiwicGF0aCI6Ii81NjE5ODgxOS8yODI2NTM2NTEtOWI5YzU1ZmYtYzJhZS00YjZlLTg1N2ItY2UyNDVjOGFmMDRhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIxVDA5MzgxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQzNDExMTMxNDRiY2FjMjY5OWI0YjBjNjhhODBkZDJmMzQxNzMxZGQzMDUyYThhYmNkNjQ3MzRiZDFmMDczYTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.8yXhFpNkcht0PdVZcZOuFsOgGR8a3En3pg2hRwVqT2M)
- Category
![image](https://private-user-images.githubusercontent.com/56198819/282653883-57a8d935-05dd-4118-8c48-d844829fcc06.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyMzMzOTYsIm5iZiI6MTcyNDIzMzA5NiwicGF0aCI6Ii81NjE5ODgxOS8yODI2NTM4ODMtNTdhOGQ5MzUtMDVkZC00MTE4LThjNDgtZDg0NDgyOWZjYzA2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIxVDA5MzgxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThiMGUxN2JlNTlkMTdhOGNmZTI5NjQzYjFlOTk0NDU5MWVjMWM3M2E3ZTg1ZjBmZGMyZmNkOGU2MTAwMDg4NDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ibQHs7ju25kaKzXzLm-DNKVQOGs94bnsJTMti07NlNc)
- Artists
![image](https://private-user-images.githubusercontent.com/56198819/282654378-6e731669-ec21-417b-85a7-ff5ac0539b2a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyMzMzOTYsIm5iZiI6MTcyNDIzMzA5NiwicGF0aCI6Ii81NjE5ODgxOS8yODI2NTQzNzgtNmU3MzE2NjktZWMyMS00MTdiLTg1YTctZmY1YWMwNTM5YjJhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIxVDA5MzgxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA0NTcxMzE5YWZhYjRiMDcwNzM2MmMwNTIyMjBiYjYxZDJhM2FmNzI3YmMzNjAwMDcyNjdjNjRlMTA1MTM5MmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ljDSwioUGOT9b_Fv8GI0yjQmAUj0oRUYnsab_i34BjM)
- OAuth
![image](https://private-user-images.githubusercontent.com/56198819/282654458-e5491674-221b-4b8c-b128-b8bf62ee7d87.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyMzMzOTYsIm5iZiI6MTcyNDIzMzA5NiwicGF0aCI6Ii81NjE5ODgxOS8yODI2NTQ0NTgtZTU0OTE2NzQtMjIxYi00YjhjLWIxMjgtYjhiZjYyZWU3ZDg3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIxVDA5MzgxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWEzOGRlNDgyOWQ5OTUyODczNGZkNTA1ODBmNjQwMjI4Zjc4OWYzNWViNzM4NDY4OTM1NDNhYTFmMDA1MmJlZTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.gD76BKLeCAYn9kROj3pk_DMzLDjlPdcHnlIvbIoDLS0)
![image](https://private-user-images.githubusercontent.com/56198819/282654572-7f772ab0-111e-4af3-b7ed-71ef42924807.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyMzMzOTYsIm5iZiI6MTcyNDIzMzA5NiwicGF0aCI6Ii81NjE5ODgxOS8yODI2NTQ1NzItN2Y3NzJhYjAtMTExZS00YWYzLWI3ZWQtNzFlZjQyOTI0ODA3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIxVDA5MzgxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFmMmYyNTM5MWQ2ZWE3ZmRmNTM3NTU4ODQ5NzcyZGRlNjYxYjE3YjZjMmVkNjBiYjYxMWQyZThiYTk3YTVjNzAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.IlRY20o8LC8kewdyaSwaYBBhBwGQsNR_yOK0S_S8QOQ)
- Playlist
![image](https://private-user-images.githubusercontent.com/56198819/282654632-eb270a2c-220b-4f76-ba30-5f417cca5c9b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQyMzMzOTYsIm5iZiI6MTcyNDIzMzA5NiwicGF0aCI6Ii81NjE5ODgxOS8yODI2NTQ2MzItZWIyNzBhMmMtMjIwYi00Zjc2LWJhMzAtNWY0MTdjY2E1YzliLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODIxVDA5MzgxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk4M2FhNjEzNTU4NTRhNWNhMDUzMDdiYzdjMWUwYTgyZTlmNTBiM2M1YmEwOGE3ODdhOTgwZDk4NDdjMTdmMDMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.81khz3c5YFwxDdISe6O1iB-iFZvGTNXAoTPMqAmTbBM)
This project is licensed under the MIT License.