Проект создан в рамках тестового задания.
Реализовать 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
- Клонировать репозиторий и перейти в него.
git clone https://github.com/SemenovY/blog_drf.git
- Создать .env на основе .env.example
- Запустить 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
touch .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