/shri-msk-2016-infrastructure

:performing_arts: Node.js & Infrastructure task at Yandex Frontend School

Primary LanguageJavaScript

shri-msk-2016-infrastructure

Build Status bitHound Overall Score

Запилил простое приложение, реализующее подсчёт площадей различных геометрических фигур: http://shri-msk-2016-infrastructure.herokuapp.com/

Развернуть приложение на локальном хосте:

$ git clone git@github.com:azat-io/shri-msk-2016-infrastructure.git
$ cd shri-msk-2016-infrastructure
$ npm install
$ npm run start

→ localhost:3000

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

Настроил линтеры: ESLint для проверки JavaScript кода и StyleLint для проверки CSS. Я решил не изобретать простой велосипед и использовать готовые конфиги для линтеров, которые использую практически во всех своих проектах: eslint-config-standard и stylelint-config-standard. В дополнение к линтерам также установил pre-commit, который не позволяет отправлять коммиты в репозиторий, пока не сработают успешно линтеры.

Для параллельного запуска двух линтеров используется npm-run-all. Также, кроме всего этого линтеры, в соответствии с заданием, используются в команде npm test в дополнение к юнит-тестам.

Прикрутил Travis CI. Настроил деплой ветки master репозитория в Heroku. Полёт нормальный.

При отправке пулл-реквестов автоматически прогоняются юнит-тесты.

Настроил хостинг на Heroku. Разобрался с логами сервиса. Логи содержат информацию о статусе приложения и о том, какие запросы оно получает, а также логи API. Благодаря этим самым логам отловил у себя глупую ошибку при деплое, связанную с тем, что babel-cli у меня был установлен глобально, также и запускался, и при деплое на Heroku следовало изменить команду для запуска приложения используя babel-cli из директории ./node_modules/.bin/.

Настроил облачный линтер BitHound. 😃

Также добавил интеграцию веб-приложения с сервисом мониторинга состояния сервера UpTime Robot.

Для написания тестов использовал набирающий популярность тест раннер AVA.

Написал 4 теста, по одному для каждой геометрический фигуры, используемой в приложении.

:bowtie: