*swh-webAPI(https://archive.softwareheritage.org/api): enables to query the content of the archive through HTTP requests and get responses in JSON or YAML.
*swh-webbrowse(https://archive.softwareheritage.org/browse): graphical interface that eases the navigation in the 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/) >= 8.x and [yarn](https://yarnpkg.com/en/) installed. If you are on Debian stretch, you can easily install an up to date nodejs from the stretch-backports repository while packages for yarn can be installed by following [these instructions](https://yarnpkg.com/en/docs/install#debian-stable).
***run-django-webpack-devserver**: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.