This project aims to create a personalized music service, similar to Spotify. It is built using Django, Docker, FastAPI, Celery, DRF, Pillow, django-ckeditor, and grappeli. The application allows users to search for songs and albums, create playlists, and pay for premium features. It also provides a platform for artists to showcase their music, create profiles, and interact with their fans. Starwithmoon
- User authentication using JWT tokens
- Search functionality for songs and albums
- Payment gateway integration
- Custom user models with different roles (singer, listener)
- Profile management for singers
- Likes functionality for users
- APIs for artists, albums, songs, and likes
- Admin panel for managing users, songs, and albums
- Django: A Python-based web framework for building web applications
- FastAPI: A modern, fast (high-performance) web framework for building APIs
- Celery: A task queue used for asynchronous processing
- DRF: A powerful and flexible toolkit for building APIs
- Pillow: A Python Imaging Library that adds image processing capabilities to your Python interpreter
- django-ckeditor: A rich text editor for Django
- grappeli: A customizable, responsive, and lightweight administrative interface for Django
To run the project locally, follow these steps:
- Clone the repository to your local machine.
- Install the dependencies using
pip install -r requirements.txt
- Create a PostgreSQL database.
- Set up the environment variables in a
.env
file. - Migrate the database using
python3 manage.py migrate
- Create a superuser account using
python3 manage.py createsuperuser
- Start the development server using
python3 manage.py runserver
- Install Docker on your machine.
- Clone the repository to your local machine.
- Navigate to the project's root directory in the terminal.
- Run the following command to build the Docker image:
docker-compose build
- Run the following command to start the Docker containers:
docker-compose up
- Access the application in your web browser at http://localhost:8000.
The project provides the following APIs:
/api/token/
: Token Obtain Pair API for user authentication/users/api/register/
: User registration API/api/general/
: API for retrieving all singers, albums, and songs/api/artists/list/
: API for retrieving all singers/api/albums/list/
: API for retrieving all albums/api/songs/list/
: API for retrieving all songs/users/api/likes/
: API for retrieving all liked songs of a user
We welcome contributions from anyone who is interested in improving this project. If you'd
like to contribute, please follow these steps:
- Fork the repository to your own GitHub account.
- Create a new branch for your feature or bugfix.
- Write your code and tests.
- Submit a pull request explaining your changes.
Authors: Yersultan Abduvalov
This project is licensed under the MIT License. Feel free to use, modify, and distribute the
code as you see fit.
runtiming