Задание: Сервис шуток

image

image

Documentation Status

Updates

Цели задания

Показать умение ведения полного пайпалайна разработки Web API, что включает в себя: разработку сервера, документацию, тестирование и развертку системы.

Задача

Написать многопользовательский REST-сервис предоставляющий следующие эндпоинты:

  1. Регистрация пользователя. Пользователь должен иметь возможность передать желаемый username, при этом он должен быть уникальным (другой пользователь не может зарегистрироваться с таким же именем).
  2. Создать шутку, передав её сервису и сохранить в список “моих” шуток.
  3. Сгенерировать шутку, получив её от внешнего сервиса и сохранить в список “моих” шуток.
  4. Получить шутку по ID. При этом нельзя получить шутку другого пользователя.
  5. Посмотреть список “моих” шуток.
  6. Обновить текст своей шутки.
  7. Удалить свою шутку.

Сервис должен также сохранять информацию о запросах - время обращения, данные пользователя, адрес пользователя.

В качестве генератора шуток можно использовать любой публично доступный API. Например, geek-jokes ( https://geek-jokes.sameerkumar.website/api ).

Техническое задание к приложению

  1. Приложение должно быть написано на Python 3.
  2. Приложение должно представлять из себя REST API интерфейс для работы с шутками.
  3. Приложение должно быть покрыто тестам.
  4. Приложение должно быть подготовлено к локальной сборке и развертыванию с использованием Docker.
  5. В приложение должны быть внедрены пайалайны для CI/CD, в частности автоматизированный прогон тестов и обновление testcov badge, сборка приложения в контейнер, развертывание приложения на сервере.
  6. Приложение должно сопровождаться документацией.
  7. Исходный код приложения необходимо предоставить в виде ссылки на GitHub / GitLab.
  8. В качестве хранилища данных предлагается использовать технологии Elasticstash

Credits

This package was created with Cookiecutter and the harshanarayana/cookiecutter-sanic project template.

This project enables automated version management using bumpversion and gitchangelog projects.