An open API service indexing awesome lists of open source software.

https://github.com/nikolaiprogramist/keep-code-test-assignment

Тестовое задание для KeepCode.
https://github.com/nikolaiprogramist/keep-code-test-assignment

api laravel-12 php8-2 rest

Last synced: 3 months ago
JSON representation

Тестовое задание для KeepCode.

Awesome Lists containing this project

README

          

# Тестовое задание на вакансию junior php laravel разработчика

[![Maintainability](https://qlty.sh/badges/d2b62576-cd0d-4d3e-8a39-84f720b19ecc/maintainability.svg)](https://qlty.sh/gh/NikolaiProgramist/projects/keep-code-test-assignment)

## Краткий обзор

Проект является **REST API** сервисом по покупке и аренде машин. Основные условия выполнены.
При просмотре машины, вы можете получить цены и характеристики.
Если же машина была приобретена каким либо из двух способов, то при просмотре машины, вы также получите `PIN-код`, для доступа к ней (гипотетический доступ). Данный `PIN-код` добавлен для демонстрации авторизации, так как его не могут видеть пользователи, которые не приобрели машину.
Также при проверке статуса вашей покупки, для неё генерируется `UUID`, который связывает между собой аккаунт пользователя, покупку, а также машину.
Данный `UUID` является подтверждением подлинности покупки.
Также в проекте присутствуют роли: `admin` и `user`. Admin может создавать новые машины и обновлять их.
Ниже вы можете посмотреть инструкции по запуску проекта, а также его схему.

## Установка

Клонирование репозитория:

```bash
git clone https://github.com/NikolaiProgramist/keep-code-test-assignment.git
cd keep-code-test-assignment
```

Создайте пустую базу данных `Mysql` и введите данные для подключения к ней в `.env.example` файле:

```php
DB_DATABASE=db_name
DB_USERNAME=username
DB_PASSWORD=password
```

Далее переименуйте файл `.env.example` в `.env`:

```bash
mv .env.example .env
```

Установите зависимости:

```bash
composer install
```

Накатите миграции:

```bash
php artisan migrate
```

Заполните таблицы тестовыми данными:

```bash
php artisan db:seed --class=UserSeeder
php artisan db:seed --class=CarSeeder
```

Запустите сервер:

```bash
php artisan serve
```

Запустите фоновые `schedule` задачи:

```bash
php artisan schedule:work
```

Это необходимо для автоматического удаления просроченных токенов,
а также удаления просроченной аренды.

После всего проделанного, вы сможете получить доступ к api на `localhost:8000/api/v1/`.

В базе данных присутствует администратор, вот его данные для аутентификации:

email: admin@mail.ru
password: test1234

> [!TIP]
> Вы также можете использовать коллекцию `postman` для тестирования.
> Она располагается в директории `files/`.

## Схема проекта

Маршруты:

![Маршруты](files/images/routes.png)

База данных:

![База данных](files/images/db.png)

Формула подсчёта лимита часов для продления аренды (в проекте используется лимит 24 часа):

![Формула лимита часов](files/images/formul.png)