diff --git a/packages/client/.babelrc b/packages/client/.babelrc
index 9b7679cd162ce56ac0dc6b7aafa4c7850fde00f3..8e05f6ce40a1827aba4a03391e136548a0589e5d 100644
--- a/packages/client/.babelrc
+++ b/packages/client/.babelrc
@@ -3,9 +3,5 @@
     "env",
     "react",
     "stage-2"
-  ],
-  "ignore": [
-    "node_modules/",
-    "../../node_modules/"
   ]
 }
diff --git a/packages/client/package.json b/packages/client/package.json
index 9ce174c3583c758b398e0c338ec536c7ba0f652d..080830eff1c9606afe492418560ebef7a3f5cf37 100644
--- a/packages/client/package.json
+++ b/packages/client/package.json
@@ -45,6 +45,7 @@
     "babel-preset-stage-2": "^6.24.1",
     "enzyme": "^2.9.1",
     "eslint": "^4.8.0",
+    "eslint-config-pubsweet": "^0.0.6",
     "eslint-config-standard": "^10.2.1",
     "eslint-plugin-import": "^2.7.0",
     "eslint-plugin-node": "^5.2.0",
@@ -57,7 +58,8 @@
     "nock": "^9.0.14",
     "react-dom": "^15.6.1",
     "react-test-renderer": "^15.6.1",
-    "redux-mock-store": "^1.3.0"
+    "redux-mock-store": "^1.3.0",
+    "stylelint-config-standard": "^18.0.0"
   },
   "peerDependencies": {
     "pubsweet-server": "^1.0.0"
@@ -74,9 +76,6 @@
     ],
     "globals": {
       "window": {}
-    },
-    "transformIgnorePatterns": [
-      "<rootDir>/node_modules/(?!pubsweet)"
-    ]
+    }
   }
 }
diff --git a/packages/client/src/helpers/withAuthsome.js b/packages/client/src/helpers/withAuthsome.js
index 01ab39ee4f3affd6f201aec3ad078177199952e0..e78bac5fa9dcdce2b312f6e4079b7fd3efb8e95c 100644
--- a/packages/client/src/helpers/withAuthsome.js
+++ b/packages/client/src/helpers/withAuthsome.js
@@ -1,11 +1,12 @@
 import Authsome from 'authsome'
 import { connect } from 'react-redux'
 import config from 'config'
