Swagger UI: http://127.0.0.1:1337/v1/swagger/
Админка: http://127.0.0.1:1337/admin/
- Описание задачи
- Команды для локального запуска в Docker
- Примеры запросов к API
Реализовать 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 для обработки асинхронной задачию
- Раз в 6 часов в БД добавляется статистика по количеству велосипедов и общей стоимости аренды за последние 6 часов.
- Реализованы модульные тесты с использованием PyTest.
- Реализованы интеграционные тесты для проверки работы API.
- Используется Docker для контейнеризации приложения.
- CI/CD система для автоматического тестирования и развертывания.
- Реализована интеграция с Яндекс.Облаком для хранения данных.
- Backend: Django, Django Rest Framework
- Асинхронность: Celery
- База данных: PostgreSQL
- Тестирование: PyTest
- Контейнеризация: Docker
- CI/CD: GitHub Actions
- Облачные технологии: Яндекс.Облако
- Репозиторий с исходным кодом приложения.
- Документация по API (Swagger).
- Файл
docker-compose.yml
для развертывания всех сервисов. - Скрипт CI/CD для автоматического тестирования и деплоя.
- Инструкции по развертыванию и локальному запуску проекта.
- Примеры запросов для тестирования API.
# Создание сети:
docker network create external-net
# Создание контейнеров:
docker compose up -d --build
# Создание миграций:
docker exec -it backend poetry run python manage.py makemigrations
docker exec -it backend poetry run python manage.py migrate
# Создание суперюзера:
docker exec -it backend poetry run python manage.py createsuperuser
# Запуск тестов:
docker exec -it backend bash
poetry run pytest -v
# Удаление контейнеров:
docker compose down
Swagger: /v1/swagger/
{
"username": "severus",
"email": "severus@example.com",
"password": "severus_password",
"first_name": "severus",
"last_name": "snape"
}
{
"username": "harry",
"password": "bike_rent_password"
}
Response:
{
"refresh": "string",
"access": "string" — используется для авторизации
}
Без параметров даты по умолчанию — ближайшие сутки. Пример параметров дат:
- start_at_gte: 2024-06-13T10:30:10
- finish_at_gte: 2024-06-13T11:30:10
{
"user": "6c78fef1-4607-4d34-9042-7007760d62b3",
"bike": "66b47ced-e53e-4ac6-af6f-d154fccf6e79",
"start_at": "2024-08-11T10:00:00",
"finish_at": "2024-08-11T12:00:00"
}
{
"uid": "a03a068f-b878-4453-9cc9-9478621f7514"
}