JavaScript разработчик с профильным опытом
Ищем React-разработчика с опытом работы с canvas (fabric.js) и Redux, который готов взяться за интересный челлендж: поддержку и развитие существующего сервиса для автоматизации проектирования и расчета стоимости изделий из листового материала. Сервис помогает клиенту создавать чертежи изделий, выбирать материалы, технологические операции и на выходе рассчитывать стоимость проекта, формировать коммерческие предложения.
Наш текущий стек не самый свежий: у нас React 16.2.0, Redux 3.x, Fabric.js 1.6.7, старенький Webpack и прочие библиотеки в версиях нескольких летней давности.
Необходимо:Поддерживать и дорабатывать существующий функционал (пока всё работает в проде, бизнес не остановишь!).Постепенно переводить проект на более актуальные технологии, чтобы кодовая база стала современной и удобной в развитии.
Мы делаем:Canvas-проектирование (на fabric.js) — пользователь строит чертежи изделий, подбирает материалы и рассчитывает стоимость.React + Redux — для управления состоянием и маршрутизацией.Коммерческие предложения, подбор материалов, расчеты — всё это бизнес-логика, которую нужно рефакторить и развивать.
Что важно для нас:Умение разбираться в чужом коде и поддерживать старые версии библиотек.Понимание, как грамотно мигрировать и переписывать части приложения на современные решения без остановки работы сервиса.Опыт с canvas-библиотеками (fabric.js или аналогами).Понимание архитектуры React и Redux, желание прокачиваться на связке React + canvas.
Если тебе интересно развивать реально используемый продукт, который решает вполне осязаемые задачи и ты не боишься legacy-кода — мы будем рады обсудить детали. Для понимания специфики проекта:{ "license": "ISC", "scripts": { "build": "nps build.develop", "watch": "nps watch.develop", "serve": "nps serve.develop", "lint": "nps lint", "test": "nps test.coverage.changed" }, "dependencies": { "@hot-loader/react-dom": "^16.8.4", "babel-polyfill": "^6.20.0", "classnames": "^2.2.5", "copy-webpack-plugin": "^5.0.0", "@sentry/browser": "^5.6.3", "fabric": "1.6.7", "filesaver.js": "^0.2.0", "font-awesome": "^4.6.3", "handlebars": "^4.0.11", "html-webpack-harddisk-plugin": "^1.0.1", "html-webpack-plugin": "^3.2.0", "jquery": "^3.1.1", "jsondiffpatch": "^0.1.41", "less-loader": "^4.1.0", "lodash": "^4.17.11", "moment": "^2.12.0", "normalize.less": "^1.0.0", "nps": "^5.9.4", "prop-types": "^15.5.10", "react": "^16.2.0", "react-datepicker": "^1.8.0", "react-debounce-input": "^3.0.1", "react-dom": "^16.2.0", "react-hot-loader": "^4.8.0", "react-onclickoutside": "^6.7.1", "react-overlays": "^0.8.3", "popper.js": "^1.14.1", "react-popper": "^1.3.3", "react-redux": "^4.4.5", "react-refetch": "^1.0.0", "react-router-dom": "^4.1.2", "react-select": "^1.0.0-rc.10", "redux": "^3.1.4", "redux-devtools-extension": "^2.13.8", "redux-filterlist": "^0.3.0", "redux-form": "^7.0.3", "redux-logger": "^2.4.0", "redux-thunk": "^1.0.3", "require-from-string": "https://github.com/floatdrop/require-from-string/tarball/v1.1.0", "select2": "^4.0.3", "webpack-merge": "^4.2.1", "whatwg-fetch": "^1.0.0", "write-file-webpack-plugin": "^4.5.0" }, "devDependencies": { "@babel/core": "^7.3.4", "@babel/plugin-proposal-class-properties": "^7.3.4", "@babel/plugin-proposal-export-default-from": "^7.2.0", "@babel/plugin-proposal-object-rest-spread": "^7.3.4", "@babel/preset-env": "^7.3.4", "@babel/preset-flow": "^7.0.0", "@babel/preset-react": "^7.0.0", "assert": "^1.3.0", "autoprefixer": "^7.2.4", "babel-eslint": "^8.1.1", "babel-jest": "^20.0.3", "babel-loader": "^8.0.5", "babel-preset-stage-0": "^6.24.1", "base64-loader": "^1.0.0", "css-loader": "^0.28.8", "eslint": "^4.2.0", "eslint-plugin-flowtype": "^2.35.0", "eslint-plugin-jest": "^20.0.3", "eslint-plugin-react": "^7.1.0", "file-loader": "^1.1.11", "flow-bin": "^0.51.1", "flow-coverage-report": "^0.3.0", "gulp": "^3.9.0", "gulp-less": "^3.0.5", "gulp-util": "^3.0.7", "jest": "^20.0.4", "less": "^2.5.3", "less-plugin-clean-css": "^1.5.1", "mini-css-extract-plugin": "^0.4.0", "path": "^0.12.7", "popper.js": "^1.14.7", "postcss-calc": "^6.0.1", "postcss-import": "^11.0.0", "postcss-loader": "^2.0.10", "precss": "^2.0.0", "style-loader": "^0.19.1", "webpack": "^4.29.6", "webpack-cli": "^3.0.6", "webpack-dev-server": "^3.2.1", "webpack-stylish": "^0.1.8" }}Большая просьба с уважением относиться ко времени друг друга и не тратить его, если многое из package.json вам ничего не говорит. Пишите с описанием профильного опыта, примерами работ и желаемыми условиями сотрудничества.
Frontend