+
 const mode = require(config.authsome.mode)
 
 // higher order component to inject authsome into a component
 export default function withAuthsome() {
-  const authsome = new Authsome({...config.authsome, mode}, {})
+  const authsome = new Authsome({ ...config.authsome, mode }, {})
 
   function mapState(state) {
     authsome.context = {
diff --git a/packages/components/config/test.js b/packages/components/config/test.js
new file mode 100644
index 0000000000000000000000000000000000000000..ae2c6d22b7b354573e11a376468f1a8d9518e0e8
--- /dev/null
+++ b/packages/components/config/test.js
@@ -0,0 +1,5 @@
+module.exports = {
+  'authsome': {
+    'mode': 'pubsweet-server/test/helpers/authsome_mode'
+  }
+}
diff --git a/packages/components/config/test.json b/packages/components/config/test.json
deleted file mode 100644
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..0000000000000000000000000000000000000000
--- a/packages/components/config/test.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
\ No newline at end of file
diff --git a/packages/components/package.json b/packages/components/package.json
index 7340334cb15fbafa0343fe938da51aeebde54aeb..105d27bdf9fe9504fd2e7df8c062af802c313bff 100644
--- a/packages/components/package.json
+++ b/packages/components/package.json
@@ -9,7 +9,7 @@
   "devDependencies": {
     "@pubsweet/logger": "^0.0.1",
     "babel-cli": "^6.26.0",
-    "babel-eslint": "^7.2.3",
+    "babel-eslint": "^8.0.3",
     "babel-loader": "^7.1.2",
     "babel-plugin-array-includes": "^2.0.3",
     "babel-preset-env": "^1.6.0",
@@ -19,7 +19,7 @@
     "config": "^1.28.1",
     "css-loader": "^0.28.7",
     "enzyme": "^2.9.1",
-    "eslint": "^3.19.0",
+    "eslint": "^4.13.0",
     "express": "^4.15.4",
     "file-loader": "^0.11.2",
     "font-awesome": "^4.7.0",
@@ -48,11 +48,15 @@
     "webpack": "^3.5.6"
   },
   "jest": {
-    "transformIgnorePatterns": [
-      "node_modules/(?!pubsweet-)"
-    ],
     "moduleNameMapper": {
       "\\.s?css$": "identity-obj-proxy"
-    }
+    },
+    "transformIgnorePatterns": [
+      "/node_modules/(?!pubsweet)"
+    ],
+    "testPathIgnorePatterns": [
+      "/node_modules",
+      "config/"
+    ]
   }
 }
diff --git a/packages/components/packages/FormGroup/FormGroup.jsx b/packages/components/packages/FormGroup/FormGroup.jsx
index 1ea98cebc8d805e9dbe32447991153e519c74273..89cf829a67479677d2a5f4453bad4390747645b8 100644
--- a/packages/components/packages/FormGroup/FormGroup.jsx
+++ b/packages/components/packages/FormGroup/FormGroup.jsx
@@ -4,6 +4,7 @@ import {FormGroup as BootstrapFormGroup, ControlLabel, FormControl, HelpBlock} f
 import Joi from 'joi-browser'
 import serverValidations from 'pubsweet-server/src/models/validations'
 import config from 'config'
+
 const validations = serverValidations(config)
 
 class FormGroup extends React.Component {
diff --git a/packages/components/packages/FormGroup/FormGroup.test.jsx b/packages/components/packages/FormGroup/FormGroup.test.jsx
index d2769160b2a8eed0f4ee86715ec3437eb9b8a810..705c570731b5d49a15f89fb9501ef4a7117a244c 100644
--- a/packages/components/packages/FormGroup/FormGroup.test.jsx
+++ b/packages/components/packages/FormGroup/FormGroup.test.jsx
@@ -8,10 +8,10 @@ jest.mock('joi-browser', () => require('joi'))
 
 describe('<FormGroup/>', () => {
   const makeWrapper = (props = {}) => shallow(<FormGroup
-      controlId={''}
-      label="Testing"
-      modelProperty="fragment.title"
-      {...props}
+    controlId={''}
+    label="Testing"
+    modelProperty="team.name"
+    {...props}
   />)
 
   it('shows error on invalid input', () => {
diff --git a/packages/components/packages/Navigation/Navigation.jsx b/packages/components/packages/Navigation/Navigation.jsx
index 5ac7076c9c68f73acdcb583f7e1f62fb037886d3..c1bbc0806cab70e406af57504fceb660e5f39892 100644
--- a/packages/components/packages/Navigation/Navigation.jsx
+++ b/packages/components/packages/Navigation/Navigation.jsx
@@ -6,6 +6,7 @@ import { Navbar, Nav, NavItem, NavbarBrand } from 'react-bootstrap'
 import Authorize from 'pubsweet-client/src/helpers/Authorize'
 import NavbarUser from './NavbarUser'
 
+
 const Navigation = ({ actions, currentUser }) => (
   <Navbar fluid>
     <Navbar.Header>
diff --git a/packages/components/packages/Navigation/Navigation.test.jsx b/packages/components/packages/Navigation/Navigation.test.jsx
index bac9e5d0c78f3a2bd996a020f58b61df4e82200d..ba01e3a822bfda3d0ace9e7927b7e8c7fe71e3a2 100644
--- a/packages/components/packages/Navigation/Navigation.test.jsx
+++ b/packages/components/packages/Navigation/Navigation.test.jsx
@@ -5,9 +5,9 @@ import Navigation from './Navigation'
 
 describe('<Navigation/>', () => {
   const makeWrapper = (props = {}) => shallow(<Navigation
-      actions={{logoutUser: jest.fn()}}
-      currentUser={{isAuthenticated: true, user: {}}}
-      {...props}
+    actions={{logoutUser: jest.fn()}}
+    currentUser={{isAuthenticated: true, user: {}}}
+    {...props}
   />)
 
   it('shows user nav when logged in', () => {
diff --git a/packages/db-manager/package.json b/packages/db-manager/package.json
index 4168079244a3c6ba9bae04f79d7cf0e41bc6e2ef..15b3e831d4eb20d7d833b4145a0a135301f50830 100644
--- a/packages/db-manager/package.json
+++ b/packages/db-manager/package.json
@@ -40,7 +40,7 @@
   "devDependencies": {
     "eslint": "^4.8.0",
     "eslint-config-prettier": "^2.6.0",
-    "eslint-config-standard": "^10.2.1",
+    "eslint-config-standard": "^11.0.0-beta.0",
     "eslint-plugin-import": "^2.7.0",
     "eslint-plugin-node": "^5.2.0",
     "eslint-plugin-promise": "^3.5.0",
diff --git a/packages/server/package.json b/packages/server/package.json
index 8337c30570af2939b41d87e14ef23eb6f756bb26..1694bf1fad3d84ee7a45498660db15e2d148457f 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -51,7 +51,7 @@
   },
   "devDependencies": {
     "eslint": "^4.0.0",
-    "eslint-config-standard": "^10.2.1",
+    "eslint-config-standard": "^11.0.0-beta.0",
     "eslint-plugin-import": "^2.7.0",
     "eslint-plugin-node": "^5.2.0",
     "eslint-plugin-promise": "^3.5.0",
diff --git a/yarn.lock b/yarn.lock
index 4fa09efc47be95f7697fe49452fc5632dab44766..671afd9d16dcd3a5b9a26eab96995f0bc5d4971b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -653,16 +653,7 @@ babel-core@^6.0.0, babel-core@^6.26.0:
     slash "^1.0.0"
     source-map "^0.5.6"
 
-babel-eslint@^7.2.3:
-  version "7.2.3"
-  resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827"
-  dependencies:
-    babel-code-frame "^6.22.0"
-    babel-traverse "^6.23.1"
-    babel-types "^6.23.0"
-    babylon "^6.17.0"
-
-babel-eslint@^8.0.1:
+babel-eslint@^8.0.1, babel-eslint@^8.0.3:
   version "8.0.3"
   resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.0.3.tgz#f29ecf02336be438195325cd47c468da81ee4e98"
   dependencies:
@@ -1303,7 +1294,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0:
     babylon "^6.18.0"
     lodash "^4.17.4"
 
-babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.26.0:
+babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
   dependencies:
@@ -1317,7 +1308,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-tr
     invariant "^2.2.2"
     lodash "^4.17.4"
 
-babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26.0:
+babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
   dependencies:
@@ -1330,7 +1321,7 @@ babylon@7.0.0-beta.31:
   version "7.0.0-beta.31"
   resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.31.tgz#7ec10f81e0e456fd0f855ad60fa30c2ac454283f"
 
-babylon@^6.17.0, babylon@^6.18.0:
+babylon@^6.18.0:
   version "6.18.0"
   resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
 
@@ -3422,6 +3413,15 @@ eslint-config-pubsweet@^0.0.5:
     eslint-config-standard "^10.2.1"
     eslint-config-standard-react "^5.0.0"
 
+eslint-config-pubsweet@^0.0.6:
+  version "0.0.6"
+  resolved "https://registry.yarnpkg.com/eslint-config-pubsweet/-/eslint-config-pubsweet-0.0.6.tgz#cb29cd241a33efab96f9ba8947d56f4b4b4cd5aa"
+  dependencies:
+    eslint-config-airbnb "^16.1.0"
+    eslint-config-prettier "^2.7.0"
+    eslint-config-standard "^10.2.1"
+    eslint-config-standard-react "^5.0.0"
+
 eslint-config-standard-jsx@4.0.2, eslint-config-standard-jsx@^4.0.0:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz#009e53c4ddb1e9ee70b4650ffe63a7f39f8836e1"
@@ -3436,6 +3436,10 @@ eslint-config-standard@10.2.1, eslint-config-standard@^10.2.1:
   version "10.2.1"
   resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591"
 
+eslint-config-standard@^11.0.0-beta.0:
+  version "11.0.0-beta.0"
+  resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-11.0.0-beta.0.tgz#f8afe69803d95c685a4b8392b8793188eb03cbb3"
+
 eslint-import-resolver-node@^0.2.0:
   version "0.2.3"
   resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c"
@@ -3568,47 +3572,7 @@ eslint-scope@^3.7.1:
     esrecurse "^4.1.0"
     estraverse "^4.1.1"
 
-eslint@^3.19.0, eslint@~3.19.0:
-  version "3.19.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc"
-  dependencies:
-    babel-code-frame "^6.16.0"
-    chalk "^1.1.3"
-    concat-stream "^1.5.2"
-    debug "^2.1.1"
-    doctrine "^2.0.0"
-    escope "^3.6.0"
-    espree "^3.4.0"
-    esquery "^1.0.0"
-    estraverse "^4.2.0"
-    esutils "^2.0.2"
-    file-entry-cache "^2.0.0"
-    glob "^7.0.3"
-    globals "^9.14.0"
-    ignore "^3.2.0"
-    imurmurhash "^0.1.4"
-    inquirer "^0.12.0"
-    is-my-json-valid "^2.10.0"
-    is-resolvable "^1.0.0"
-    js-yaml "^3.5.1"
-    json-stable-stringify "^1.0.0"
-    levn "^0.3.0"
-    lodash "^4.0.0"
-    mkdirp "^0.5.0"
-    natural-compare "^1.4.0"
-    optionator "^0.8.2"
-    path-is-inside "^1.0.1"
-    pluralize "^1.2.1"
-    progress "^1.1.8"
-    require-uncached "^1.0.2"
-    shelljs "^0.7.5"
-    strip-bom "^3.0.0"
-    strip-json-comments "~2.0.1"
-    table "^3.7.8"
-    text-table "~0.2.0"
-    user-home "^2.0.0"
-
-eslint@^4.0.0, eslint@^4.11.0, eslint@^4.5.0, eslint@^4.8.0:
+eslint@^4.0.0, eslint@^4.11.0, eslint@^4.13.0, eslint@^4.5.0, eslint@^4.8.0:
   version "4.13.0"
   resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.13.0.tgz#1991aa359586af83877bde59de9d41f53e20826d"
   dependencies:
@@ -3650,6 +3614,46 @@ eslint@^4.0.0, eslint@^4.11.0, eslint@^4.5.0, eslint@^4.8.0:
     table "^4.0.1"
     text-table "~0.2.0"
 
+eslint@~3.19.0:
+  version "3.19.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc"
+  dependencies:
+    babel-code-frame "^6.16.0"
+    chalk "^1.1.3"
+    concat-stream "^1.5.2"
+    debug "^2.1.1"
+    doctrine "^2.0.0"
+    escope "^3.6.0"
+    espree "^3.4.0"
+    esquery "^1.0.0"
+    estraverse "^4.2.0"
+    esutils "^2.0.2"
+    file-entry-cache "^2.0.0"
+    glob "^7.0.3"
+    globals "^9.14.0"
+    ignore "^3.2.0"
+    imurmurhash "^0.1.4"
+    inquirer "^0.12.0"
+    is-my-json-valid "^2.10.0"
+    is-resolvable "^1.0.0"
+    js-yaml "^3.5.1"
+    json-stable-stringify "^1.0.0"
+    levn "^0.3.0"
+    lodash "^4.0.0"
+    mkdirp "^0.5.0"
+    natural-compare "^1.4.0"
+    optionator "^0.8.2"
+    path-is-inside "^1.0.1"
+    pluralize "^1.2.1"
+    progress "^1.1.8"
+    require-uncached "^1.0.2"
+    shelljs "^0.7.5"
+    strip-bom "^3.0.0"
+    strip-json-comments "~2.0.1"
+    table "^3.7.8"
+    text-table "~0.2.0"
+    user-home "^2.0.0"
+
 esmangle-evaluator@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/esmangle-evaluator/-/esmangle-evaluator-1.0.1.tgz#620d866ef4861b3311f75766d52a8572bb3c6336"
@@ -10508,12 +10512,22 @@ stylelint-config-recommended@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-1.0.0.tgz#752c17fc68fa64cd5e7589e24f6e46e77e14a735"
 
+stylelint-config-recommended@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-2.0.0.tgz#560a028e81ea3ca8894b9a8eef4c0e05ac60e090"
+
 stylelint-config-standard@^17.0.0:
   version "17.0.0"
   resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-17.0.0.tgz#42103a090054ee2a3dde9ecaed55e5d4d9d059fc"
   dependencies:
     stylelint-config-recommended "^1.0.0"
 
+stylelint-config-standard@^18.0.0:
+  version "18.0.0"
+  resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-18.0.0.tgz#0d872b40fafdcddcf4188fb5b64ddb3887e8aefc"
+  dependencies:
+    stylelint-config-recommended "^2.0.0"
+
 stylelint@^8.2.0:
   version "8.3.1"
   resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-8.3.1.tgz#424c822f32c88e85025b55d72c7b98355e3fa6de"