Code Monkey home page Code Monkey logo

bicycles's Introduction

Серивис аренды велосипедов

О приложении

Общая информация

Это backend для сервиса аренды велосипедов, который предоставляет RESTful API для выполнения основных операций.

Дополнительно

  • Написаны модульные тесты на pytest
  • Настроена генерация документации с использованием drf-yasg
  • Написан Dockerfile и docker-compose.yaml для контейнеризации
  • Для асинхронного выполнения задач используется Celery
  • реализована авторизаци пользователя с помощью JWT

Использованы технологии

  • Python 3.12
  • Django 5.0 и Django REST Framework 3.15
  • база данных - PostgreSQL
  • Docker для контейнеризации
  • Celery для асинхронного выполнения задач
  • Redis в качестве брокера сообщений
  • Flower для мониторинга задач в Celery
  • pytest для тестирования
  • drf-yasg для генерации документации
  • djoser + simple-jwt для аутентификации и генерации токенов

Файл .env

В файле содержаться значения переменных, которые используютс для корректной работы проекта

DJANGO_SETTINGS_MODULE - путь к файлу настроект Django

SECRET_KEY - секретный ключ проекта Django

POSTGRES_DB - имя базы данных PostgreSQL
POSTGRES_USER - имя пользователя базы данных PostgreSQL
POSTGRES_PASSWORD - пароль от базы данных
POSTGRES_HOST - хост базы данных
POSTGRES_PORT - порт базы данных

CELERY_BROKER_URL - адрес броккера для Celery
CELERY_RESULT_BACKEND - адрес для результатов задач Celery

Демонстрационные данные

Для демонстрации работы приложения предоставляется суперпользователь со следующими данными:

username: admin
password: admin_password

Доступные эндпоинты

Документация

Документация API доступна по адресу /swagger/ или /redoc/

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

Url: /auth/users/

Method: POST

Payload:

{
  "username": string,
  "email": string,
  "password": string
}

Example payload:

{
    "username": "test_user",
    "email": "[email protected]",
    "password": "test_password"
}

Answer:

{
    "username": string,
    "email": string,
    "id": integer
}

Авторизация пользователя(получение JWT)

Url: /auth/jwt/create/

Method: POST

Payload:

{
  "username": string,
  "email": string,
  "password": "string
}

Example payload:

{
    "username": "test_user",
    "email": "[email protected]",
    "password": "test_password"
}

Answer:

{
    "refresh": string,
    "access": string
}

Обновление JWT

Url: /auth/jwt/create/

Method: POST

Payload:

{
    "refresh": string
}

Example payload:

{
    "refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTcyMjQ0MjE4MSwiaWF0IjoxNzIyMzU1NzgxLCJqdGkiOiI4OGQ3NjEyZWE2NDI0YjQwYjkwMDg4MzA0MmNiNjFkNiIsInVzZXJfaWQiOjR9.q4qgtiKOZoW4syxtDeHxV8TQBsBNs7y1J3hza-S-wnw"
}

Answer:

{
    "access": string
}

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

Url: /bicycles/available/

Method: GET

Headers:

Authorization: JWT <access_jwt_token>

Answer:

[
  {
    "id": integer,
    "brand": string,
    "cost_per_hour": string,
    "is_rented": boolean
  },
  ...
]

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

Url: /bicycles/rent/

Method: POST

Headers:

Authorization: JWT <access_jwt_token>

Payload:

{
    "bicycle": integer
}

Example payload:

{
    "bicycle": 1
}

Answer:

{
    "id": integer,
    "cost": null,
    "paid": boolean,
    "renter": integer,
    "end_time": string,
    "start_time": string,
    "bicycle": integer
}

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

Url: /bicycles/return/

Method: POST

Headers:

Authorization: JWT <access_jwt_token>

Payload:

{}

Example payload:

{}

Answer:

{
    "success": "Bicycle returned",
    "rent": integer
}

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

Url: /bicycles/rent/

Method: GET

Headers:

Authorization: JWT <access_jwt_token>

Answer:

[
    {
        "id": integer,
        "cost": string,
        "paid": boolean,
        "renter": integer,
        "end_time": string,
        "start_time": string,
        "bicycle": integer
    },
    ...
]

Запуск приложения

Запуск через docker-compose

  1. Склонировать проект
git clone https://github.com/sitdoff/bicycles.git
  1. Перейти в папку проекта
cd bicycles
  1. Если есть необходимость, отредактировать файл .env
  2. Запустить создание контейнеров. При сборке образа проекта в базу будут загружены данныe для демонстрации.
docker compose up --build
  1. После окончания сборки проект будет доступер на http://localhost:8000

bicycles's People

Contributors

sitdoff avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.