Sound Cloud — современная аудиоплатформа для поиска, прослушивания и скачивания музыки. Музыканты могут загружать свои треки для бесплатного использования.
- Функционал
- Технологический стек
- Структура проекта
- Начало работы
- Переменные окружения
- Разработка
- Тестирование
- Развертывание
- Лицензия
- Контакты
- Аутентификация через OAuth2 (Google, Spotify)
- Аутентификация пользователей на основе JWT
- Управление профилем пользователя
- CRUD для альбомов, плейлистов, треков, лицензий
- Загрузка, стриминг и скачивание музыки
- Избранные исполнители, комментарии к трекам
- Кастомная модель пользователя, валидация файлов, контроль доступа через nginx
- Бэкенд: Python 3.9+, Django 3.2, Django REST Framework
- База данных: PostgreSQL
- Документация API: Swagger (drf-yasg)
- Контейнеризация: Docker, docker-compose
- Веб-сервер: Nginx
sound_cloud/
├── src/
│ ├── oauth/ # Логика OAuth
│ ├── audio_library/ # Логика музыкальной библиотеки
│ ├── base/ # Базовые сервисы, permissions
│ ├── routes.py
│ └── __init__.py
├── config/ # Настройки Django, urls, wsgi/asgi
├── nginx/ # Конфиги Nginx, Dockerfile
├── static/ # Статические файлы
├── templates/ # Шаблоны
├── media/ # Загружаемые файлы
├── requirements.txt
├── docker-compose.yml
├── Dockerfile
├── entrypoint.sh
├── manage.py
└── README.md
git clone https://github.com/your-org/sound_cloud.git
cd sound_cloud- Скопируйте
.env.exampleв.env.devи заполните ваши значения.
docker-compose up --build- Откройте http://localhost/api/v1/swagger/ в вашем браузере.
docker exec -it sound_cloud_web bash
python manage.py createsuperuserdocker-compose down -vСоздайте файл .env.dev на основе .env.example и укажите значения для:
- Настройки Django (
SECRET_KEY,DEBUG,ALLOWED_HOSTS) - База данных (
DB_NAME,DB_USER,DB_PASSWORD,DB_HOST,DB_PORT) - OAuth (
GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET,SPOTIFY_CLIENT_ID,SPOTIFY_CLIENT_SECRET) - Nginx (
NGINX_HOST,NGINX_PORT)
- Все зависимости указаны в
requirements.txt. - Для локальной разработки используйте Docker.
- Для хранения загружаемых файлов используйте папку
media/(не забудьте добавить пустой файл.gitkeep).
TODO: Описать запуск тестов, если они реализованы.
- Используйте переменные окружения для production.
- Проверьте настройки безопасности Django.
- Настройте постоянное хранилище для media-файлов.
BSD 3-Clause License
© 2021–настоящее время, DJWOMS — Omelchenko Michael