The Playlist Generator App is a web application that allows users to generate AI-curated playlists based on their favorite genres. The app features an intuitive interface for selecting music genres and displays personalized song recommendations.
- Dynamic Playlist Generation: Users can select from multiple genres, and the app generates a unique playlist.
- User Feedback: Informative UI elements to guide users, including warnings about losing the playlist after navigating away.
- Interactive Design: Fully responsive with a modern aesthetic.
- Front-end: React.js, CSS
- Back-end: Django REST Framework
- Text Generation API: Groq
- Deployment: Gitlab, Vercel, Render
playlist-generator-app/
├── client/
│ ├── playlist-generator-react-app/
│ │ ├── src/
│ │ │ ├── assets/
│ │ │ ├── App.css
│ │ │ ├── App.jsx
│ │ │ ├── index.css
│ │ │ └── main.jsx
│ │ ├── public/
│ │ ├── index.html
│ │ ├── .gitignore
│ │ ├── eslint.config.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ └── vite.config.js
├── server/
│ ├── django_server/
│ │ ├── api/
│ │ │ ├── migrations/
│ │ │ ├── utils/
│ │ │ │ ├── groq_client.py
│ │ │ ├── asgi.py
│ │ │ ├── admin.py
│ │ │ ├── apps.py
│ │ │ └── models.py
│ │ │ ├── tests.py
│ │ │ ├── urls.py
│ │ │ └── views.py
│ │ ├── django_server/
│ │ │ ├── __init__.py
│ │ │ ├── asgi.py
│ │ │ ├── settings.py
│ │ │ ├── urls.py
│ │ │ └── wsgi.py
│ ├── .gitignore
│ ├── .env.example
│ ├── manage.py
└── README.md
- Data Loss Warning: Clicking the "Back" button clears the current playlist and resets the app. Ensure you save your playlist before proceeding.
- Cross-Platform Compatibility: The app is optimized for desktop and mobile devices.
-
Clone the repository:
git clone https://gridirontest.com/bootcamp-cohort-4/obi-samuel.git -
Navigate to the client Directory:
cd client cd playlist-generator -
Install front-end dependencies:
npm install -
Set up the backend:
-
Navigate to the backend directory open a new terminal instance:
cd server cd django_server -
Create a virtual environment:
- On Mac:
python3 -m venv env source env/bin/activate- On Windows:
python -m venv env source env\Scripts\activate
Please note going forward that
python3is used on Mac whilepythonis used on Windows.-
Install dependencies:
pip install -r requirements.txt -
Apply migrations:
python manage.py migrate -
Start the server:
python manage.py runserver
-
-
Environment Variables: Create a
.envfile in thedjango_serverdirectory, use the.env.examplefile as guide. Make sure the.envfile is in the same level as themanage.pyfile -
Start the front-end development server:
npm run dev -
Access the app at
http://localhost:5173.
To explore the API endpoints for the Playlist Generator App, visit the detailed Postman Documentation.
The documentation includes:
- Endpoint Descriptions: Detailed information about each endpoint, including request methods, parameters, and response structures.
- Follow the installation instructions to set up the application locally.
- Select a music genre from the dropdown menu on the interface.
- Click "Generate Playlist" to create a curated list of songs based on your chosen genre.
- Use the "Back" button to clear the playlist and select a new genre.
- The front-end of the application is hosted on Vercel and accessible playlist-generator-app link.
- The back-end is also hosted on Render and is configured to only accept requests from the hosted front-end ip address.
- Implement user authentication for personalized playlists.
- Change the dropdown to a form where users can specify niche genres.
- Add persistent storage for playlist saving and sharing.
- Restrict access to the server by adding the address of the urls that should have access to the server in the corsheader function.
- Host the server
If you encounter issues or need assistance with the Playlist Generator App, please feel free to open an issue on this repository. To ensure your concerns are addressed quickly, tag the issue as need-help or under-discussion to facilitate visibility.
Contributions are welcome! To ensure a smooth collaboration process, please follow the Installation guide to get started.


