diff --git a/.eslintrc b/.eslintrc
index f2cd57c6593787ae1426f70ff63ff5fa4deeaf8f..2a0497b593fb60dcd4dd91632ac94f98cb5fabce 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,8 +1,20 @@
 // Use this file as a starting point for your project's .eslintrc.
 // Copy this file, and add rule overrides as needed.
 {
-  "extends": ["standard", "standard-react"],
+  "extends": [
+    "airbnb",
+    "standard",
+    "standard-react"
+  ],
   "parser": "babel-eslint",
+  "react/sort-comp": [1, {
+    "order": [
+      "constructor",
+      "lifecycle",
+      "everything-else",
+      "render"
+    ]
+  }],
   "env": {
     "es6": true,
     "browser": true
diff --git a/.gitignore b/.gitignore
index 105a7dc05cf15bcb74041e2d680fe9a8d3d6b788..0e92e2df7c1766a1fded8cd713bf147a35047171 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@ npm-debug.log
 public/assets/*
 public/uploads/*
 pubsweet.log
+uploads/*
diff --git a/package.json b/package.json
index 70051025d001fff1d00dfd61900ca736c91ed4b3..0b1d6b3d1513948c9564ab571c6d92088b893f61 100644
--- a/package.json
+++ b/package.json
@@ -51,10 +51,13 @@
     "enzyme": "^2.7.1",
     "enzyme-to-json": "^1.4.5",
     "eslint": "^3.6.0",
+    "eslint-config-airbnb": "^14.1.0",
     "eslint-config-standard": "^6.2.0",
     "eslint-config-standard-react": "^4.2.0",
     "eslint-loader": "^1.6.0",
-    "eslint-plugin-promise": "^2.0.1",
+    "eslint-plugin-import": "^2.2.0",
+    "eslint-plugin-jsx-a11y": "3.0.2",
+    "eslint-plugin-promise": "^3.3.0",
     "eslint-plugin-react": "^6.4.1",
     "eslint-plugin-standard": "^2.0.0",
     "identity-obj-proxy": "^3.0.0",