Skip to content

Персональный блог и подписка

License

Notifications You must be signed in to change notification settings

SemenovY/blog_drf

Repository files navigation

Персональный блог и подписка

Описание проекта

Проект создан в рамках тестового задания.

Реализовать rest api:

  • Имеется база пользователей (добавляются через админку/swagger, регистрацию делать не надо).
  • У каждого пользователя при создании создается персональный блог. Новые создавать он не может.
  • Пост в блоге — элементарная запись с заголовком, текстом (140 символов) и временем создания. Заголовок обязательное поле.
  • Пользователь может подписываться/отписываться на блоги других пользователей (любое количество).
  • У пользователя есть персональная лента новостей (не более ~500 постов), в которой выводятся посты из блогов, на которые он подписан, в порядке добавления постов. Пагинация по 10 постов.
  • Пользователь может помечать посты в ленте прочитанными.
  • При удалении/добавлении поста, лента тоже должна изменяться
  • Раз в сутки на почту прилетает подборка из 5 последних постов ленты (можно в консоль)
  • В среднем пользователь подписан на 100 человек, которые постят по 2-3 раза в день.
  • Предполагаемое кол-во пользователей в системе около 1 млн.

Проект разворачивается в Docker контейнерах:

  • backend-приложение API,
  • db-база данных,
  • redis.

Реализовано CI. При пуше изменений проект автоматически тестируется на соответствие требованиям PEP8.

Системные требования

  • Python 3.11
  • Docker
  • Works on Linux, Windows, macOS, BSD

Стек технологий

  • Python 3.11
  • Django 5.0.1
  • Rest API
  • PostgreSQL
  • gunicorn
  • Docker

Запуск проекта

  1. Клонировать репозиторий и перейти в него. git clone https://github.com/SemenovY/blog_drf.git
  2. Создать .env на основе .env.example
  3. Запустить Docker
docker-compose up --build

Создать суперпользователя для входа в административную панель

docker exec -it app poetry run python backend/manage.py createsuperuser

После запуска сервера доступны адреса: http://localhost:8000/admin/ - административная панель, http://localhost:8000/schema/swagger-ui/ - автодокументирование Swagger.

Установка проекта из репозитория

Клонировать репозиторий и перейти в него в командной строке:

https://github.com/SemenovY/blog_drf.git

Создать и открыть файл .env с переменными окружения:

touch .env

Заполнить .env файл с переменными окружения по примеру:

echo DB_ENGINE=django.db.backends.postgresql >> .env
echo DB_NAME=postgres >> .env
echo POSTGRES_PASSWORD=postgres >> .env
echo POSTGRES_USER=postgres >> .env
echo DB_HOST=db >> .env
echo DB_PORT=5432 >> .env

About

Персональный блог и подписка

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published