## Фронтенд

Файлы находятся в каталоге проекта /resources/assets/.  
### Структура файлов:

* api — каталог с интерфейсами для бэкенда;  
* components — библиотека общих компонентов;  
* filters — фильтры;  
* images — ресурсы с изображениями;  
* lang — поддержка нескольких языков;  
* libs — библиотека методов расширения;  
* router — конфигурация маршрутизации;  
* store — настройки Vuex;  
* styles — библиотека стилей;  
* utils — методы запросов и общие методы, упакованные;  
* views — интерфейс для фронтенда.  
## Бэкенд

**Прочитайте внимательно документацию по разработке Laravel 5.5.**  
По умолчанию логин — admin@admin.com, пароль — 123456.  
Общие функции написаны в файле app/Helpers/helpers.php.

## Бэкенд  
### Создание Swagger-ui интерфейса документации

1. Выполните команду php artisan vendor:publish. Это действие публикует содержимое пакета.  
2. Напишите комментарии к интерфейсу.  
3. Сгенерируйте документацию с помощью команды php artisan l5-swagger:generate.  
4. Получите доступ к доменному имени вашего проекта +/api/documentation.

### Часто используемые команды

| Команда | Описание |
| --- | --- |
| php artisan make:controller Controller | Создаёт контроллер. |
| php artisan make:model Model | Создаёт модель. |
| php artisan make:migration create_name_table | Создаёт таблицу базы данных. |
| php artisan queue:table | Создаёт таблицы очередей (необходимо выполнить миграцию для активации). |
| php artisan make:job SendEmail | Создаёт класс задания. |
| php artisan make:request CreateArticleRequest | Создаёт запрос на создание статьи. |
| php artisan migrate:rollback | Откатывает последнюю миграцию. |
| php artisan migrate:reset | Откатывает все миграции.

## Часто используемые сторонние пакеты

#### Управление правами доступа
Spatie/laravel-permission.

#### Графический код подтверждения

Выполните команду composer require mews/captcha.  
Добавьте строку Mews\Captcha\CaptchaServiceProvider::class в массив провайдеров файла config/app.php.  
Также добавьте строку 'Captcha' => Mews\Captcha\Facades\Captcha::class в файл config/app.php в массив псевдонимов.  
Выполните php artisan vendor:publish для генерации файла config/captcha.php.

#### Пакет обработки изображений

Выполните composer require intervention/image.  
Добавьте строки Intervention\Image\ImageServiceProvider::class и 'Image' => Intervention\Image\Facades\Image::class в файл config/app.php в массивы провайдеров и псевдонимов соответственно.  
Затем выполните php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5" для генерации файла config/image.php.

Чтобы изменить размер указанного изображения, используйте следующий код:  
```
$img = Image::make('images/avatar.jpg')->resize(200, 200);
```

Для вставки водяного знака, расположенного в правом нижнем углу исходного изображения на расстоянии 10 пикселей от нижнего края и 15 пикселей от правого края, используйте этот код:  
```
$img->insert('images/watermark.png', 'bottom-right', 15, 10);
```

Чтобы сохранить обработанное изображение в другом месте, используйте код:  
```
$img->save('images/new_avatar.jpg');
```

Логику обработки можно выразить через цепочку выражений:  
```
$img = Image::make('images/avatar.jpg')->resize(200, 200)->insert('images/new_avatar.jpg', 'bottom-right', 15, 10);
```

#### Excel-пакет

Выполните composer require "maatwebsite/excel:~2.1.0".  
Добавьте Maatwebsite\Excel\ExcelServiceProvider::class в массив провайдеров файла config/app.php и 'Excel' => Maatwebsite\Excel\Facades\Excel::class в массив псевдонимов того же файла.  
После этого выполните php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" для создания файла config/excel.php.

#### PDF-пакет

Выполните composer require barryvdh/laravel-dompdf.  
В файл config/app.php добавьте Barryvdh\DomPDF\ServiceProvider::class в массив провайдеров и 'PDF' => Barryvdh\DomPDF\Facade::class в массив псевдонимов.  
Далее выполните php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider" для генерации файла config/dompdf.php.

#### HTML-фильтр

Выполните composer require mews/purifier.  
Добавьте Mews\Purifier\PurifierServiceProvider::class в массив провайдеров файла config/app.php и 'Purifier' => Mews\Purifier\Facades\Purifier::class в массив псевдонимов того же файла.  
Затем выполните php artisan vendor:publish --provider="Mews\Purifier\PurifierServiceProvider" для создания файла config/purifier.php.

Используйте функцию clean() для очистки данных:  
```
clean(Input::get('inputname'));
Purifier::clean(Input::get('inputname'));
```

#### Разрешение браузера на междоменные запросы

Выполните composer require barryvdh/laravel-cors.  
Добавьте Barryvdh\Cors\ServiceProvider::class в массив провайдеров файла config/app.php.  
Затем выполните php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider" для создания файла config/cors.php.

#### Определение местоположения по IP-адресу

Выполните composer require "zhuzhichao/ip-location-zh".  
Добавьте 'Ip'  => 'Zhuzhichao\IpLocationZh\Ip::class в массив псевдонимов файла config/app.php.  
Используйте Ip::find('171.12.10.156') или Ip::find(Request::getClientIp()) для получения информации об IP-адресе.

## Очередь Laravel

Конфигурация находится в файле config/queue.php. Можно выбрать драйвер очереди, например, sync, database, sqs или redis.  
Если вы используете драйвер database, необходимо выполнить команды php artisan queue:table и php aritsan migrate для создания таблицы.  
При использовании драйвера redis необходимо настроить раздел redis в файле config/databse.php, а также установить зависимость predis/predis.  
Команда php artisan make:job SendReminderEmail создаст файл SendReminderEmail.php в папке app/Jobs.