diff --git a/Dockerfile b/Dockerfile
index 3f8b92cff..0a4b22ab5 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM node:8.9
+FROM node:12.16.3
# Create app directory
WORKDIR /usr/app
diff --git a/README.md b/README.md
index 8e73b09f8..eead08e38 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@ Password: dvsa
2. Install dependencies using NPM
```javascript
-npm install
+docker-compose run app npm install
```
### Development
@@ -32,7 +32,7 @@ npm install
To run development mode run the following command inside the directory.
```javascript
-npm run start-dev
+docker-compose up
```
You can access the local server with the following url
@@ -55,7 +55,7 @@ Build production command will generate production ready assets and node js serve
The productions assets are located in the **dist/assets** folder and the server code is located in the **dist/server** folder.
```javascript
-npm run build-production
+docker-compose run app npm run build-production
```
**Run this command and commit changes before pushing to heroku.**
diff --git a/composer.json b/composer.json
index 98f8ca935..c4638d9b4 100644
--- a/composer.json
+++ b/composer.json
@@ -1,7 +1,7 @@
{
"name": "dvsa/front-end",
"description": "DVSA front-end assets used within all applications",
- "version": "1.3.28",
+ "version": "1.3.29",
"homepage": "https://github.com/dvsa/front-end",
"license": "MIT",
"authors": [
diff --git a/dist/assets/images/icons-plus-minus.svg b/dist/assets/images/icons-plus-minus.svg
index 25a5b25f0..33abd262a 100644
--- a/dist/assets/images/icons-plus-minus.svg
+++ b/dist/assets/images/icons-plus-minus.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/dist/assets/images/loading-spinner.gif b/dist/assets/images/loading-spinner.gif
index 156191258..77ec2db42 100644
Binary files a/dist/assets/images/loading-spinner.gif and b/dist/assets/images/loading-spinner.gif differ
diff --git a/dist/assets/images/logo_mot.gif b/dist/assets/images/logo_mot.gif
index ec7f15537..532709b36 100644
Binary files a/dist/assets/images/logo_mot.gif and b/dist/assets/images/logo_mot.gif differ
diff --git a/dist/assets/javascripts/development.bundle.js b/dist/assets/javascripts/development.bundle.js
index 4723829b5..89d85464b 100644
--- a/dist/assets/javascripts/development.bundle.js
+++ b/dist/assets/javascripts/development.bundle.js
@@ -1,10 +1,10 @@
/*!
*
* Name: dvsa-front-end/development
- * Version: 1.3.28
+ * Version: 1.3.29
* Contributors: Martin D Marriott , James Nelson , Tameem Safi
- * Timestamp: March 2nd 2020, 10:25:35 am
+ * Timestamp: May 26th 2020, 10:47:12 am
* Source: https://github.com/dvsa/front-end
*
*/
-webpackJsonp([1],{215:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.TEXT_TO_SPEECH_CONFIG={classes:{wrapper:"text-to-speech__wrapper",readerItem:"text-to-speech__item",readerItemHighlight:"text-to-speech__item--highlight",audioBtn:"text-to-speech__button",audioBtnPlaying:"text-to-speech__button--playing"},audioBtnText:"Play audio",dataAttributes:{readerID:"data-item-id"},DOMTargets:["p","ul"],buttonInnerHtml:"Play Audio\n "}},341:function(e,t,n){"use strict";n(342),n(343),n(344),n(345);var r=n(15),o=n(346);n(366),(0,r.domReady)(function(){(0,o.initModules)()})},342:function(e,t,n){(function(t){var n="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},r=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,r=n.Prism={manual:n.Prism&&n.Prism.manual,disableWorkerMessageHandler:n.Prism&&n.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof o?new o(e.type,r.util.encode(e.content),e.alias):"Array"===r.util.type(e)?e.map(r.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof l)){if(m&&_!=t.length-1){p.lastIndex=b;var E=p.exec(e);if(!E)break;for(var C=E.index+(h?E[1].length:0),T=E.index+E[0].length,O=_,P=b,S=t.length;O=P&&(++_,b=P);if(t[_]instanceof l)continue;x=O-_,w=e.slice(b,P),E.index-=b}else{p.lastIndex=0;var E=p.exec(w),x=1}if(E){h&&(g=E[1]?E[1].length:0);var C=E.index+g,E=E[0].slice(g),T=C+E.length,N=w.slice(0,C),k=w.slice(T),F=[_,x];N&&(++_,b+=N.length,F.push(N));var I=new l(u,f?r.tokenize(E,f):E,v,E,m);if(F.push(I),k&&F.push(k),Array.prototype.splice.apply(t,F),1!=x&&r.matchGrammar(e,t,n,_,b,!0,u),a)break}else if(a)break}}}}},tokenize:function(e,t,n){var o=[e],i=t.rest;if(i){for(var a in i)t[a]=i[a];delete t.rest}return r.matchGrammar(e,o,t,0,0,!1),o},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,i=0;o=n[i++];)o(t)}}},o=r.Token=function(e,t,n,r,o){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!o};if(o.stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===r.util.type(e))return e.map(function(n){return o.stringify(n,t,e)}).join("");var i={type:e.type,content:o.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if(e.alias){var a="Array"===r.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,a)}r.hooks.run("wrap",i);var s=Object.keys(i.attributes).map(function(e){return e+'="'+(i.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+i.tag+' class="'+i.classes.join(" ")+'"'+(s?" "+s:"")+">"+i.content+""+i.tag+">"},!n.document)return n.addEventListener?(r.disableWorkerMessageHandler||n.addEventListener("message",function(e){var t=JSON.parse(e.data),o=t.language,i=t.code,a=t.immediateClose;n.postMessage(r.highlight(i,r.languages[o],o)),a&&n.close()},!1),n.Prism):n.Prism;var i=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return i&&(r.filename=i.src,r.manual||i.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(r.highlightAll):window.setTimeout(r.highlightAll,16):document.addEventListener("DOMContentLoaded",r.highlightAll))),n.Prism}();void 0!==e&&e.exports&&(e.exports=r),void 0!==t&&(t.Prism=r),r.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/?[\da-z]{1,8};/i},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),r.languages.xml=r.languages.markup,r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},r.languages.css.atrule.inside.rest=r.languages.css,r.languages.markup&&(r.languages.insertBefore("markup","tag",{style:{pattern:/(