*SWHWebAPI(https://archive.softwareheritage.org/api): enables to query the content of the SWH archive through HTTP requests and get responses in JSON or YAML.
*SWHWebbrowse(https://archive.softwareheritage.org/browse): graphical interface that eases the navigation in the SWH archive.
*lintingofcustomjavascriptcode(through[eslint](https://eslint.org/)) and stylesheets (through [stylelint](https://stylelint.io/))
*useof[es6](http://es6-features.org) syntax and advanced javascript feature like [async/await](https://javascript.info/async-await) or [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) thanks to [babel](https://babeljs.io/) (es6 to es5 transpiler and polyfills provider)
*assetsminification(using[UglifyJS](https://github.com/mishoo/UglifyJS2) and [cssnano](http://cssnano.co/)) but also dead code elimination for production use
##Howtobuildandrun
###Requirements
Firstyouwillneed[Python3](https://www.python.org) and a complete [swh development environment](https://forge.softwareheritage.org/source/swh-environment/) installed.
Tocompilethefrontendassets,youneedtohave[nodejs](https://nodejs.org/en/) > 4.x (preferably version 8.x) and [npm](https://www.npmjs.com/) (or [yarn](https://yarnpkg.com/en/)) installed. If you are on Debian, you can easily install an up to date nodejs/npm by following the instructions located at https://github.com/nodesource/distributions.
***run-django-webpack-dev-server**:Compileandservenotoptimized(withoutmignificationanddeadcodeelimination)frontendstaticassetsusing[webpack-dev-server](https://github.com/webpack/webpack-dev-server) and run django server with development settings. This is the recommended target to use when developing swh-web as it enables automatic reloading of backend and frontend part of the applications when modifying source files (*.py, *.js, *.css, *.html).
***run-django-webpack-prod**:Compileoptimized(withminificationanddeadcodeelimination)frontendstaticassetsusingwebpackandrundjangoserverwithproductionsettings.Thisisusefultotesttheapplicationsinproductionmode(withthedifferencethatstaticassetsareservedbydjango).Productionsettingsnotablyenableadvanceddjangocachingandyouwillneedtohave[memcached](https://memcached.org/) installed for that feature to work.
***run-gunicorn-server**:Runthewebapplicationswithproductionsettingsina[gunicorn](http://gunicorn.org/) worker as they will be in real production environment.