diff --git a/README.md b/README.md
index 60ecb8a3..a1b60f29 100644
--- a/README.md
+++ b/README.md
@@ -548,7 +548,7 @@ All work on SimpleLogin happens directly on GitHub.
### Run code locally
-The project uses Python 3.7+. First, install all dependencies by running the following command. Feel free to use `virtualenv` or similar tools to isolate development environment.
+The project uses Python 3.7+ and Node v10. First, install all dependencies by running the following command. Feel free to use `virtualenv` or similar tools to isolate development environment.
```bash
pip3 install -r requirements.txt
@@ -560,6 +560,12 @@ Then make sure all tests pass
pytest
```
+Install npm packages
+
+```bash
+cd static && npm install
+```
+
To run the code locally, please create a local setting file based on `example.env`:
```
diff --git a/static/package-lock.json b/static/package-lock.json
index 7c77bc5d..aa84bd2b 100644
--- a/static/package-lock.json
+++ b/static/package-lock.json
@@ -4,6 +4,63 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@sentry/browser": {
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-5.12.0.tgz",
+ "integrity": "sha512-e8uQML/1Wz2A6610yEvTdICf7L2IH15z6kcjwEqTsaD5uBCmpCiebGZABb45OSe9u8J0xccqi5G7M8lcxj1L7w==",
+ "requires": {
+ "@sentry/core": "5.12.0",
+ "@sentry/types": "5.12.0",
+ "@sentry/utils": "5.12.0",
+ "tslib": "^1.9.3"
+ }
+ },
+ "@sentry/core": {
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.12.0.tgz",
+ "integrity": "sha512-wY4rsoX71QsGpcs9tF+OxKgDPKzIFMRvFiSRcJoPMfhFsTilQ/CBMn/c3bDtWQd9Bnr/ReQIL6NbnIjUsPHA4Q==",
+ "requires": {
+ "@sentry/hub": "5.12.0",
+ "@sentry/minimal": "5.12.0",
+ "@sentry/types": "5.12.0",
+ "@sentry/utils": "5.12.0",
+ "tslib": "^1.9.3"
+ }
+ },
+ "@sentry/hub": {
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.12.0.tgz",
+ "integrity": "sha512-3k7yE8BEVJsKx8mR4LcI4IN0O8pngmq44OcJ/fRUUBAPqsT38jsJdP2CaWhdlM1jiNUzUDB1ktBv6/lY+VgcoQ==",
+ "requires": {
+ "@sentry/types": "5.12.0",
+ "@sentry/utils": "5.12.0",
+ "tslib": "^1.9.3"
+ }
+ },
+ "@sentry/minimal": {
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.12.0.tgz",
+ "integrity": "sha512-fk73meyz4k4jCg9yzbma+WkggsfEIQWI2e2TWfYsRGcrV3RnlSrXyM4D91/A8Bjx10SNezHPUFHjasjlHXOkyA==",
+ "requires": {
+ "@sentry/hub": "5.12.0",
+ "@sentry/types": "5.12.0",
+ "tslib": "^1.9.3"
+ }
+ },
+ "@sentry/types": {
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.12.0.tgz",
+ "integrity": "sha512-aZbBouBLrKB8wXlztriIagZNmsB+wegk1Jkl6eprqRW/w24Sl/47tiwH8c5S4jYTxdAiJk+SAR10AAuYmIN3zg=="
+ },
+ "@sentry/utils": {
+ "version": "5.12.0",
+ "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.12.0.tgz",
+ "integrity": "sha512-fYUadGLbfTCbs4OG5hKCOtv2jrNE4/8LHNABy9DwNJ/t5DVtGqWAZBnxsC+FG6a3nVqCpxjFI9AHlYsJ2wsf7Q==",
+ "requires": {
+ "@sentry/types": "5.12.0",
+ "tslib": "^1.9.3"
+ }
+ },
"font-awesome": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
@@ -36,6 +93,11 @@
"requires": {
"jquery": ">=1.12.0"
}
+ },
+ "tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ=="
}
}
}
diff --git a/static/package.json b/static/package.json
index dde929ff..05a5b9c0 100644
--- a/static/package.json
+++ b/static/package.json
@@ -16,6 +16,7 @@
},
"homepage": "https://github.com/simple-login/app#readme",
"dependencies": {
+ "@sentry/browser": "^5.12.0",
"font-awesome": "^4.7.0",
"intro.js": "^2.9.3",
"notie": "^4.3.1",
diff --git a/templates/base.html b/templates/base.html
index 5b262cfa..a240cbd7 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -53,10 +53,8 @@
-
+