Представляет из себя модифицированную под наши нужды экземпляр Laravel 8.5.16
Разворот сервис не отличается от разворота любого другого сервиса Ensi и описан в документации
git clone [email protected]:greensight/ensi/backend-service-skeleton.git <new-repo-name>
cd <new-repo-name>
rm -rf .git && git init
git remote add origin [email protected]:greensight/<project>/<new-repo-name>.git
- Указываем в
.env.example
нужныйAPP_NAME
- Переимновываем/удаляем все заглушки вроде
backend_skeleton
в конфигах, документации и коде сервиса cp .env.example .env
- Указываем в .env доступы к БД
- Обновляем
README.md
composer i && npm i
git add . && git commit -m "Initial commit" && git push -u origin master
php artisan key:generate
php artisan storage:link
Подробно прочитать про отличия структуры сервиса от стандартного для Laravel вида можно почитать здесь
Внесены всякие pdf-ки, архивы, служебные файлы IDEшек и служебных инструментов
config('app.timezone') = 'Europe/Moscow'; config('app.locale') = 'ru';
Переменные окружения читаются не только из .env файла в корне проекта, но и из .env файла в директории на уровень выше, если он есть.
Приоритет остается у переменных из локального файла. Упрощает управление переменными окружения на тестовом сервере с множеством площадок.
Реализация в bootstrap/environment.php
.
Для пагинации и валидации.
Хуки лежат в репозитории, в директории .git_hooks Устанавливаются автоматически через husky во время npm install
Управлять какие именно хуки выполняются и в каком порядке можно в файле .huskyrc.json, он лежит в репозитории. При необходимости его содержимое можно переопределить файлом .huskyrc с тем же форматом, он уже находится в .gitignore.
Для работы с файлами в Ensi добавлен пакет ensi/laravel-ensi-filesystem Для работы всего этого нужно
- Чтобы config/ensi-filesystem.php был выставлен корректный код текущего сервиса в качестве дефолтного
- В config/filesystems.php в $ensiServicesCodes нужно задать список сервисов, с чьими хранилищами будет осуществляться взаимодействие (включая текущий).
composer.json: "barryvdh/laravel-ide-helper", "beyondcode/laravel-dump-server", "friendsofphp/php-cs-fixer", "php-parallel-lint/php-var-dump-check"
package.json: "husky" "@stoplight/spectral" "@openapitools/openapi-generator-cli // для ускорения openapi генераторов
Часть из них задействована в хуках
GET /health возвращает ОК с кодом 200.
- greensight/laravel-serve-swagger
- greensight/laravel-openapi-client-generator
- greensight/laravel-openapi-server-generator
- spatie/laravel-query-builder
Пример описания API при помощи спецификации openapi 3 под требования генераторов и Ensi API Design Guide можно найти здесь
- встроенный в Laravel фронтэнд
- всё что касается User Management-а и сессий
- AWS, PUSHER и прочее в конфигах
- Broadcasting
- большинство middleware подлюкченных по-умолчанию
- часть Service Provider-ов закоментирована (если из-за этого что-то сломалось - раскоментируйте)
robots.txt изменен, чтобы по-умолчанию приложение запрещало роботам индексацию если они вдруг до него доберутся
Решает кейс
$price = ["price" => round("45.99", 2)];
echo json_encode($price);
{"price":45.990000000000002}
Выставляется в app/bootstrap.php
Реализовано в App\Exceptions\Handlers.php
Открытая лицензия на право использования программы для ЭВМ Greensight Ecom Platform (GEP).