diff --git a/client/.eslintcache b/client/.eslintcache
new file mode 100644
index 0000000..5422669
--- /dev/null
+++ b/client/.eslintcache
@@ -0,0 +1 @@
+[{"C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\index.js":"1","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\App.js":"2","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\reportWebVitals.js":"3","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Navbar\\Navbar.js":"4","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Navbar\\MenuItems.js":"5","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Register\\Register.js":"6","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Login\\Login.js":"7","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Home\\Home.js":"8","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Util\\Button.js":"9","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Class\\Class.js":"10"},{"size":613,"mtime":1615474800656,"results":"11","hashOfConfig":"12"},{"size":668,"mtime":1615570989606,"results":"13","hashOfConfig":"12"},{"size":375,"mtime":1615396420906,"results":"14","hashOfConfig":"12"},{"size":1110,"mtime":1615570470215,"results":"15","hashOfConfig":"12"},{"size":411,"mtime":1615474800655,"results":"16","hashOfConfig":"12"},{"size":1130,"mtime":1615479044482,"results":"17","hashOfConfig":"12"},{"size":944,"mtime":1615479021222,"results":"18","hashOfConfig":"12"},{"size":1878,"mtime":1615571248882,"results":"19","hashOfConfig":"12"},{"size":614,"mtime":1615478991709,"results":"20","hashOfConfig":"12"},{"size":1511,"mtime":1615572404265,"results":"21","hashOfConfig":"12"},{"filePath":"22","messages":"23","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},"2p51na",{"filePath":"25","messages":"26","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"27","messages":"28","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"29","messages":"30","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"31","messages":"32","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"33","messages":"34","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"35","usedDeprecatedRules":"24"},{"filePath":"36","messages":"37","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"38","usedDeprecatedRules":"24"},{"filePath":"39","messages":"40","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"41","messages":"42","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"43","messages":"44","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\index.js",[],["45","46"],"C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\App.js",["47"],"C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\reportWebVitals.js",[],"C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Navbar\\Navbar.js",[],"C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Navbar\\MenuItems.js",[],"C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Register\\Register.js",["48"],"import React, { useState } from 'react'\r\nimport './Register.css'\r\n\r\nconst Register = () => {\r\n return (\r\n
\r\n
\r\n
\r\n
Create your account
\r\n
\r\n
Have an account? Sign in.
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Register;","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Login\\Login.js",["49"],"import React, { useState } from 'react'\r\nimport './Login.css'\r\n\r\nconst Login = () => {\r\n return (\r\n \r\n
\r\n
\r\n
Sign in
\r\n
\r\n
Don't have an account? Register.
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Login;","C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Home\\Home.js",["50"],"C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Util\\Button.js",[],"C:\\Users\\Ryanh\\Desktop\\Side_projects\\chausters\\client\\src\\components\\Class\\Class.js",["51","52","53"],{"ruleId":"54","replacedBy":"55"},{"ruleId":"56","replacedBy":"57"},{"ruleId":"58","severity":1,"message":"59","line":7,"column":8,"nodeType":"60","messageId":"61","endLine":7,"endColumn":14},{"ruleId":"58","severity":1,"message":"62","line":1,"column":17,"nodeType":"60","messageId":"61","endLine":1,"endColumn":25},{"ruleId":"58","severity":1,"message":"62","line":1,"column":17,"nodeType":"60","messageId":"61","endLine":1,"endColumn":25},{"ruleId":"58","severity":1,"message":"62","line":1,"column":17,"nodeType":"60","messageId":"61","endLine":1,"endColumn":25},{"ruleId":"58","severity":1,"message":"62","line":1,"column":17,"nodeType":"60","messageId":"61","endLine":1,"endColumn":25},{"ruleId":"58","severity":1,"message":"63","line":5,"column":9,"nodeType":"60","messageId":"61","endLine":5,"endColumn":13},{"ruleId":"58","severity":1,"message":"64","line":5,"column":15,"nodeType":"60","messageId":"61","endLine":5,"endColumn":24},"no-native-reassign",["65"],"no-negated-in-lhs",["66"],"no-unused-vars","'Navbar' is defined but never used.","Identifier","unusedVar","'useState' is defined but never used.","'Link' is defined but never used.","'useParams' is defined but never used.","no-global-assign","no-unsafe-negation"]
\ No newline at end of file
diff --git a/client/package-lock.json b/client/package-lock.json
index 0e815b9..abe57d2 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -1659,6 +1659,25 @@
}
}
},
+ "@popperjs/core": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz",
+ "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA=="
+ },
+ "@restart/context": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz",
+ "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q=="
+ },
+ "@restart/hooks": {
+ "version": "0.3.26",
+ "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.26.tgz",
+ "integrity": "sha512-7Hwk2ZMYm+JLWcb7R9qIXk1OoUg1Z+saKWqZXlrvFwT3w6UArVNWgxYOzf+PJoK9zZejp8okPAKTctthhXLt5g==",
+ "requires": {
+ "lodash": "^4.17.20",
+ "lodash-es": "^4.17.20"
+ }
+ },
"@rollup/plugin-node-resolve": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz",
@@ -1936,6 +1955,11 @@
"@babel/types": "^7.3.0"
}
},
+ "@types/classnames": {
+ "version": "2.2.11",
+ "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.2.11.tgz",
+ "integrity": "sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw=="
+ },
"@types/eslint": {
"version": "7.2.6",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz",
@@ -1972,6 +1996,11 @@
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
"integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA=="
},
+ "@types/invariant": {
+ "version": "2.2.34",
+ "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.34.tgz",
+ "integrity": "sha512-lYUtmJ9BqUN688fGY1U1HZoWT1/Jrmgigx2loq4ZcJpICECm/Om3V314BxdzypO0u5PORKGMM6x0OXaljV1YFg=="
+ },
"@types/istanbul-lib-coverage": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz",
@@ -2037,11 +2066,34 @@
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.1.tgz",
"integrity": "sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw=="
},
+ "@types/prop-types": {
+ "version": "15.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
+ "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
+ },
"@types/q": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
},
+ "@types/react": {
+ "version": "17.0.3",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz",
+ "integrity": "sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg==",
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "@types/react-transition-group": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.1.tgz",
+ "integrity": "sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ==",
+ "requires": {
+ "@types/react": "*"
+ }
+ },
"@types/resolve": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
@@ -2050,6 +2102,11 @@
"@types/node": "*"
}
},
+ "@types/scheduler": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz",
+ "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA=="
+ },
"@types/source-list-map": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
@@ -2081,6 +2138,11 @@
"source-map": "^0.6.1"
}
},
+ "@types/warning": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
+ "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI="
+ },
"@types/webpack": {
"version": "4.41.26",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz",
@@ -2738,6 +2800,14 @@
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.2.tgz",
"integrity": "sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg=="
},
+ "axios": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
+ "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
+ "requires": {
+ "follow-redirects": "^1.10.0"
+ }
+ },
"axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
@@ -3296,6 +3366,11 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
+ "bootstrap": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz",
+ "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw=="
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -3684,6 +3759,11 @@
}
}
},
+ "classnames": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
+ "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
+ },
"clean-css": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
@@ -4447,6 +4527,11 @@
}
}
},
+ "csstype": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz",
+ "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g=="
+ },
"cyclist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
@@ -4776,6 +4861,15 @@
"utila": "~0.4"
}
},
+ "dom-helpers": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz",
+ "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==",
+ "requires": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
"dom-serializer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
@@ -6740,6 +6834,19 @@
"resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
"integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
},
+ "history": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
+ "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
+ "requires": {
+ "@babel/runtime": "^7.1.2",
+ "loose-envify": "^1.2.0",
+ "resolve-pathname": "^3.0.0",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0",
+ "value-equal": "^1.0.1"
+ }
+ },
"hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -6750,6 +6857,21 @@
"minimalistic-crypto-utils": "^1.0.1"
}
},
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ }
+ }
+ },
"hoopy": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
@@ -7222,6 +7344,14 @@
"side-channel": "^1.0.4"
}
},
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@@ -8747,6 +8877,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
+ "lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
"lodash._reinterpolate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
@@ -9001,6 +9136,15 @@
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
"integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="
},
+ "mini-create-react-context": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz",
+ "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==",
+ "requires": {
+ "@babel/runtime": "^7.12.1",
+ "tiny-warning": "^1.0.3"
+ }
+ },
"mini-css-extract-plugin": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz",
@@ -11147,6 +11291,22 @@
}
}
},
+ "prop-types-extra": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz",
+ "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==",
+ "requires": {
+ "react-is": "^16.3.2",
+ "warning": "^4.0.0"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ }
+ }
+ },
"proxy-addr": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
@@ -11330,6 +11490,31 @@
"whatwg-fetch": "^3.4.1"
}
},
+ "react-bootstrap": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.5.1.tgz",
+ "integrity": "sha512-jbJNGx9n4JvKgxlvT8DLKSeF3VcqnPJXS9LFdzoZusiZCCGoYecZ9qSCBH5n2A+kjmuura9JkvxI9l7HD+bIdQ==",
+ "requires": {
+ "@babel/runtime": "^7.4.2",
+ "@restart/context": "^2.1.4",
+ "@restart/hooks": "^0.3.21",
+ "@types/classnames": "^2.2.10",
+ "@types/invariant": "^2.2.33",
+ "@types/prop-types": "^15.7.3",
+ "@types/react": ">=16.9.35",
+ "@types/react-transition-group": "^4.4.0",
+ "@types/warning": "^3.0.0",
+ "classnames": "^2.2.6",
+ "dom-helpers": "^5.1.2",
+ "invariant": "^2.2.4",
+ "prop-types": "^15.7.2",
+ "prop-types-extra": "^1.1.0",
+ "react-overlays": "^5.0.0",
+ "react-transition-group": "^4.4.1",
+ "uncontrollable": "^7.0.0",
+ "warning": "^4.0.3"
+ }
+ },
"react-dev-utils": {
"version": "11.0.2",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.2.tgz",
@@ -11507,11 +11692,82 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz",
"integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA=="
},
+ "react-lifecycles-compat": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+ },
+ "react-overlays": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.0.0.tgz",
+ "integrity": "sha512-TKbqfAv23TFtCJ2lzISdx76p97G/DP8Rp4TOFdqM9n8GTruVYgE3jX7Zgb8+w7YJ18slTVcDTQ1/tFzdCqjVhA==",
+ "requires": {
+ "@babel/runtime": "^7.12.1",
+ "@popperjs/core": "^2.5.3",
+ "@restart/hooks": "^0.3.25",
+ "@types/warning": "^3.0.0",
+ "dom-helpers": "^5.2.0",
+ "prop-types": "^15.7.2",
+ "uncontrollable": "^7.0.0",
+ "warning": "^4.0.3"
+ }
+ },
"react-refresh": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
"integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg=="
},
+ "react-router": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz",
+ "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==",
+ "requires": {
+ "@babel/runtime": "^7.1.2",
+ "history": "^4.9.0",
+ "hoist-non-react-statics": "^3.1.0",
+ "loose-envify": "^1.3.1",
+ "mini-create-react-context": "^0.4.0",
+ "path-to-regexp": "^1.7.0",
+ "prop-types": "^15.6.2",
+ "react-is": "^16.6.0",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "path-to-regexp": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+ "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+ "requires": {
+ "isarray": "0.0.1"
+ }
+ },
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ }
+ }
+ },
+ "react-router-dom": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz",
+ "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==",
+ "requires": {
+ "@babel/runtime": "^7.1.2",
+ "history": "^4.9.0",
+ "loose-envify": "^1.3.1",
+ "prop-types": "^15.6.2",
+ "react-router": "5.2.0",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0"
+ }
+ },
"react-scripts": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.1.tgz",
@@ -11578,6 +11834,17 @@
"workbox-webpack-plugin": "5.1.4"
}
},
+ "react-transition-group": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz",
+ "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==",
+ "requires": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ }
+ },
"read-pkg": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
@@ -11948,6 +12215,11 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
},
+ "resolve-pathname": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
+ "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
+ },
"resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
@@ -13699,6 +13971,16 @@
"resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
},
+ "tiny-invariant": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz",
+ "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw=="
+ },
+ "tiny-warning": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
+ },
"tmpl": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
@@ -13881,6 +14163,17 @@
"is-typedarray": "^1.0.0"
}
},
+ "uncontrollable": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz",
+ "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==",
+ "requires": {
+ "@babel/runtime": "^7.6.3",
+ "@types/react": ">=16.9.11",
+ "invariant": "^2.2.4",
+ "react-lifecycles-compat": "^3.0.4"
+ }
+ },
"unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
@@ -14174,6 +14467,11 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "value-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
+ "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
+ },
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -14223,6 +14521,14 @@
"makeerror": "1.0.x"
}
},
+ "warning": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
+ "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"watchpack": {
"version": "1.7.5",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
diff --git a/client/package.json b/client/package.json
index bbe7714..5fc3037 100644
--- a/client/package.json
+++ b/client/package.json
@@ -6,7 +6,10 @@
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
+ "axios": "^0.21.1",
+ "bootstrap": "^4.6.0",
"react": "^17.0.1",
+ "react-bootstrap": "^1.5.1",
"react-dom": "^17.0.1",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.1",
diff --git a/client/src/App.js b/client/src/App.js
index ce594ac..a430245 100644
--- a/client/src/App.js
+++ b/client/src/App.js
@@ -1,8 +1,11 @@
import './App.css';
-import Register from './components/Register';
-import Login from './components/Login';
-import Home from './components/Home';
+import Register from './components/Register/Register';
+import Login from './components/Login/Login';
+import Home from './components/Home/Home';
+import Class from './components/Class/Class';
+import Navbar from "./components/Navbar/Navbar";
+
import {Switch, Route} from 'react-router-dom';
function App() {
@@ -12,17 +15,10 @@ function App() {
+
-import Navbar from "./components/Navbar/Navbar";
-import Register from "./components/Register";
-
-function App() {
- return (
-
-
-
- );
+ )
}
export default App;
diff --git a/client/src/components/Class/Class.css b/client/src/components/Class/Class.css
new file mode 100644
index 0000000..1653203
--- /dev/null
+++ b/client/src/components/Class/Class.css
@@ -0,0 +1,10 @@
+/* --------------- IMPORTS --------------- */
+@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro&display=swap');
+
+
+/* --------------- GENERAL --------------- */
+.classView {
+ width: 100vw;
+ height: 100vh;
+ font-family: 'Source Sans Pro', sans-serif;
+}
\ No newline at end of file
diff --git a/client/src/components/Class/Class.js b/client/src/components/Class/Class.js
new file mode 100644
index 0000000..e656c52
--- /dev/null
+++ b/client/src/components/Class/Class.js
@@ -0,0 +1,65 @@
+import React, { useState, Component } from 'react';
+import './Class.css';
+import 'bootstrap/dist/css/bootstrap.min.css';
+import axios from 'axios';
+import {Link, useParams} from 'react-router-dom';
+
+class Class extends Component {
+ //Constructor
+ constructor(props){
+ super(props);
+
+ this.state = {
+ className:"",
+ assignments:[{}],
+ grades: [{}]
+ };
+ }
+
+ //Component Life Cycle methods
+ componentDidMount() {
+ let id = this.props.match.params.id;
+ let api_key = "";
+
+ //Getting the specific class based on id
+ axios.get(`http://localhost:5000/getCourse/${api_key}/${id}`)
+ .then((response) => {
+ let course = response.data;
+
+ this.setState({className: course.name});
+ })
+ .catch((err) => {
+ console.log(err);
+ });
+
+ //Getting the class assignments
+
+ }
+
+ //Event Listeners
+
+ //Render
+ render() {
+
+ return (
+
+
+
+
+
+ {/* HEADING SECTION */}
+
+
{this.state.className}
+
+
+
+ {/* CLASS SECTION */}
+
+
+
+
+ )
+ }
+}
+
+export default Class;
\ No newline at end of file
diff --git a/client/src/components/Home.js b/client/src/components/Home.js
deleted file mode 100644
index 7fd9861..0000000
--- a/client/src/components/Home.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import React, { useState } from 'react'
-
-const Home = () => {
- return (
-
-
-
- )
-}
-
-export default Home;
\ No newline at end of file
diff --git a/client/src/components/Home/Home.js b/client/src/components/Home/Home.js
new file mode 100644
index 0000000..ee905c1
--- /dev/null
+++ b/client/src/components/Home/Home.js
@@ -0,0 +1,71 @@
+import React, { useState, Component } from 'react';
+import './home.css';
+import 'bootstrap/dist/css/bootstrap.min.css';
+import axios from 'axios';
+import {Link} from 'react-router-dom';
+
+class Home extends Component {
+ //Constructor
+ constructor(props){
+ super(props);
+
+ this.state = {
+ courses: [{}]
+ };
+ }
+
+ //Component Life Cycle methods
+ componentDidMount() {
+ let api_key = "";
+
+ axios.get(`http://localhost:5000/getCourses/${api_key}`)
+ .then((response) => {
+ let courses = response.data;
+
+ this.setState({courses: courses});
+ })
+ .catch((err) => {
+ console.log(err);
+ });
+ }
+
+ //Event Listeners
+
+ //Render
+ render() {
+
+ return (
+
+
+
+
+
+ {/* HEADING SECTION */}
+
+
Classes
+
+
+ {/* COURSES */}
+
+ {
+ this.state.courses.map((course) => {
+ return (
+
+ );
+ })
+ }
+
+
+
+
+
+
+ )
+ }
+}
+
+export default Home;
\ No newline at end of file
diff --git a/client/src/components/Home/home.css b/client/src/components/Home/home.css
new file mode 100644
index 0000000..6aa3c92
--- /dev/null
+++ b/client/src/components/Home/home.css
@@ -0,0 +1,42 @@
+/* --------------- IMPORTS --------------- */
+@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro&display=swap');
+
+
+/* --------------- GENERAL --------------- */
+.home{
+ width: 100vw;
+ height: 100vh;
+ font-family: 'Source Sans Pro', sans-serif;
+}
+
+/* HEADER */
+.headingWrapper {
+ border-radius: 50px;
+ background: radial-gradient(76.75% 76.75% at 50% 46.9%, rgba(255, 255, 255, 0.72) 0%, rgba(236, 236, 236, 0.684625) 58.96%, rgba(223, 223, 223, 0.66) 100%);
+}
+
+/* CLASSES */
+.classItem {
+ height:250px;
+ width:250px;
+ border-radius:50%;
+ background: radial-gradient(76.75% 76.75% at 50% 46.9%, rgba(255, 255, 255, 0.72) 0%, rgba(236, 236, 236, 0.684625) 58.96%, rgba(223, 223, 223, 0.66) 100%);
+}
+
+.classItem:hover {
+ background-color:#ffffff;
+ cursor:pointer;
+ color:black;
+}
+
+.className {
+ position:absolute;
+ top:50%;
+ left:50%;
+ transform:translate(-50%, -50%);
+}
+
+
+
+
+
diff --git a/client/src/components/Login.css b/client/src/components/Login/Login.css
similarity index 99%
rename from client/src/components/Login.css
rename to client/src/components/Login/Login.css
index 0661ea6..6f22747 100644
--- a/client/src/components/Login.css
+++ b/client/src/components/Login/Login.css
@@ -21,7 +21,6 @@
padding: 20px 80px 20px 80px;
border-radius: 50px;
background: radial-gradient(76.75% 76.75% at 50% 46.9%, rgba(255, 255, 255, 0.72) 0%, rgba(236, 236, 236, 0.684625) 58.96%, rgba(223, 223, 223, 0.66) 100%);
-
}
.login-form-input{
margin: 15px;
diff --git a/client/src/components/Login.js b/client/src/components/Login/Login.js
similarity index 100%
rename from client/src/components/Login.js
rename to client/src/components/Login/Login.js
diff --git a/client/src/components/Navbar/Navbar.js b/client/src/components/Navbar/Navbar.js
index 26ae117..937f780 100644
--- a/client/src/components/Navbar/Navbar.js
+++ b/client/src/components/Navbar/Navbar.js
@@ -1,6 +1,6 @@
import React, { Component } from "react";
import { MenuItems } from "./MenuItems";
-import { Button } from "../Button";
+import { Button } from "../Util/Button";
import "./Navbar.css";
class Navbar extends Component {
diff --git a/client/src/components/Register.css b/client/src/components/Register/Register.css
similarity index 100%
rename from client/src/components/Register.css
rename to client/src/components/Register/Register.css
diff --git a/client/src/components/Register.js b/client/src/components/Register/Register.js
similarity index 100%
rename from client/src/components/Register.js
rename to client/src/components/Register/Register.js
diff --git a/client/src/components/Button.css b/client/src/components/Util/Button.css
similarity index 100%
rename from client/src/components/Button.css
rename to client/src/components/Util/Button.css
diff --git a/client/src/components/Button.js b/client/src/components/Util/Button.js
similarity index 100%
rename from client/src/components/Button.js
rename to client/src/components/Util/Button.js
diff --git a/client/src/hoc/Auxiliary.js b/client/src/hoc/Auxiliary.js
new file mode 100644
index 0000000..384fec4
--- /dev/null
+++ b/client/src/hoc/Auxiliary.js
@@ -0,0 +1,5 @@
+const Aux = (props) => {
+ return props.chilren;
+}
+
+export default Aux;
\ No newline at end of file
diff --git a/server/index.js b/server/index.js
index 18d5fc0..78dd7dd 100644
--- a/server/index.js
+++ b/server/index.js
@@ -1,26 +1,46 @@
-require("dotenv").config();
-
+//IMPORTS
const express = require("express");
const axios = require("axios");
+const cors = require("cors");
require("dotenv").config();
+//APP Configuration
const app = express();
+app.use(cors());
const TOKEN = process.env.CANVAS_API;
-app.get("/getCourses", async (req, res) => {
- axios
- .get(
- `https://canvas.ucsd.edu/api/v1/courses?access_token=${TOKEN}&enrollment_state=active`
- )
- .then((response) => {
- res.send(response.data);
- })
- .catch((err) => console.log(err));
+app.get("/getCourses/:token", async (req, res) => {
+
+ let token = req.params.token;
+
+ axios
+ .get(
+ `https://canvas.ucsd.edu/api/v1/courses?access_token=${token}&enrollment_state=active`
+ )
+ .then((response) => {
+ res.send(response.data);
+ })
+ .catch((err) => console.log(err));
+});
+
+app.get("/getCourse/:token/:id", async(req, res) => {
+ let token = req.params.token;
+ let courseId = req.params.id;
+
+ axios
+ .get(
+ `https://canvas.ucsd.edu/api/v1/courses/${courseId}?access_token=${token}&enrollment_state=active`
+ )
+ .then((response) => {
+ res.send(response.data);
+ })
+ .catch((err) => console.log(err));
+
});
-app.get("/:courseId/getAssignments", async (req, res) => {
+app.get("/:token/:courseId/getAssignments", async (req, res) => {
const courseId = req.params.courseId;
axios
@@ -33,7 +53,7 @@ app.get("/:courseId/getAssignments", async (req, res) => {
.catch((err) => console.log(err));
});
-app.get("/:userId/getGrades/:courseId", async (req, res) => {
+app.get("/:token/:userId/getGrades/:courseId", async (req, res) => {
const userId = req.params.userId;
const courseId = parseInt(req.params.courseId);
@@ -54,8 +74,6 @@ app.get("/:userId/getGrades/:courseId", async (req, res) => {
});
const PORT = process.env.PORT || 5000;
-
-app.listen(PORT, () => console.log(`Server started on port ${PORT}`));
const dbUrl = process.env.DB_URL;
const mongoose = require("mongoose");
@@ -70,6 +88,4 @@ connection.once("open", () => {
console.log("Database connected");
});
-app.listen(3000, () => {
- console.log("APP IS LISTENING ON PORT 3000!");
-});
+app.listen(PORT, () => console.log(`Server started on port ${PORT}`));
diff --git a/server/package-lock.json b/server/package-lock.json
index 3c3f3c7..6399867 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -117,6 +117,15 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
+ "cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "requires": {
+ "object-assign": "^4",
+ "vary": "^1"
+ }
+ },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -396,6 +405,11 @@
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
diff --git a/server/package.json b/server/package.json
index 8488729..165e939 100644
--- a/server/package.json
+++ b/server/package.json
@@ -11,8 +11,7 @@
"license": "ISC",
"dependencies": {
"axios": "^0.21.1",
- "dotenv": "^8.2.0",
- "express": "^4.17.1"
+ "cors": "^2.8.5",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"mongoose": "^5.11.15"