Therad445 / Wissen_Users

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ensi Backend Service Skeleton

Представляет из себя модифицированную под наши нужды экземпляр Laravel 9.2.0

Разворот непосредественно самого скелетона локально для разработки

Разворот сервис не отличается от разворота любого другого сервиса Ensi и описан тут

Разворот сервиса из Ensi Backend Service Skeleton

  1. git clone git@gitlab.com:greensight/ensi/backend-service-skeleton.git <new-repo-name>
  2. cd <new-repo-name>
  3. rm -rf .git && git init
  4. git remote add origin git@gitlab.com:greensight/<project>/<new-repo-name>.git
  5. Указываем в .env.example нужный APP_NAME
  6. Переимновываем/удаляем все заглушки вроде backend_skeleton в конфигах, документации и коде сервиса
  7. cp .env.example .env
  8. Указываем в .env доступы к БД
  9. Обновляем README.md
  10. composer i && npm i
  11. git add . && git commit -m "Initial commit" && git push -u origin master
  12. php artisan key:generate
  13. php artisan storage:link

Модификации относительно чистого Laravel

Структура сервиса

Подробно прочитать про отличия структуры сервиса от стандартного для Laravel вида можно почитать здесь

Готовый .gitignore

Внесены всякие pdf-ки, архивы, служебные файлы IDEшек и служебных инструментов

Timezone и Locale

config('app.timezone') = 'Europe/Moscow'; config('app.locale') = 'ru';

Дополнительный общий .env

Переменные окружения читаются не только из .env файла в корне проекта, но и из .env файла в директории на уровень выше, если он есть. Приоритет остается у переменных из локального файла. Упрощает управление переменными окружения на тестовом сервере с множеством площадок. Реализация в bootstrap/environment.php.

Добавлены lang файлы для русского языка

Для пагинации и валидации.

Git hooks

Хуки лежат в репозитории, в директории .git_hooks Устанавливаются автоматически через husky во время npm install

Управлять какие именно хуки выполняются и в каком порядке можно в файле .huskyrc.json, он лежит в репозитории. При необходимости его содержимое можно переопределить файлом .huskyrc с тем же форматом, он уже находится в .gitignore.

Ensi Storage

Для работы с файлами в Ensi добавлен пакет ensi/laravel-ensi-filesystem Для работы всего этого нужно

  1. Чтобы config/ensi-filesystem.php был выставлен корректный код текущего сервиса в качестве дефолтного
  2. В 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.

Установлены пакеты для работы с API

Пример описания API при помощи спецификации openapi 3 под требования генераторов и Ensi API Design Guide можно найти здесь

Подчищено всё ненужное из Laravel для чистоты и быстродействия

  • встроенный в Laravel фронтэнд
  • всё что касается User Management-а и сессий
  • AWS, PUSHER и прочее в конфигах
  • Broadcasting
  • большинство middleware подлюкченных по-умолчанию
  • часть Service Provider-ов закоментирована (если из-за этого что-то сломалось - раскоментируйте)

robots.txt

robots.txt изменен, чтобы по-умолчанию приложение запрещало роботам индексацию если они вдруг до него доберутся

ini_set('serialize_precision', -1)

Решает кейс

$price = ["price" => round("45.99", 2)]; 
echo json_encode($price);

{"price":45.990000000000002}

Выставляется в app/bootstrap.php

Ошибки валидации всегда возвращаются как json в нужном формате

Реализовано в App\Exceptions\Handlers.php

Лицензия

Открытая лицензия на право использования программы для ЭВМ Greensight Ecom Platform (GEP).

About

License:Other


Languages

Language:PHP 99.4%Language:Shell 0.6%Language:Dockerfile 0.0%