Backend часть полноценной социальной сети, основанной на картинках eXwonder
, вдохновленной Instagram
.
Код написан на Python фреймворке Django REST Framework, использует PostgreSQL как основную БД,
Redis для кэширования, RabbitMQ в качестве брокера сообщений, Celery
для обработки очередей задач. Также применяется библиотека dj-rest-auth для операций с аккаунтом
через REST API, к которому также имеется Swagger-схема, сгенерированная при помощи
drf-spectacular. Сервер Live-Time
уведомлений и мессенджер написаны на Channels, используемый линтер
и форматер кода - ruff.
У проекта есть Frontend клиент.
Перед установкой убедитесь, что у вас установлен менеджер пакетов uv
, Redis
и RabbitMQ
(если вы хотите использовать его как брокер сообщений вместо Redis
).
- Клонируем репозиторий:
git clone https://github.com/waflawe/eXwonder-backend.git
cd eXwonder-backend/
- Устанавливаем зависимости:
uv sync
- Создайте файл
.env
и настройте его по примеру файла.env.template
. - Применяем миграции:
uv run python manage.py migrate
- Запускаем отдельно три окна терминала. В первом запускаем
celery
:
./scripts/celery.sh
- Во втором запускаем основной сервер:
./scripts/run.sh
- В третем запускаем сервер уведомлений и мессенджер:
./scripts/asgi.sh
- Готово. API будет доступно по адресу:
http://localhost:8000/api/v1/
, а документация к нему -http://localhost:8000/api/v1/schema/docs/
. СерверWebSocket
уведомлений будет расположен наws://localhost:8001/
, а мессенджер -ws://localhost:8001/messenger/
.
- Создание аккаунта, вход, сброс пароля, 2-х факторная аутентификация, изменение пароля аккаунта.
- Подписки и подписчики.
- Операции с постами, а именно:
- Создание, удаление, просмотр
- Лайки, теги
- Добавление в список сохраненных
- Закрепление постов в профиле
- Комментарии к посту, лайки комментариев, удаление комментариев.
- Страница новостей (посты от аккаунтов в подписках за время вашего отсутствия).
- Страница с рекоммендациями, последними добавленными и самыми залайканными постами.
- Страница с сохраненными постами.
- Полноценные
Live-Time
WebSocket
уведомления. - Полноценный
Live-Time
WebSocket
мессенджер. - Глобальный поиск аккаунтов.
- Кастомизация аккаунта настройками, среди прочих:
- Публичные:
- Имя
- Описание аккаунта
- Аватар пользователя
- Приватные:
- Временная зона
- Почта
- Статус включения 2-факторной аутентификации
- Статус приватности аккаунта (позволяет скрыть аккаунт из поиска)
- Статус определения круга пользователей, способного оставлять комментарии к постам аккаунта
- Публичные:
Доступны здесь.
У этого проекта MIT лицензия.