Skip to content

KonstantinLjapin/backend_for_bike_rental_service_picasso_diagnostic

Repository files navigation

Требования

  • linux(Ubuntu)
  • docker compose
  • python3.11

Быстрый старт

  • git clone {repositories} / колонируем репозиторий
  • pip install --upgrade pip / для отладки
  • pip install pip install -r requirements.txt / для отладки
  • .env.dist -> .env / правим переменные окружения
  • sudo ./start_test.sh / запуск

Описание задачи

Реализовать backend для сервиса аренды велосипедов, который предоставляет RESTful API для выполнения основных операций. Используйте Django и Django Rest Framework. Реализуйте асинхронные задачи с помощью Celery. Для работы с базой данных используйте Django ORM. Развертывание системы должно осуществляться с использованием Docker и CI/CD (например, GitLab CI). Для работы с облачными технологиями выберите одного из популярных провайдеров (AWS, Google Cloud, Яндекс.Облако) и реализуйте интеграцию с ним.

Основные функции

Регистрация нового пользователя:

  • Реализовать API для регистрации нового пользователя.
  • Пользователь должен предоставить информацию: имя, электронную почту и пароль.
  • Пароль должен храниться в зашифрованном виде. Авторизация пользователя:
  • Реализовать API для авторизации пользователя.
  • Использовать JWT (JSON Web Token) для управления сеансами. Получение списка доступных велосипедов:
  • Реализовать API для получения списка всех доступных велосипедов.
  • Учитывать текущий статус велосипеда (доступен или арендован). Аренда велосипеда:
  • Реализовать API для аренды велосипеда.
  • Пользователь может арендовать только один велосипед одновременно.
  • Учитывать время начала аренды. Возврат велосипеда:
  • Реализовать API для возврата велосипеда.
  • Учитывать время окончания аренды и расчет стоимости аренды. Получение истории аренды пользователя:
  • Реализовать API для получения истории аренды велосипедов текущего пользователя. Дополнительные требования Асинхронные задачи:
  • Используйте Celery для обработки асинхронных задач (например, расчет стоимости аренды). Тестирование:
  • Реализовать модульные тесты с использованием PyTest.
  • Реализовать интеграционные тесты для проверки работы API. Развертывание:
  • Используйте Docker для контейнеризации приложения.
  • Настройте CI/CD систему (например, GitLab CI) для автоматического тестирования и развертывания. Интеграция с облачными технологиями:
  • Выберите одного из популярных облачных провайдеров (AWS, Google Cloud, Яндекс.Облако).
  • Реализуйте интеграцию с облаком для хранения данных или других сервисов (например, отправка уведомлений).

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

  • Backend: Django, Django Rest Framework
  • Асинхронность: Celery
  • База данных: PostgreSQL
  • Тестирование: PyTest
  • Контейнеризация: Docker
  • CI/CD: GitLab CI
  • Облачные технологии: AWS, Google Cloud или Яндекс.Облако

Эндпоинты

Описание реализации

Приложением реализованы задачи

Регистрация нового пользователя:

для регистрации .../users/register отправить { "username": "ivan", "password": "qwerty", "email": "[email protected]" }

Авторизация пользователя:

  • для авторизации ...users/login { "username": "ivan", "password": "qwerty" }
  • выход .../users/logout

Получение списка доступных велосипедов:

  • запрос .../bikes/list

Аренда велосипеда:

  • запрос .../bikes/rent_start

Возврат велосипеда:

  • запрос.../bikes/rent_end

Получение истории аренды пользователя:

  • запрос.../users/profile

Дополнительные требования

Асинхронные задачи:

  • запрос.../bikes/rent_end запускает задачу подсчёта стоимости

Тестирование:

  • PyTest интеграционные тесты проверки работы API.

Развертывание:

  • с помощью скрипта запускается тестовая сборка

Интеграция с облачными технологиями:

  • Возможно выбрать вместо контейнера с базой данных интеграцию с облачным сервисом

Тестирование

  • Колекция для тестирования postman django picasso.postman_collection.json
  • PyTest автоматически запускается контейнер с тестоми эндпоинтов

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published