{ "name": "intranet", "version": "2.0.0", "private": true, "description": "A starter boilerplate for a universal web application with the best development experience and best practices.", "license": "MIT", "homepage": "https://github.com/forceoranj/intranet", "repository": "https://github.com/forceoranj/intranet", "bugs": "https://github.com/forceoranj/intranet/issues", "keywords": [ "starter", "boilerplate", "universal", "react", "react-hooks", "redux", "redux-toolkit", "react-router", "express", "webpack", "es6+", "typescript", "code-splitting", "react-refresh", "babel", "postcss", "jest", "unit-testing", "react-testing-library", "performance-optimization", "best-practices", "eslint", "stylelint", "prettier" ], "author": "Paris est Ludique (https://github.com/forceoranj)", "engines": { "node": ">=12", "npm": ">=6" }, "scripts": { "dev": "yarn dev:build && nodemon -r dotenv/config ./public/server", "ser": "yarn dev:build && node -r dotenv/config ./public/server", "dev:build": "cross-env NODE_ENV=development webpack --config ./webpack/server.config.ts", "local-start": "cross-env LOCAL=true yarn build && node -r dotenv/config ./public/server", "discord-register": "cross-env REGISTER_DISCORD_COMMANDS=true yarn build && node -r dotenv/config ./public/server", "start": "node -r dotenv/config ./public/server", "build": "run-s build:*", "build:server": "cross-env NODE_ENV=production webpack --config ./webpack/server.config.ts", "build:client": "cross-env NODE_ENV=production webpack --config ./webpack/client.config.ts", "analyze:server": "cross-env NODE_ENV=analyze webpack --config ./webpack/server.config.ts", "analyze:client": "cross-env NODE_ENV=analyze webpack --config ./webpack/client.config.ts", "lint": "run-s lint:*", "lint:code": "eslint --fix . --ext .js,.jsx,.ts,.tsx", "lint:type": "tsc", "lint:style": "stylelint --fix \"**/*.{css,scss,sass,ts,tsx}\"", "lint:format": "prettier -w . -u --loglevel silent", "test": "cross-env NODE_ENV=test jest --config ./jest/config.js", "test:watch": "yarn test --watch", "test:cov": "yarn test --coverage", "test:update": "yarn test -u", "prepare": "husky install" }, "lint-staged": { "*.{js,jsx,ts,tsx}": "eslint --fix", "*.{css,sass,ts,tsx}": "stylelint --fix", "**/*": "prettier -w -u" }, "browserslist": [ "> 1%", "last 2 versions" ], "dependencies": { "@babel/runtime": "^7.14.6", "@loadable/component": "^5.15.0", "@loadable/server": "^5.15.0", "@reduxjs/toolkit": "^1.6.0", "@sendgrid/mail": "^7.6.0", "@types/cookie-parser": "^1.4.2", "@types/detect-node": "^2.0.0", "@types/js-cookie": "^3.0.1", "@types/lodash": "^4.14.177", "@types/react-modal": "^3.13.1", "@types/serviceworker": "^0.0.32", "@types/web-push": "^3.3.2", "autoprefixer": "^10.2.6", "axios": "^0.21.1", "bcrypt": "^5.0.1", "body-parser": "^1.20.0", "chalk": "^4.1.1", "classnames": "^2.3.1", "compression": "^1.7.4", "connected-react-router": "^6.9.1", "cookie-parser": "^1.4.6", "core-js": "^3.15.2", "cross-env": "^7.0.3", "detect-node": "^2.1.0", "discord.js": "^14.7.1", "express": "^4.17.1", "fs": "^0.0.1-security", "google-auth-library": "^7.10.1", "google-spreadsheet": "^3.1.15", "googleapis": "^88.2.0", "helmet": "^4.6.0", "history": "^4.10.1", "hpp": "^0.2.3", "html-minifier": "^4.0.0", "https": "^1.0.0", "js-cookie": "^3.0.1", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.21", "morgan": "^1.10.0", "normalize.css": "^8.0.1", "process": "^0.11.10", "react": "^17.0.2", "react-dom": "^17.0.2", "react-helmet": "^6.1.0", "react-modal": "^3.14.4", "react-redux": "^7.2.4", "react-router": "^5.2.0", "react-router-config": "^5.1.1", "react-router-dom": "^5.3.0", "react-toastify": "^8.1.0", "readline": "^1.3.0", "redux-devtools-extension": "^2.13.9", "redux-thunk": "^2.4.2", "serialize-javascript": "^6.0.0", "serve-favicon": "^2.5.0", "web-push": "^3.4.5", "xml2js": "^0.4.23" }, "devDependencies": { "@babel/core": "^7.14.6", "@babel/plugin-transform-runtime": "^7.14.5", "@babel/preset-env": "^7.14.7", "@babel/preset-react": "^7.14.5", "@babel/preset-typescript": "^7.14.5", "@loadable/babel-plugin": "^5.13.2", "@loadable/webpack-plugin": "^5.15.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", "@testing-library/jest-dom": "^5.14.1", "@testing-library/react": "^12.0.0", "@types/bcrypt": "^5.0.0", "@types/compression": "^1.7.1", "@types/compression-webpack-plugin": "^6.0.6", "@types/css-minimizer-webpack-plugin": "^3.0.2", "@types/express": "4.17.1", "@types/google-spreadsheet": "^3.1.5", "@types/hpp": "^0.2.1", "@types/html-minifier": "^4.0.1", "@types/jest": "^26.0.24", "@types/jsonwebtoken": "^8.5.6", "@types/loadable__component": "^5.13.4", "@types/loadable__server": "^5.12.6", "@types/loadable__webpack-plugin": "^5.7.3", "@types/mini-css-extract-plugin": "^2.2.0", "@types/morgan": "^1.9.3", "@types/react-dom": "^17.0.8", "@types/react-helmet": "^6.1.1", "@types/react-router-config": "^5.0.2", "@types/react-router-dom": "^5.1.7", "@types/react-test-renderer": "^17.0.1", "@types/redux-mock-store": "^1.0.2", "@types/serialize-javascript": "^5.0.1", "@types/serve-favicon": "^2.5.3", "@types/terser-webpack-plugin": "^5.0.4", "@types/webpack-bundle-analyzer": "^4.4.1", "@types/webpack-manifest-plugin": "^3.0.5", "@types/webpack-node-externals": "^2.5.2", "@types/xml2js": "^0.4.11", "@typescript-eslint/eslint-plugin": "^4.28.2", "@typescript-eslint/parser": "^4.28.2", "babel-loader": "^8.2.2", "compression-webpack-plugin": "^8.0.1", "css-loader": "^5.2.6", "css-minimizer-webpack-plugin": "^3.0.2", "dotenv": "^16.4.5", "eslint": "^7.14.0", "eslint-config-airbnb": "^18.2.1", "eslint-config-prettier": "^8.3.0", "eslint-import-resolver-typescript": "^2.4.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-jest": "^24.3.6", "eslint-plugin-jest-dom": "^3.9.0", "eslint-plugin-jsx-a11y": "^6.4.1", "eslint-plugin-react": "^7.23.2", "eslint-plugin-react-hooks": "^4", "eslint-plugin-testing-library": "^4.9.0", "fork-ts-checker-webpack-plugin": "^6.2.12", "husky": "^7.0.1", "identity-obj-proxy": "^3.0.0", "image-minimizer-webpack-plugin": "^2.2.0", "imagemin-gifsicle": "^7.0.0", "imagemin-jpegtran": "^7.0.0", "imagemin-optipng": "^8.0.0", "imagemin-svgo": "^9.0.0", "jest": "^27.0.6", "lint-staged": "^11.0.0", "mini-css-extract-plugin": "2.2.0", "nodemon": "^2.0.9", "npm-run-all": "^4.1.5", "postcss": "^8.3.5", "postcss-loader": "^6.1.1", "prettier": "^2.3.2", "react-refresh": "^0.10.0", "react-test-renderer": "^17.0.2", "redux-mock-store": "^1.5.4", "sass": "^1.52.3", "sass-loader": "^12.1.0", "source-map-support": "^0.5.19", "stylelint": "^13.13.1", "stylelint-config-prettier": "^8.0.2", "stylelint-config-sass-guidelines": "^8.0.0", "stylelint-config-standard": "^22.0.0", "stylelint-order": "^4.1.0", "terser-webpack-plugin": "^5.1.4", "ts-jest": "^27.0.3", "ts-node": "^10.0.0", "typescript": "^4.3.5", "webpack": "^5.43.0", "webpack-bundle-analyzer": "^4.4.2", "webpack-cli": "^4.7.2", "webpack-dev-middleware": "^5.0.0", "webpack-hot-middleware": "^2.25.0", "webpack-manifest-plugin": "^3.1.1", "webpack-merge": "^5.8.0", "webpack-node-externals": "^3.0.0" } }