Skip to content

Backend часть социальной сети, основанной на изображениях eXwonder.

License

Notifications You must be signed in to change notification settings

waflawe/eXwonder-backend

Repository files navigation

eXwonder-backend

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).

  1. Клонируем репозиторий:
git clone https://github.com/waflawe/eXwonder-backend.git
cd eXwonder-backend/
  1. Устанавливаем зависимости:
uv sync
  1. Создайте файл .env и настройте его по примеру файла .env.template.
  2. Применяем миграции:
uv run python manage.py migrate
  1. Запускаем отдельно три окна терминала. В первом запускаем celery:
./scripts/celery.sh
  1. Во втором запускаем основной сервер:
./scripts/run.sh
  1. В третем запускаем сервер уведомлений и мессенджер:
./scripts/asgi.sh
  1. Готово. API будет доступно по адресу: http://localhost:8000/api/v1/, а документация к нему - http://localhost:8000/api/v1/schema/docs/. Сервер WebSocket уведомлений будет расположен на ws://localhost:8001/, а мессенджер - ws://localhost:8001/messenger/.

Краткое описание функционала

  1. Создание аккаунта, вход, сброс пароля, 2-х факторная аутентификация, изменение пароля аккаунта.
  2. Подписки и подписчики.
  3. Операции с постами, а именно:
    • Создание, удаление, просмотр
    • Лайки, теги
    • Добавление в список сохраненных
    • Закрепление постов в профиле
  4. Комментарии к посту, лайки комментариев, удаление комментариев.
  5. Страница новостей (посты от аккаунтов в подписках за время вашего отсутствия).
  6. Страница с рекоммендациями, последними добавленными и самыми залайканными постами.
  7. Страница с сохраненными постами.
  8. Полноценные Live-Time WebSocket уведомления.
  9. Полноценный Live-Time WebSocket мессенджер.
  10. Глобальный поиск аккаунтов.
  11. Кастомизация аккаунта настройками, среди прочих:
    • Публичные:
      • Имя
      • Описание аккаунта
      • Аватар пользователя
    • Приватные:
      • Временная зона
      • Почта
      • Статус включения 2-факторной аутентификации
      • Статус приватности аккаунта (позволяет скрыть аккаунт из поиска)
      • Статус определения круга пользователей, способного оставлять комментарии к постам аккаунта

Скриншоты из frontend клиента

Доступны здесь.

Лицензия

У этого проекта MIT лицензия.

About

Backend часть социальной сети, основанной на изображениях eXwonder.

Topics

Resources

License

Stars

Watchers

Forks

Languages