MVP Blog

Цель:

Написать API для приложения блог, где пользователи могут писать статьи и делиться со своими подписчиками.

Основные Требования:

  • Python 3.10
  • Django 4.1.1
  • DRF 3.12.4
  • SQLite

Этап 1. Models.

Создать модели:

  1. Кастомную модель User (link)
  2. Post с отношением (User - Post)
  3. Like с отношениями (User - Like - Post)
  4. Comment с отношением (User - Comment - Post)

Поля моделей:

User:

  • email: str *
  • password: str *
  • username: str

Сделать username не обязательным, а email обязательным.

Post:

  • user: foregin-key to User *
  • title: str *
  • description: str *
  • text: text *

Like:

  • user: foregin-key to User *
  • post: foregin-key to Post *

Comment:

  • user: foregin-key to User *
  • post: foregin-key to Post *
  • text: text *

Для Comment, Like можно использовать ManyToManyField с атрибутом through

!!! Не забудь про миграции.

Этап 2. Endpoints.

  1. Сделать Сериализаторы для созданых моделей (link)
  2. Сделать CRUD для созданых моделей с использованием ViewSets (кроме Likes) (link)
  3. Сделать JWT авторизацию (link)
  4. Ограничить доступ на добавление лайка к посту, коммента не авторизованым юзерам.
  5. Добавить ограничения, чтобы юзер не мог изменить данные другого юзера.

Этап 3. Improvements.

  • Добавить в сериализатор для модели Post поле likes в котором будет количество лайков.
  • Добавить возможность автоудаления поста с использованием Celery
  • Добавить возможность отложеного поста с использованием Celery
  • Написать Middleware которая при возникновении ошибки в приложении будет отправлять ошибку в телеграм админу(ам), и на почту. link
  • Добавить пагинацию для постов, комментов. link
  • Добавить фильтрацию для постов, комментов. link
  • Сделать ендпоинты в виде /api/v1/posts или /api/v1/comments и т.д.
  • Добавить картинки к постам.

Этап 4. Docker.

  1. Сделать Dockerfile для API приложения
  2. Сделать docker-compose.yml в котором должны жить api, postgres, redis, celery.