Code Monkey home page Code Monkey logo

comments-service's Introduction

Ensi Backend Service Skeleton

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

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

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

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

  1. git clone [email protected]: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 [email protected]: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).

comments-service's People

Contributors

kyler1cartesis 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.