From 92438baab6727eb295fc44506d333313d9c29061 Mon Sep 17 00:00:00 2001 From: Aymeric Bethencourt Date: Thu, 4 Jun 2020 19:26:43 +0200 Subject: [PATCH] Add backend --- .env | 1 - .eslintignore | 4 + .eslintrc.json | 101 + .gitignore | 37 +- .prettierignore | 6 + .prettierrc | 7 + .vscode/extensions.json | 31 + .vscode/launch.json | 15 + .vscode/my_command.js | 10 + .vscode/settings.json | 60 + .vscode/tezosacademy-snippets.code-snippets | 32 + README.md | 15 +- dist/worker.js | 1 - lerna.json | 5 + package.json | 96 +- public/character-bg 2.svg | 26 - public/elements/character-bg.svg | 26 - public/index.html | 22 - src/App/App.controller.tsx | 26 - src/App/App.style.tsx | 24 - src/App/App.view.tsx | 47 - src/Chapter/Chapter.controller.tsx | 59 - .../ChapterAbout/ChapterAbout.controller.tsx | 17 - .../ChapterAbout/ChapterAbout.controller.tsx | 17 - .../ChapterAbout/ChapterAbout.controller.tsx | 17 - src/ComingNext/ComingNext.style.tsx | 47 - src/ComingNext/ComingNext.view.tsx | 44 - src/Drawer/Drawer.actions.tsx | 14 - src/Drawer/Drawer.controller.tsx | 63 - src/Drawer/Drawer.reducers.tsx | 22 - src/Drawer/Drawer.styles/DrawerBackward.tsx | 411 - src/Drawer/Drawer.styles/DrawerForward.tsx | 411 - src/Hamburger/Hamburger.controller.tsx | 16 - .../HamburgerBottomBackward.tsx | 411 - .../HamburgerBottomForward.tsx | 411 - .../Hamburger.styles/HamburgerTopBackward.tsx | 411 - .../Hamburger.styles/HamburgerTopForward.tsx | 411 - src/Header/Header.controller.tsx | 7 - src/Header/Header.view.tsx | 28 - src/Homepage/Homepage.controller.tsx | 7 - src/Homepage/Homepage.style.tsx | 8 - src/NotFound/NotFound.style.tsx | 14 - src/NotFound/NotFound.view.tsx | 5 - src/api/.env.example | 8 + src/api/.gitignore | 9 + src/api/Dockerfile | 9 + src/api/coverage/clover.xml | 966 + src/api/coverage/coverage-final.json | 64 + src/api/coverage/lcov-report/base.css | 224 + .../coverage/lcov-report/block-navigation.js | 79 + src/api/coverage/lcov-report/favicon.png | Bin 0 -> 540 bytes src/api/coverage/lcov-report/index.html | 500 + src/api/coverage/lcov-report/prettify.css | 1 + src/api/coverage/lcov-report/prettify.js | 2 + .../lcov-report/sort-arrow-sprite.png | Bin 0 -> 209 bytes src/api/coverage/lcov-report/sorter.js | 170 + .../src/captcha/captcha.model.ts.html | 95 + .../captcha/helpers/captchaSolutions.ts.html | 392 + .../src/captcha/helpers/createCaptcha.ts.html | 158 + .../helpers/getRandomCaptchaPair.ts.html | 140 + .../src/captcha/helpers/index.html | 141 + .../lcov-report/src/captcha/index.html | 111 + .../addCommentView/addCommentView.ts.html | 161 + .../src/comment/addCommentView/index.html | 111 + .../src/comment/comment.model.ts.html | 92 + .../getCommentWithPublicUser.ts.html | 188 + .../getCommentWithPublicUser/index.html | 111 + .../getLatestCommentsWithPublicUsers.ts.html | 200 + .../index.html | 111 + .../lcov-report/src/comment/index.html | 111 + .../src/comment/newComment/index.html | 111 + .../src/comment/newComment/newComment.ts.html | 251 + .../lcov-report/src/constants.ts.html | 88 + .../lcov-report/src/helpers/clone.ts.html | 94 + .../lcov-report/src/helpers/dayjs.ts.html | 88 + .../src/helpers/firstError.ts.html | 100 + .../lcov-report/src/helpers/index.html | 155 + .../lcov-report/src/helpers/sanitize.ts.html | 116 + .../lcov-report/src/helpers/typegoose.ts.html | 97 + src/api/coverage/lcov-report/src/index.html | 110 + .../getLatestNotifications.ts.html | 146 + .../getLatestNotifications/index.html | 111 + .../lcov-report/src/notification/index.html | 111 + .../notification/notification.model.ts.html | 92 + .../resolvers/captcha/captcha.model.ts.html | 95 + .../captcha/helpers/captchaSolutions.ts.html | 391 + .../captcha/helpers/createCaptcha.ts.html | 154 + .../helpers/getRandomCaptchaPair.ts.html | 139 + .../src/resolvers/captcha/helpers/index.html | 140 + .../src/resolvers/captcha/index.html | 111 + .../addCommentView/addCommentView.ts.html | 163 + .../comment/addCommentView/index.html | 110 + .../resolvers/comment/comment.model.ts.html | 92 + .../comment/getComment/getComment.ts.html | 184 + .../resolvers/comment/getComment/index.html | 110 + .../getCommentWithPublicUser.ts.html | 187 + .../getCommentWithPublicUser/index.html | 110 + .../getLatestComments.ts.html | 196 + .../comment/getLatestComments/index.html | 110 + .../getLatestCommentsWithPublicUsers.ts.html | 196 + .../index.html | 110 + .../src/resolvers/comment/index.html | 111 + .../resolvers/comment/newComment/index.html | 110 + .../comment/newComment/newComment.ts.html | 247 + .../src/resolvers/limit/rateLimit/index.html | 110 + .../limit/rateLimit/rateLimit.ts.html | 151 + .../getLatestNotifications.ts.html | 142 + .../getLatestNotifications/index.html | 110 + .../src/resolvers/notification/index.html | 111 + .../notification/notification.model.ts.html | 92 + .../src/resolvers/quota/rateLimit/index.html | 110 + .../quota/rateLimit/rateLimit.ts.html | 154 + .../changePassword/changePassword.ts.html | 178 + .../resolvers/user/changePassword/index.html | 110 + .../forgotPassword/forgotPassword.ts.html | 196 + .../resolvers/user/forgotPassword/index.html | 110 + .../user/getPublicUser/getPublicUser.ts.html | 160 + .../resolvers/user/getPublicUser/index.html | 110 + .../user/helpers/authenticate.ts.html | 154 + .../user/helpers/getSignedJwt.ts.html | 181 + .../src/resolvers/user/helpers/index.html | 215 + .../user/helpers/matchPassword.ts.html | 115 + .../resolvers/user/helpers/rateLimit.ts.html | 163 + .../helpers/sendEmailForgotPassword.ts.html | 139 + .../user/helpers/sendEmailVerifyEmail.ts.html | 139 + .../user/helpers/verifyCaptcha.ts.html | 151 + .../user/helpers/verifyRecaptchaToken.ts.html | 151 + .../user/helpers/verifySignedJwt.ts.html | 169 + .../lcov-report/src/resolvers/user/index.html | 111 + .../src/resolvers/user/login/index.html | 110 + .../src/resolvers/user/login/login.ts.html | 205 + .../user/resendEmailVerification/index.html | 110 + .../resendEmailVerification.ts.html | 166 + .../resolvers/user/resetPassword/index.html | 110 + .../user/resetPassword/resetPassword.ts.html | 208 + .../src/resolvers/user/signUp/index.html | 110 + .../src/resolvers/user/signUp/signUp.ts.html | 226 + .../src/resolvers/user/user.model.ts.html | 95 + .../src/resolvers/user/verifyEmail/index.html | 110 + .../user/verifyEmail/verifyEmail.ts.html | 187 + .../lcov-report/src/resolvers/vote/index.html | 111 + .../src/resolvers/vote/sendVote/index.html | 110 + .../resolvers/vote/sendVote/sendVote.ts.html | 331 + .../src/resolvers/vote/vote.model.ts.html | 92 + .../src/shared/captcha/Captcha.ts.html | 250 + .../src/shared/captcha/CaptchaFor.ts.html | 91 + .../lcov-report/src/shared/captcha/index.html | 125 + .../src/shared/comment/AddCommentView.ts.html | 112 + .../shared/comment/AddCommentViewArgs.ts.html | 106 + .../src/shared/comment/Comment.ts.html | 367 + .../src/shared/comment/CommentStatus.ts.html | 94 + .../src/shared/comment/CommentType.ts.html | 94 + .../src/shared/comment/GetComment.ts.html | 136 + .../GetCommentWithPublicUserArgs.ts.html | 106 + .../shared/comment/GetLatestComments.ts.html | 145 + ...tLatestCommentsWithPublicUsersArgs.ts.html | 109 + .../shared/comment/ModerationStatus.ts.html | 94 + .../src/shared/comment/NewComment.ts.html | 196 + .../src/shared/comment/NewCommentArgs.ts.html | 166 + .../lcov-report/src/shared/comment/index.html | 200 + .../src/shared/limit/Limit.ts.html | 169 + .../lcov-report/src/shared/limit/index.html | 110 + .../src/shared/mongo/ResponseError.ts.html | 115 + .../lcov-report/src/shared/mongo/index.html | 110 + .../shared/notification/Notification.ts.html | 247 + .../notification/NotificationType.ts.html | 100 + .../shared/notification/TargetType.ts.html | 97 + .../src/shared/notification/index.html | 140 + .../src/shared/quota/Quota.ts.html | 187 + .../src/shared/quota/QuotaType.ts.html | 94 + .../lcov-report/src/shared/quota/index.html | 125 + .../src/shared/user/ChangePassword.ts.html | 127 + .../shared/user/ChangePasswordArgs.ts.html | 121 + .../src/shared/user/ForgotPassword.ts.html | 121 + .../shared/user/ForgotPasswordArgs.ts.html | 115 + .../src/shared/user/GetPublicUser.ts.html | 121 + .../src/shared/user/GetPublicUserArgs.ts.html | 103 + .../src/shared/user/IsEqualTo.ts.html | 154 + .../lcov-report/src/shared/user/Login.ts.html | 151 + .../src/shared/user/LoginArgs.ts.html | 130 + .../src/shared/user/PublicUser.ts.html | 145 + .../src/shared/user/ResetPassword.ts.html | 136 + .../src/shared/user/ResetPasswordArgs.ts.html | 130 + .../lcov-report/src/shared/user/Role.ts.html | 91 + .../src/shared/user/SignUp.ts.html | 184 + .../src/shared/user/SignUpArgs.ts.html | 145 + .../lcov-report/src/shared/user/User.ts.html | 217 + .../src/shared/user/UserRole.ts.html | 91 + .../src/shared/user/VerifyEmail.ts.html | 109 + .../src/shared/user/VerifyEmailArgs.ts.html | 103 + .../lcov-report/src/shared/user/index.html | 260 + .../src/shared/vote/SendVote.ts.html | 127 + .../lcov-report/src/shared/vote/Vote.ts.html | 178 + .../src/shared/vote/VoteDirection.ts.html | 91 + .../src/shared/vote/VoteUpArgs.ts.html | 121 + .../lcov-report/src/shared/vote/index.html | 140 + .../src/test/createTestUser.ts.html | 250 + .../src/test/deleteTestUser.ts.html | 121 + .../coverage/lcov-report/src/test/index.html | 140 + .../lcov-report/src/test/mockConnect.ts.html | 109 + .../lcov-report/src/test/sleep.ts.html | 88 + .../changePassword/changePassword.ts.html | 191 + .../src/user/changePassword/index.html | 111 + .../forgotPassword/forgotPassword.ts.html | 197 + .../src/user/forgotPassword/index.html | 111 + .../user/getPublicUser/getPublicUser.ts.html | 161 + .../src/user/getPublicUser/index.html | 111 + .../src/user/helpers/authenticate.ts.html | 155 + .../src/user/helpers/getSignedJwt.ts.html | 185 + .../lcov-report/src/user/helpers/index.html | 231 + .../src/user/helpers/matchPassword.ts.html | 110 + .../src/user/helpers/rateLimit.ts.html | 167 + .../helpers/sendEmailForgotPassword.ts.html | 140 + .../user/helpers/sendEmailVerifyEmail.ts.html | 140 + .../src/user/helpers/verifyCaptcha.ts.html | 146 + .../user/helpers/verifyRecaptchaToken.ts.html | 146 + .../src/user/helpers/verifySignedJwt.ts.html | 167 + .../coverage/lcov-report/src/user/index.html | 111 + .../lcov-report/src/user/login/index.html | 111 + .../lcov-report/src/user/login/login.ts.html | 200 + .../user/resendEmailVerification/index.html | 111 + .../resendEmailVerification.ts.html | 167 + .../src/user/resetPassword/index.html | 111 + .../user/resetPassword/resetPassword.ts.html | 212 + .../lcov-report/src/user/signUp/index.html | 111 + .../src/user/signUp/signUp.ts.html | 221 + .../lcov-report/src/user/user.model.ts.html | 95 + .../src/user/verifyEmail/index.html | 111 + .../src/user/verifyEmail/verifyEmail.ts.html | 203 + .../coverage/lcov-report/src/vote/index.html | 111 + .../lcov-report/src/vote/sendVote/index.html | 111 + .../src/vote/sendVote/sendVote.ts.html | 317 + .../lcov-report/src/vote/vote.model.ts.html | 92 + src/api/coverage/lcov.info | 1469 ++ src/api/error.log | 160 + src/api/jest-mongodb-config.js | 12 + src/api/jest.config.js | 9 + src/api/kubernetes.json | 29 + src/api/package.json | 65 + src/api/src/constants.ts | 3 + src/api/src/error.ts | 14 + src/api/src/global.d.ts | 1 + src/api/src/helpers/clone.ts | 5 + src/api/src/helpers/dayjs.ts | 3 + src/api/src/helpers/firstError.spec.ts | 45 + src/api/src/helpers/firstError.ts | 7 + src/api/src/helpers/toPublicUser.ts | 11 + src/api/src/helpers/typegoose.ts | 6 + src/api/src/index.ts | 51 + src/api/src/kubernetes.json | 23 + src/api/src/logger.ts | 42 + .../captcha/helpers/captchaSolutions.ts | 104 + .../captcha/helpers/createCaptcha.spec.ts | 45 + .../captcha/helpers/createCaptcha.ts | 25 + .../helpers/getRandomCaptchaPair.spec.ts | 17 + .../captcha/helpers/getRandomCaptchaPair.ts | 20 + .../quota/rateLimit/rateLimit.spec.ts | 52 + .../resolvers/quota/rateLimit/rateLimit.ts | 26 + .../changePassword/changePassword.spec.ts | 68 + .../user/changePassword/changePassword.ts | 33 + .../forgotPassword/forgotPassword.spec.ts | 119 + .../user/forgotPassword/forgotPassword.ts | 42 + .../user/getPublicUser/getPublicUser.spec.ts | 59 + .../user/getPublicUser/getPublicUser.ts | 27 + .../user/helpers/authenticate.spec.ts | 115 + .../resolvers/user/helpers/authenticate.ts | 25 + .../user/helpers/getSignedJwt.spec.ts | 41 + .../resolvers/user/helpers/getSignedJwt.ts | 34 + .../user/helpers/matchPassword.spec.ts | 25 + .../resolvers/user/helpers/matchPassword.ts | 12 + .../helpers/sendEmailForgotPassword.spec.ts | 40 + .../user/helpers/sendEmailForgotPassword.ts | 20 + .../user/helpers/sendEmailVerifyEmail.spec.ts | 38 + .../user/helpers/sendEmailVerifyEmail.ts | 20 + .../user/helpers/verifyCaptcha.spec.ts | 92 + .../resolvers/user/helpers/verifyCaptcha.ts | 24 + .../user/helpers/verifyRecaptchaToken.spec.ts | 48 + .../user/helpers/verifyRecaptchaToken.ts | 24 + .../user/helpers/verifySignedJwt.spec.ts | 39 + .../resolvers/user/helpers/verifySignedJwt.ts | 30 + .../src/resolvers/user/login/login.spec.ts | 106 + src/api/src/resolvers/user/login/login.ts | 47 + .../resendEmailVerification.spec.ts | 61 + .../resendEmailVerification.ts | 30 + .../user/resetPassword/resetPassword.spec.ts | 110 + .../user/resetPassword/resetPassword.ts | 43 + .../src/resolvers/user/signUp/signUp.spec.ts | 95 + src/api/src/resolvers/user/signUp/signUp.ts | 52 + .../user/verifyEmail/verifyEmail.spec.ts | 50 + .../resolvers/user/verifyEmail/verifyEmail.ts | 36 + src/api/src/router.ts | 28 + src/api/src/sanitize.ts | 10 + src/api/src/shared/captcha/Captcha.ts | 57 + src/api/src/shared/captcha/CaptchaFor.ts | 4 + src/api/src/shared/captcha/CaptchaPair.ts | 6 + src/api/src/shared/captcha/CaptchaSolution.ts | 1 + src/api/src/shared/mongo/DeleteRes.ts | 5 + src/api/src/shared/mongo/ResponseError.ts | 12 + src/api/src/shared/mongo/UpdateRes.ts | 13 + src/api/src/shared/quota/Quota.ts | 36 + src/api/src/shared/quota/QuotaRates.ts | 9 + src/api/src/shared/quota/QuotaType.ts | 8 + src/api/src/shared/user/ChangePassword.ts | 16 + src/api/src/shared/user/ForgotPassword.ts | 18 + src/api/src/shared/user/GetPublicUser.ts | 14 + src/api/src/shared/user/IsEqualTo.ts | 25 + src/api/src/shared/user/Jwt.ts | 1 + src/api/src/shared/user/JwtDecoded.ts | 9 + src/api/src/shared/user/JwtPayload.ts | 8 + src/api/src/shared/user/Login.ts | 29 + src/api/src/shared/user/PublicUser.ts | 25 + src/api/src/shared/user/ResetPassword.ts | 19 + src/api/src/shared/user/SignUp.ts | 40 + src/api/src/shared/user/User.ts | 35 + src/api/src/shared/user/UserRole.ts | 4 + src/api/src/shared/user/VerifyEmail.ts | 10 + src/api/src/test/createTestUser.ts | 57 + src/api/src/test/deleteTestUser.ts | 14 + src/api/src/test/mockConnect.ts | 10 + src/api/src/test/sleep.ts | 3 + src/api/tsconfig.json | 33 + src/api/yarn.lock | 3534 ++++ src/frontend/.env.example | 3 + src/frontend/.gitignore | 24 + src/frontend/Dockerfile | 5 + src/frontend/nginx.conf | 123 + src/frontend/package.json | 83 + src/frontend/public/captchas/0.png | Bin 0 -> 24633 bytes src/frontend/public/captchas/1.png | Bin 0 -> 23613 bytes src/frontend/public/captchas/10.png | Bin 0 -> 22898 bytes src/frontend/public/captchas/11.png | Bin 0 -> 20733 bytes src/frontend/public/captchas/12.png | Bin 0 -> 18283 bytes src/frontend/public/captchas/13.png | Bin 0 -> 18443 bytes src/frontend/public/captchas/14.png | Bin 0 -> 20909 bytes src/frontend/public/captchas/15.png | Bin 0 -> 23254 bytes src/frontend/public/captchas/16.png | Bin 0 -> 20530 bytes src/frontend/public/captchas/17.png | Bin 0 -> 24432 bytes src/frontend/public/captchas/18.png | Bin 0 -> 18383 bytes src/frontend/public/captchas/19.png | Bin 0 -> 20933 bytes src/frontend/public/captchas/2.png | Bin 0 -> 20374 bytes src/frontend/public/captchas/20.png | Bin 0 -> 17575 bytes src/frontend/public/captchas/21.png | Bin 0 -> 21599 bytes src/frontend/public/captchas/22.png | Bin 0 -> 18064 bytes src/frontend/public/captchas/23.png | Bin 0 -> 23719 bytes src/frontend/public/captchas/24.png | Bin 0 -> 21446 bytes src/frontend/public/captchas/25.png | Bin 0 -> 22984 bytes src/frontend/public/captchas/26.png | Bin 0 -> 22599 bytes src/frontend/public/captchas/27.png | Bin 0 -> 14830 bytes src/frontend/public/captchas/28.png | Bin 0 -> 21286 bytes src/frontend/public/captchas/29.png | Bin 0 -> 18190 bytes src/frontend/public/captchas/3.png | Bin 0 -> 18028 bytes src/frontend/public/captchas/30.png | Bin 0 -> 18260 bytes src/frontend/public/captchas/31.png | Bin 0 -> 17414 bytes src/frontend/public/captchas/32.png | Bin 0 -> 21561 bytes src/frontend/public/captchas/33.png | Bin 0 -> 22678 bytes src/frontend/public/captchas/34.png | Bin 0 -> 23551 bytes src/frontend/public/captchas/35.png | Bin 0 -> 18804 bytes src/frontend/public/captchas/36.png | Bin 0 -> 22722 bytes src/frontend/public/captchas/37.png | Bin 0 -> 18518 bytes src/frontend/public/captchas/38.png | Bin 0 -> 20442 bytes src/frontend/public/captchas/39.png | Bin 0 -> 17106 bytes src/frontend/public/captchas/4.png | Bin 0 -> 23495 bytes src/frontend/public/captchas/40.png | Bin 0 -> 16300 bytes src/frontend/public/captchas/41.png | Bin 0 -> 23770 bytes src/frontend/public/captchas/42.png | Bin 0 -> 22496 bytes src/frontend/public/captchas/43.png | Bin 0 -> 24656 bytes src/frontend/public/captchas/44.png | Bin 0 -> 20593 bytes src/frontend/public/captchas/45.png | Bin 0 -> 19019 bytes src/frontend/public/captchas/46.png | Bin 0 -> 20657 bytes src/frontend/public/captchas/47.png | Bin 0 -> 24012 bytes src/frontend/public/captchas/48.png | Bin 0 -> 20852 bytes src/frontend/public/captchas/49.png | Bin 0 -> 20924 bytes src/frontend/public/captchas/5.png | Bin 0 -> 20605 bytes src/frontend/public/captchas/50.png | Bin 0 -> 16155 bytes src/frontend/public/captchas/51.png | Bin 0 -> 20795 bytes src/frontend/public/captchas/52.png | Bin 0 -> 20181 bytes src/frontend/public/captchas/53.png | Bin 0 -> 16383 bytes src/frontend/public/captchas/54.png | Bin 0 -> 20939 bytes src/frontend/public/captchas/55.png | Bin 0 -> 20022 bytes src/frontend/public/captchas/56.png | Bin 0 -> 18829 bytes src/frontend/public/captchas/57.png | Bin 0 -> 22396 bytes src/frontend/public/captchas/58.png | Bin 0 -> 23363 bytes src/frontend/public/captchas/59.png | Bin 0 -> 19662 bytes src/frontend/public/captchas/6.png | Bin 0 -> 19325 bytes src/frontend/public/captchas/60.png | Bin 0 -> 19111 bytes src/frontend/public/captchas/61.png | Bin 0 -> 22649 bytes src/frontend/public/captchas/62.png | Bin 0 -> 18648 bytes src/frontend/public/captchas/63.png | Bin 0 -> 23275 bytes src/frontend/public/captchas/64.png | Bin 0 -> 20530 bytes src/frontend/public/captchas/65.png | Bin 0 -> 25067 bytes src/frontend/public/captchas/66.png | Bin 0 -> 23098 bytes src/frontend/public/captchas/67.png | Bin 0 -> 21311 bytes src/frontend/public/captchas/68.png | Bin 0 -> 22371 bytes src/frontend/public/captchas/69.png | Bin 0 -> 23227 bytes src/frontend/public/captchas/7.png | Bin 0 -> 18365 bytes src/frontend/public/captchas/70.png | Bin 0 -> 25390 bytes src/frontend/public/captchas/71.png | Bin 0 -> 18849 bytes src/frontend/public/captchas/72.png | Bin 0 -> 22663 bytes src/frontend/public/captchas/73.png | Bin 0 -> 16397 bytes src/frontend/public/captchas/74.png | Bin 0 -> 16419 bytes src/frontend/public/captchas/75.png | Bin 0 -> 24044 bytes src/frontend/public/captchas/76.png | Bin 0 -> 22073 bytes src/frontend/public/captchas/77.png | Bin 0 -> 20592 bytes src/frontend/public/captchas/78.png | Bin 0 -> 18762 bytes src/frontend/public/captchas/79.png | Bin 0 -> 18694 bytes src/frontend/public/captchas/8.png | Bin 0 -> 23145 bytes src/frontend/public/captchas/80.png | Bin 0 -> 15601 bytes src/frontend/public/captchas/81.png | Bin 0 -> 20974 bytes src/frontend/public/captchas/82.png | Bin 0 -> 17913 bytes src/frontend/public/captchas/83.png | Bin 0 -> 14871 bytes src/frontend/public/captchas/84.png | Bin 0 -> 25285 bytes src/frontend/public/captchas/85.png | Bin 0 -> 18342 bytes src/frontend/public/captchas/86.png | Bin 0 -> 22646 bytes src/frontend/public/captchas/87.png | Bin 0 -> 23304 bytes src/frontend/public/captchas/88.png | Bin 0 -> 23247 bytes src/frontend/public/captchas/89.png | Bin 0 -> 21002 bytes src/frontend/public/captchas/9.png | Bin 0 -> 20673 bytes src/frontend/public/captchas/90.png | Bin 0 -> 20654 bytes src/frontend/public/captchas/91.png | Bin 0 -> 25125 bytes src/frontend/public/captchas/92.png | Bin 0 -> 25881 bytes src/frontend/public/captchas/93.png | Bin 0 -> 18612 bytes src/frontend/public/captchas/94.png | Bin 0 -> 22560 bytes src/frontend/public/captchas/95.png | Bin 0 -> 21786 bytes src/frontend/public/captchas/96.png | Bin 0 -> 22573 bytes src/frontend/public/captchas/97.png | Bin 0 -> 21155 bytes src/frontend/public/captchas/98.png | Bin 0 -> 23744 bytes src/frontend/public/captchas/99.png | Bin 0 -> 18394 bytes .../frontend/public}/elements/Group 4.png | Bin .../frontend/public}/elements/admiral.png | Bin .../frontend/public}/elements/alien.png | Bin .../frontend/public}/elements/boss.png | Bin .../public}/elements/button-border.svg | 0 .../public}/elements/card-bg-green.png | Bin .../frontend/public}/elements/card-bg.png | Bin .../frontend/public}/elements/card-top.svg | 0 .../public}/elements/character-bg-evil.svg | 0 .../public/elements}/character-bg.svg | 0 .../frontend/public}/elements/dialog-evil.png | Bin .../public}/elements/dialog-mobile-evil.png | Bin .../public}/elements/dialog-mobile.png | Bin .../frontend/public}/elements/dialog.png | Bin .../frontend/public}/elements/dialog.svg | 0 .../frontend/public}/elements/logo.svg | 0 .../frontend/public}/elements/mechanics.png | Bin .../frontend/public}/elements/menu-bottom.png | Bin .../frontend/public}/elements/menu-bottom.svg | 0 .../frontend/public}/elements/menu-left.png | Bin .../frontend/public}/elements/menu-left.svg | 0 .../frontend/public}/elements/menu-right.png | Bin .../frontend/public}/elements/menu-right.svg | 0 .../frontend/public}/elements/menu-top.png | Bin .../frontend/public}/elements/menu-top.svg | 0 .../public}/elements/next-chapter.svg | 0 .../frontend/public}/elements/pilot.png | Bin .../public}/elements/previous-chapter.svg | 0 .../frontend/public}/elements/robot.png | Bin .../frontend/public}/elements/scientist.png | Bin .../frontend/public}/elements/ship-battle.png | Bin .../frontend/public}/elements/soldier.png | Bin .../frontend/public}/elements/traitor.png | Bin .../frontend/public}/elements/user.svg | 0 .../frontend/public}/elements/zod.png | Bin {public => src/frontend/public}/favicon.ico | Bin {public => src/frontend/public}/favicon.png | Bin .../public/fonts/Electrolize-Regular.woff | Bin 0 -> 20208 bytes .../public/fonts/Electrolize-Regular.woff2 | Bin 0 -> 14796 bytes .../fonts/HurmeGeometricSans4-Black.woff | Bin 0 -> 108068 bytes .../fonts/HurmeGeometricSans4-Black.woff2 | Bin 0 -> 63648 bytes .../fonts/HurmeGeometricSans4-Bold.woff | Bin 0 -> 127864 bytes .../fonts/HurmeGeometricSans4-Bold.woff2 | Bin 0 -> 75064 bytes .../fonts/HurmeGeometricSans4-Light.woff | Bin 0 -> 113636 bytes .../fonts/HurmeGeometricSans4-Light.woff2 | Bin 0 -> 68176 bytes .../fonts/HurmeGeometricSans4-Regular.woff | Bin 0 -> 97576 bytes .../fonts/HurmeGeometricSans4-Regular.woff2 | Bin 0 -> 58992 bytes .../fonts/HurmeGeometricSans4-SemiBold.woff | Bin 0 -> 130984 bytes .../fonts/HurmeGeometricSans4-SemiBold.woff2 | Bin 0 -> 77520 bytes .../fonts/HurmeGeometricSans4-Thin.woff | Bin 0 -> 112160 bytes .../fonts/HurmeGeometricSans4-Thin.woff2 | Bin 0 -> 67420 bytes .../public}/fonts/Modern-vulcan11.woff | Bin .../public}/fonts/Modern-vulcan11.woff2 | Bin .../public/fonts/ProximaNova-Bold.woff | Bin 0 -> 26308 bytes .../public/fonts/ProximaNova-Bold.woff2 | Bin 0 -> 18956 bytes .../public/fonts/ProximaNova-Light.woff | Bin 0 -> 27092 bytes .../public/fonts/ProximaNova-Light.woff2 | Bin 0 -> 19424 bytes .../public/fonts/ProximaNova-Regular.woff | Bin 0 -> 26456 bytes .../public/fonts/ProximaNova-Regular.woff2 | Bin 0 -> 18996 bytes .../public/fonts/ProximaNova-Semibold.woff | Bin 0 -> 25764 bytes .../public/fonts/ProximaNova-Semibold.woff2 | Bin 0 -> 18460 bytes .../public/fonts/ProximaNova-Thin.woff | Bin 0 -> 25452 bytes .../public/fonts/ProximaNova-Thin.woff2 | Bin 0 -> 18068 bytes src/frontend/public/icons/input-error.svg | 19 + src/frontend/public/icons/input-success.svg | 18 + src/frontend/public/icons/sprites.svg | 433 + {public => src/frontend/public/images}/bg.png | Bin .../frontend/public/images}/readme.gif | Bin .../frontend/public/images}/readme.png | Bin src/frontend/public/index.html | 18 + {public => src/frontend/public}/logo192.png | Bin {public => src/frontend/public}/logo512.png | Bin {public => src/frontend/public}/manifest.json | 8 +- src/frontend/public/ogimage.png | Bin 0 -> 638068 bytes {public => src/frontend/public}/robots.txt | 0 {public => src/frontend/public}/ships/bc0.svg | 0 {public => src/frontend/public}/ships/bc1.svg | 0 {public => src/frontend/public}/ships/bc2.svg | 0 {public => src/frontend/public}/ships/be0.svg | 0 {public => src/frontend/public}/ships/be1.svg | 0 {public => src/frontend/public}/ships/be2.svg | 0 {public => src/frontend/public}/ships/be3.svg | 0 {public => src/frontend/public}/ships/be4.svg | 0 {public => src/frontend/public}/ships/bg0.svg | 0 {public => src/frontend/public}/ships/bg1.svg | 0 {public => src/frontend/public}/ships/bg2.svg | 0 {public => src/frontend/public}/ships/bg3.svg | 0 {public => src/frontend/public}/ships/bg4.svg | 0 {public => src/frontend/public}/ships/bw0.svg | 0 {public => src/frontend/public}/ships/bw1.svg | 0 {public => src/frontend/public}/ships/bw2.svg | 0 {public => src/frontend/public}/ships/bw3.svg | 0 {public => src/frontend/public}/ships/bw4.svg | 0 .../frontend/public}/ships/flame0.svg | 0 .../frontend/public}/ships/flame1.svg | 0 .../frontend/public}/ships/flame2.svg | 0 .../frontend/public}/ships/flame3.svg | 0 .../frontend/public}/ships/flame4.svg | 0 .../frontend/public}/ships/laser1.svg | 0 {public => src/frontend/public}/ships/rc0.svg | 0 {public => src/frontend/public}/ships/rc1.svg | 0 {public => src/frontend/public}/ships/rc2.svg | 0 {public => src/frontend/public}/ships/re0.svg | 0 {public => src/frontend/public}/ships/re1.svg | 0 {public => src/frontend/public}/ships/re2.svg | 0 {public => src/frontend/public}/ships/re3.svg | 0 {public => src/frontend/public}/ships/re4.svg | 0 {public => src/frontend/public}/ships/rg0.svg | 0 {public => src/frontend/public}/ships/rg1.svg | 0 {public => src/frontend/public}/ships/rg2.svg | 0 {public => src/frontend/public}/ships/rg3.svg | 0 {public => src/frontend/public}/ships/rg4.svg | 0 {public => src/frontend/public}/ships/rw0.svg | 0 {public => src/frontend/public}/ships/rw1.svg | 0 {public => src/frontend/public}/ships/rw2.svg | 0 {public => src/frontend/public}/ships/rw3.svg | 0 {public => src/frontend/public}/ships/rw4.svg | 0 {public => src/frontend/public}/ships/yc0.svg | 0 {public => src/frontend/public}/ships/yc1.svg | 0 {public => src/frontend/public}/ships/yc2.svg | 0 {public => src/frontend/public}/ships/ye0.svg | 0 {public => src/frontend/public}/ships/ye1.svg | 0 {public => src/frontend/public}/ships/ye2.svg | 0 {public => src/frontend/public}/ships/ye3.svg | 0 {public => src/frontend/public}/ships/ye4.svg | 0 {public => src/frontend/public}/ships/yg0.svg | 0 {public => src/frontend/public}/ships/yg1.svg | 0 {public => src/frontend/public}/ships/yg2.svg | 0 {public => src/frontend/public}/ships/yg3.svg | 0 {public => src/frontend/public}/ships/yg4.svg | 0 {public => src/frontend/public}/ships/yw0.svg | 0 {public => src/frontend/public}/ships/yw1.svg | 0 {public => src/frontend/public}/ships/yw2.svg | 0 {public => src/frontend/public}/ships/yw3.svg | 0 {public => src/frontend/public}/ships/yw4.svg | 0 .../Button/Button.constants.tsx | 9 + .../Button/Button.controller.tsx | 51 + .../App.components/Button/Button.style.tsx | 101 + .../app/App.components/Button/Button.view.tsx | 70 + .../Checkbox/Checkbox.controller.tsx | 21 + .../Checkbox/Checkbox.style.tsx | 19 + .../App.components/Checkbox/Checkbox.view.tsx | 46 + .../App.components/Drawer/Drawer.actions.tsx | 14 + .../Drawer/Drawer.controller.tsx | 63 + .../App.components/Drawer/Drawer.reducers.tsx | 26 + .../App.components}/Drawer/Drawer.style.tsx | 27 +- .../App.components}/Drawer/Drawer.view.tsx | 44 +- .../Footer/Footer.controller.tsx | 5 + .../App.components/Footer/Footer.style.tsx | 8 + .../app/App.components/Footer/Footer.view.tsx | 22 + .../Hamburger/Hamburger.controller.tsx | 17 + .../Hamburger/Hamburger.style.tsx | 37 +- .../Hamburger/Hamburger.view.tsx | 18 +- .../Header/Header.controller.tsx | 10 + .../App.components}/Header/Header.style.tsx | 64 +- .../app/App.components/Header/Header.view.tsx | 56 + .../App.components/Input/Input.controller.tsx | 63 + .../app/App.components/Input/Input.style.tsx | 131 + .../app/App.components/Input/Input.view.tsx | 69 + .../LoggedInRoute.controller.tsx | 33 + .../LoggedOutRoute.controller.tsx | 31 + .../ProgressBar/ProgressBar.actions.tsx | 14 + .../ProgressBar/ProgressBar.constants.tsx | 3 + .../ProgressBar/ProgressBar.controller.tsx | 31 + .../ProgressBar/ProgressBar.reducers.tsx | 26 + .../ProgressBar/ProgressBar.style.tsx | 33 + .../ProgressBar/ProgressBar.view.tsx | 17 + .../Select/Select.controller.tsx | 0 .../App.components/Select/Select.style.tsx | 2 +- .../App.components/Select/Select.view.tsx | 0 .../SoftImage/SoftImage.controller.tsx | 27 + .../SoftImage/SoftImage.style.tsx | 10 + .../SoftImage/SoftImage.view.tsx | 22 + .../Toaster/Toaster.actions.tsx | 23 + .../Toaster/Toaster.constants.tsx | 5 + .../Toaster/Toaster.controller.tsx | 26 + .../Toaster/Toaster.reducers.tsx | 36 + .../App.components/Toaster/Toaster.style.tsx | 103 + .../App.components/Toaster/Toaster.view.tsx | 55 + src/frontend/src/app/App.controller.tsx | 23 + src/frontend/src/app/App.meta.tsx | 21 + src/frontend/src/app/App.offline.tsx | 39 + src/frontend/src/app/App.routes.tsx | 61 + .../src/app/App.store.tsx} | 12 +- src/frontend/src/app/App.style.tsx | 18 + .../src/app}/App.transitions.tsx | 26 +- src/frontend/src/app/App.view.tsx | 32 + src/frontend/src/helpers/dayjs.ts | 3 + src/frontend/src/helpers/form.ts | 90 + src/frontend/src/helpers/typegoose.ts | 11 + src/frontend/src/helpers/usePrevious.ts | 9 + src/frontend/src/index.tsx | 32 + .../src/pages/Blank/Blank.actions.tsx | 25 + .../src/pages/Blank/Blank.controller.tsx | 18 + .../src/pages/Blank/Blank.reducers.tsx | 34 + src/frontend/src/pages/Blank/Blank.style.tsx | 3 + src/frontend/src/pages/Blank/Blank.view.tsx | 20 + .../ChangePassword/ChangePassword.actions.tsx | 32 + .../ChangePassword.controller.tsx | 30 + .../ChangePassword/ChangePassword.meta.tsx | 15 + .../ChangePassword.reducers.tsx | 46 + .../ChangePassword/ChangePassword.style.tsx | 26 + .../ChangePassword/ChangePassword.view.tsx | 92 + .../Card/Card.controller.tsx | 0 .../Chapter.components}/Card/Card.style.tsx | 0 .../Chapter.components}/Card/Card.view.tsx | 0 .../Dialog/Dialog.controller.tsx | 0 .../Dialog/Dialog.style.tsx | 0 .../Dialog/Dialog.view.tsx | 0 .../Footer/Footer.controller.tsx | 0 .../Footer/Footer.style.tsx | 8 +- .../Footer/Footer.view.tsx | 32 +- .../Chapter.components}/Light/Light.style.tsx | 0 .../Chapter.components}/Light/Light.view.tsx | 0 .../Ship/Ship.controller.tsx | 0 .../Chapter.components}/Ship/Ship.style.tsx | 0 .../Chapter.components}/Ship/Ship.view.tsx | 0 .../ShipSelector/ShipSelector.controller.tsx | 0 .../ShipSelector/ShipSelector.style.tsx | 0 .../ShipSelector/ShipSelector.view.tsx | 51 +- .../src/pages/Chapter/Chapter.controller.tsx | 63 + .../src/pages}/Chapter/Chapter.data.tsx | 0 .../src/pages}/Chapter/Chapter.view.tsx | 86 +- .../ChapterAbout/ChapterAbout.constants.tsx | 0 .../ChapterAbout/ChapterAbout.controller.tsx | 23 + .../Camel/ChapterAbout/ChapterAbout.data.tsx | 0 .../Camel/ChapterAbout/ChapterAbout.style.tsx | 0 .../Camel/ChapterAbout/ChapterAbout.view.tsx | 78 +- .../Chapters/Camel/ChapterAddresses/course.md | 0 .../Camel/ChapterAddresses/exercise.ligo | 0 .../Chapters/Camel/ChapterAddresses/index.ts | 0 .../Camel/ChapterAddresses/solution.ligo | 0 .../Chapters/Camel/ChapterBuiltIns/course.md | 0 .../Camel/ChapterBuiltIns/exercise.ligo | 0 .../Chapters/Camel/ChapterBuiltIns/index.ts | 0 .../Camel/ChapterBuiltIns/solution.ligo | 0 .../Camel/ChapterConditionals/course.md | 0 .../Camel/ChapterConditionals/exercise.ligo | 0 .../Camel/ChapterConditionals/index.ts | 0 .../Camel/ChapterConditionals/solution.ligo | 0 .../Camel/ChapterDeployContract/course.md | 0 .../Camel/ChapterDeployContract/exercise.ligo | 0 .../Camel/ChapterDeployContract/index.ts | 0 .../Camel/ChapterDeployContract/solution.ligo | 0 .../Chapters/Camel/ChapterFA12/course.md | 0 .../Chapters/Camel/ChapterFA12/exercise.ligo | 0 .../Chapters/Camel/ChapterFA12/index.ts | 0 .../Chapters/Camel/ChapterFA12/solution.ligo | 0 .../Chapters/Camel/ChapterFunctions/course.md | 0 .../Camel/ChapterFunctions/exercise.ligo | 0 .../Chapters/Camel/ChapterFunctions/index.ts | 0 .../Camel/ChapterFunctions/solution.ligo | 0 .../Camel/ChapterInteractions/course.md | 0 .../Camel/ChapterInteractions/exercise.ligo | 0 .../Camel/ChapterInteractions/index.ts | 0 .../Camel/ChapterInteractions/solution.ligo | 0 .../Chapters/Camel/ChapterLambda/course.md | 0 .../Camel/ChapterLambda/exercise.ligo | 0 .../Chapters/Camel/ChapterLambda/index.ts | 0 .../Camel/ChapterLambda/solution.ligo | 0 .../Camel/ChapterLambda/starmap.mligo | 0 .../Chapters/Camel/ChapterLists/course.md | 0 .../Chapters/Camel/ChapterLists/exercise.ligo | 0 .../Chapters/Camel/ChapterLists/index.ts | 0 .../Chapters/Camel/ChapterLists/solution.ligo | 0 .../Chapters/Camel/ChapterLoops/course.md | 0 .../Chapters/Camel/ChapterLoops/exercise.ligo | 0 .../Chapters/Camel/ChapterLoops/index.ts | 0 .../Chapters/Camel/ChapterLoops/solution.ligo | 0 .../Camel/ChapterMainFunction/course.md | 0 .../Camel/ChapterMainFunction/exercise.ligo | 0 .../Camel/ChapterMainFunction/index.ts | 0 .../Camel/ChapterMainFunction/solution.ligo | 0 .../Chapters/Camel/ChapterMaps/course.md | 0 .../Chapters/Camel/ChapterMaps/exercise.ligo | 0 .../Chapters/Camel/ChapterMaps/index.ts | 0 .../Chapters/Camel/ChapterMaps/solution.ligo | 0 .../Chapters/Camel/ChapterMath/course.md | 0 .../Chapters/Camel/ChapterMath/exercise.ligo | 0 .../Chapters/Camel/ChapterMath/index.ts | 0 .../Chapters/Camel/ChapterMath/solution.ligo | 0 .../Chapters/Camel/ChapterMultisig/course.md | 0 .../Camel/ChapterMultisig/exercise.ligo | 0 .../Chapters/Camel/ChapterMultisig/index.ts | 0 .../Camel/ChapterMultisig/solution.ligo | 0 .../Chapters/Camel/ChapterOption/course.md | 0 .../Camel/ChapterOption/exercise.ligo | 0 .../Chapters/Camel/ChapterOption/index.ts | 0 .../Camel/ChapterOption/solution.ligo | 0 .../Camel/ChapterPolymorphism/central.mligo | 0 .../ChapterPolymorphism/central_types.mligo | 0 .../Camel/ChapterPolymorphism/course.md | 0 .../Camel/ChapterPolymorphism/exercise.ligo | 0 .../Camel/ChapterPolymorphism/index.ts | 0 .../Camel/ChapterPolymorphism/solution.ligo | 0 .../Camel/ChapterPolymorphism/squadron.mligo | 0 .../ChapterPolymorphism/squadron_types.mligo | 0 .../Chapters/Camel/ChapterRecords/course.md | 0 .../Camel/ChapterRecords/exercise.ligo | 0 .../Chapters/Camel/ChapterRecords/index.ts | 0 .../Camel/ChapterRecords/solution.ligo | 0 .../Chapters/Camel/ChapterStrings/course.md | 0 .../Camel/ChapterStrings/exercise.ligo | 0 .../Chapters/Camel/ChapterStrings/index.ts | 0 .../Camel/ChapterStrings/solution.ligo | 0 .../Camel/ChapterTimestamps/course.md | 0 .../Camel/ChapterTimestamps/exercise.ligo | 0 .../Chapters/Camel/ChapterTimestamps/index.ts | 0 .../Camel/ChapterTimestamps/solution.ligo | 0 .../Camel/ChapterTransactions/course.md | 0 .../Camel/ChapterTransactions/exercise.ligo | 0 .../Camel/ChapterTransactions/index.ts | 0 .../Camel/ChapterTransactions/solution.ligo | 0 .../Chapters/Camel/ChapterTuples/course.md | 0 .../Camel/ChapterTuples/exercise.ligo | 0 .../Chapters/Camel/ChapterTuples/index.ts | 0 .../Camel/ChapterTuples/solution.ligo | 0 .../Chapters/Camel/ChapterTypes/course.md | 0 .../Chapters/Camel/ChapterTypes/exercise.ligo | 0 .../Chapters/Camel/ChapterTypes/index.ts | 0 .../Chapters/Camel/ChapterTypes/solution.ligo | 0 .../Chapters/Camel/ChapterVariables/course.md | 0 .../Camel/ChapterVariables/exercise.ligo | 0 .../Chapters/Camel/ChapterVariables/index.ts | 0 .../Camel/ChapterVariables/solution.ligo | 0 .../Chapters/Camel/ChapterVariant/course.md | 0 .../Camel/ChapterVariant/exercise.ligo | 0 .../Chapters/Camel/ChapterVariant/index.ts | 0 .../Camel/ChapterVariant/solution.ligo | 0 .../ChapterAbout/ChapterAbout.constants.tsx | 0 .../ChapterAbout/ChapterAbout.controller.tsx | 23 + .../Pascal/ChapterAbout/ChapterAbout.data.tsx | 0 .../ChapterAbout/ChapterAbout.style.tsx | 0 .../Pascal/ChapterAbout/ChapterAbout.view.tsx | 78 +- .../Pascal/ChapterAddresses/course.md | 0 .../Pascal/ChapterAddresses/exercise.ligo | 0 .../Chapters/Pascal/ChapterAddresses/index.ts | 0 .../Pascal/ChapterAddresses/solution.ligo | 0 .../Chapters/Pascal/ChapterBuiltIns/course.md | 0 .../Pascal/ChapterBuiltIns/exercise.ligo | 0 .../Chapters/Pascal/ChapterBuiltIns/index.ts | 0 .../Pascal/ChapterBuiltIns/solution.ligo | 0 .../Pascal/ChapterConditionals/course.md | 0 .../Pascal/ChapterConditionals/exercise.ligo | 0 .../Pascal/ChapterConditionals/index.ts | 0 .../Pascal/ChapterConditionals/solution.ligo | 0 .../Pascal/ChapterDeployContract/course.md | 0 .../ChapterDeployContract/exercise.ligo | 0 .../Pascal/ChapterDeployContract/index.ts | 0 .../ChapterDeployContract/solution.ligo | 0 .../Chapters/Pascal/ChapterFA12/course.md | 0 .../Chapters/Pascal/ChapterFA12/exercise.ligo | 0 .../Chapters/Pascal/ChapterFA12/index.ts | 0 .../Chapters/Pascal/ChapterFA12/solution.ligo | 0 .../Pascal/ChapterFunctions/course.md | 0 .../Pascal/ChapterFunctions/exercise.ligo | 0 .../Chapters/Pascal/ChapterFunctions/index.ts | 0 .../Pascal/ChapterFunctions/solution.ligo | 0 .../Pascal/ChapterInteractions/course.md | 0 .../Pascal/ChapterInteractions/exercise.ligo | 0 .../Pascal/ChapterInteractions/index.ts | 0 .../Pascal/ChapterInteractions/solution.ligo | 0 .../Chapters/Pascal/ChapterLambda/course.md | 0 .../Pascal/ChapterLambda/exercise.ligo | 0 .../Chapters/Pascal/ChapterLambda/index.ts | 0 .../Pascal/ChapterLambda/solution.religo | 0 .../Pascal/ChapterLambda/starmap.ligo | 0 .../Chapters/Pascal/ChapterLists/course.md | 0 .../Pascal/ChapterLists/exercise.ligo | 0 .../Chapters/Pascal/ChapterLists/index.ts | 0 .../Pascal/ChapterLists/solution.ligo | 0 .../Chapters/Pascal/ChapterLoops/course.md | 0 .../Pascal/ChapterLoops/exercise.ligo | 0 .../Chapters/Pascal/ChapterLoops/index.ts | 0 .../Pascal/ChapterLoops/solution.ligo | 0 .../Pascal/ChapterMainFunction/course.md | 0 .../Pascal/ChapterMainFunction/exercise.ligo | 0 .../Pascal/ChapterMainFunction/index.ts | 0 .../Pascal/ChapterMainFunction/solution.ligo | 0 .../Chapters/Pascal/ChapterMaps/course.md | 0 .../Chapters/Pascal/ChapterMaps/exercise.ligo | 0 .../Chapters/Pascal/ChapterMaps/index.ts | 0 .../Chapters/Pascal/ChapterMaps/solution.ligo | 0 .../Chapters/Pascal/ChapterMath/course.md | 0 .../Chapters/Pascal/ChapterMath/exercise.ligo | 0 .../Chapters/Pascal/ChapterMath/index.ts | 0 .../Chapters/Pascal/ChapterMath/solution.ligo | 0 .../Chapters/Pascal/ChapterMultisig/course.md | 0 .../Pascal/ChapterMultisig/exercise.ligo | 0 .../Chapters/Pascal/ChapterMultisig/index.ts | 0 .../Pascal/ChapterMultisig/solution.ligo | 0 .../Chapters/Pascal/ChapterOption/course.md | 0 .../Pascal/ChapterOption/exercise.ligo | 0 .../Chapters/Pascal/ChapterOption/index.ts | 0 .../Pascal/ChapterOption/solution.ligo | 0 .../Pascal/ChapterPolymorphism/central.ligo | 0 .../ChapterPolymorphism/central_types.ligo | 0 .../Pascal/ChapterPolymorphism/course.md | 0 .../Pascal/ChapterPolymorphism/exercise.ligo | 0 .../Pascal/ChapterPolymorphism/index.ts | 0 .../Pascal/ChapterPolymorphism/solution.ligo | 0 .../Pascal/ChapterPolymorphism/squadron.ligo | 0 .../ChapterPolymorphism/squadron_types.ligo | 0 .../Chapters/Pascal/ChapterRecords/course.md | 0 .../Pascal/ChapterRecords/exercise.ligo | 0 .../Chapters/Pascal/ChapterRecords/index.ts | 0 .../Pascal/ChapterRecords/solution.ligo | 0 .../Chapters/Pascal/ChapterStrings/course.md | 0 .../Pascal/ChapterStrings/exercise.ligo | 0 .../Chapters/Pascal/ChapterStrings/index.ts | 0 .../Pascal/ChapterStrings/solution.ligo | 0 .../Pascal/ChapterTimestamps/course.md | 0 .../Pascal/ChapterTimestamps/exercise.ligo | 0 .../Pascal/ChapterTimestamps/index.ts | 0 .../Pascal/ChapterTimestamps/solution.ligo | 0 .../Pascal/ChapterTransactions/course.md | 0 .../Pascal/ChapterTransactions/exercise.ligo | 0 .../Pascal/ChapterTransactions/index.ts | 0 .../Pascal/ChapterTransactions/solution.ligo | 0 .../Chapters/Pascal/ChapterTuples/course.md | 0 .../Pascal/ChapterTuples/exercise.ligo | 0 .../Chapters/Pascal/ChapterTuples/index.ts | 0 .../Pascal/ChapterTuples/solution.ligo | 0 .../Chapters/Pascal/ChapterTypes/course.md | 0 .../Pascal/ChapterTypes/exercise.ligo | 0 .../Chapters/Pascal/ChapterTypes/index.ts | 0 .../Pascal/ChapterTypes/solution.ligo | 0 .../Pascal/ChapterVariables/course.md | 0 .../Pascal/ChapterVariables/exercise.ligo | 0 .../Chapters/Pascal/ChapterVariables/index.ts | 0 .../Pascal/ChapterVariables/solution.ligo | 0 .../Chapters/Pascal/ChapterVariant/course.md | 0 .../Pascal/ChapterVariant/exercise.ligo | 0 .../Chapters/Pascal/ChapterVariant/index.ts | 0 .../Pascal/ChapterVariant/solution.ligo | 0 .../ChapterAbout/ChapterAbout.constants.tsx | 0 .../ChapterAbout/ChapterAbout.controller.tsx | 23 + .../Reason/ChapterAbout/ChapterAbout.data.tsx | 0 .../ChapterAbout/ChapterAbout.style.tsx | 0 .../Reason/ChapterAbout/ChapterAbout.view.tsx | 78 +- .../Reason/ChapterAddresses/course.md | 0 .../Reason/ChapterAddresses/exercise.ligo | 0 .../Chapters/Reason/ChapterAddresses/index.ts | 0 .../Reason/ChapterAddresses/solution.ligo | 0 .../Chapters/Reason/ChapterBuiltIns/course.md | 0 .../Reason/ChapterBuiltIns/exercise.ligo | 0 .../Chapters/Reason/ChapterBuiltIns/index.ts | 0 .../Reason/ChapterBuiltIns/solution.ligo | 0 .../Reason/ChapterConditionals/course.md | 0 .../Reason/ChapterConditionals/exercise.ligo | 0 .../Reason/ChapterConditionals/index.ts | 0 .../Reason/ChapterConditionals/solution.ligo | 0 .../Reason/ChapterDeployContract/course.md | 0 .../ChapterDeployContract/exercise.ligo | 0 .../Reason/ChapterDeployContract/index.ts | 0 .../ChapterDeployContract/solution.ligo | 0 .../Chapters/Reason/ChapterFA12/course.md | 0 .../Chapters/Reason/ChapterFA12/exercise.ligo | 0 .../Chapters/Reason/ChapterFA12/index.ts | 0 .../Chapters/Reason/ChapterFA12/solution.ligo | 0 .../Reason/ChapterFunctions/course.md | 0 .../Reason/ChapterFunctions/exercise.ligo | 0 .../Chapters/Reason/ChapterFunctions/index.ts | 0 .../Reason/ChapterFunctions/solution.ligo | 0 .../Reason/ChapterInteractions/course.md | 0 .../Reason/ChapterInteractions/exercise.ligo | 0 .../Reason/ChapterInteractions/index.ts | 0 .../Reason/ChapterInteractions/solution.ligo | 0 .../Chapters/Reason/ChapterLambda/course.md | 0 .../Reason/ChapterLambda/exercise.ligo | 0 .../Chapters/Reason/ChapterLambda/index.ts | 0 .../Reason/ChapterLambda/solution.ligo | 0 .../Reason/ChapterLambda/starmap.religo | 0 .../Chapters/Reason/ChapterLists/course.md | 0 .../Reason/ChapterLists/exercise.ligo | 0 .../Chapters/Reason/ChapterLists/index.ts | 0 .../Reason/ChapterLists/solution.ligo | 0 .../Chapters/Reason/ChapterLoops/course.md | 0 .../Reason/ChapterLoops/exercise.ligo | 0 .../Chapters/Reason/ChapterLoops/index.ts | 0 .../Reason/ChapterLoops/solution.ligo | 0 .../Reason/ChapterMainFunction/course.md | 0 .../Reason/ChapterMainFunction/exercise.ligo | 0 .../Reason/ChapterMainFunction/index.ts | 0 .../Reason/ChapterMainFunction/solution.ligo | 0 .../Chapters/Reason/ChapterMaps/course.md | 0 .../Chapters/Reason/ChapterMaps/exercise.ligo | 0 .../Chapters/Reason/ChapterMaps/index.ts | 0 .../Chapters/Reason/ChapterMaps/solution.ligo | 0 .../Chapters/Reason/ChapterMath/course.md | 0 .../Chapters/Reason/ChapterMath/exercise.ligo | 0 .../Chapters/Reason/ChapterMath/index.ts | 0 .../Chapters/Reason/ChapterMath/solution.ligo | 0 .../Chapters/Reason/ChapterMultisig/course.md | 0 .../Reason/ChapterMultisig/exercise.ligo | 0 .../Chapters/Reason/ChapterMultisig/index.ts | 0 .../Reason/ChapterMultisig/solution.ligo | 0 .../Chapters/Reason/ChapterOption/course.md | 0 .../Reason/ChapterOption/exercise.ligo | 0 .../Chapters/Reason/ChapterOption/index.ts | 0 .../Reason/ChapterOption/solution.ligo | 0 .../Reason/ChapterPolymorphism/central.ligo | 0 .../ChapterPolymorphism/central_types.ligo | 0 .../Reason/ChapterPolymorphism/course.md | 0 .../Reason/ChapterPolymorphism/exercise.ligo | 0 .../Reason/ChapterPolymorphism/index.ts | 0 .../Reason/ChapterPolymorphism/solution.ligo | 0 .../Reason/ChapterPolymorphism/squadron.ligo | 0 .../ChapterPolymorphism/squadron_types.ligo | 0 .../Chapters/Reason/ChapterRecords/course.md | 0 .../Reason/ChapterRecords/exercise.ligo | 0 .../Chapters/Reason/ChapterRecords/index.ts | 0 .../Reason/ChapterRecords/solution.ligo | 0 .../Chapters/Reason/ChapterStrings/course.md | 0 .../Reason/ChapterStrings/exercise.ligo | 0 .../Chapters/Reason/ChapterStrings/index.ts | 0 .../Reason/ChapterStrings/solution.ligo | 0 .../Reason/ChapterTimestamps/course.md | 0 .../Reason/ChapterTimestamps/exercise.ligo | 0 .../Reason/ChapterTimestamps/index.ts | 0 .../Reason/ChapterTimestamps/solution.ligo | 0 .../Reason/ChapterTransactions/course.md | 0 .../Reason/ChapterTransactions/exercise.ligo | 0 .../Reason/ChapterTransactions/index.ts | 0 .../Reason/ChapterTransactions/solution.ligo | 0 .../Chapters/Reason/ChapterTuples/course.md | 0 .../Reason/ChapterTuples/exercise.ligo | 0 .../Chapters/Reason/ChapterTuples/index.ts | 0 .../Reason/ChapterTuples/solution.ligo | 0 .../Chapters/Reason/ChapterTypes/course.md | 0 .../Reason/ChapterTypes/exercise.ligo | 0 .../Chapters/Reason/ChapterTypes/index.ts | 0 .../Reason/ChapterTypes/solution.ligo | 0 .../Reason/ChapterVariables/course.md | 0 .../Reason/ChapterVariables/exercise.ligo | 0 .../Chapters/Reason/ChapterVariables/index.ts | 0 .../Reason/ChapterVariables/solution.ligo | 0 .../Chapters/Reason/ChapterVariant/course.md | 0 .../Reason/ChapterVariant/exercise.ligo | 0 .../Chapters/Reason/ChapterVariant/index.ts | 0 .../Reason/ChapterVariant/solution.ligo | 0 .../pages/Error404/Error404.controller.tsx | 5 + .../src/pages/Error404/Error404.style.tsx | 16 + .../src/pages/Error404/Error404.view.tsx | 19 + .../ForgotPassword/ForgotPassword.actions.tsx | 30 + .../ForgotPassword.controller.tsx | 37 + .../ForgotPassword.reducers.tsx | 46 + .../ForgotPassword/ForgotPassword.style.tsx | 14 + .../ForgotPassword/ForgotPassword.view.tsx | 77 + .../src/pages/Home/Home.controller.tsx | 7 + src/frontend/src/pages/Home/Home.style.tsx | 8 + .../src/pages/Home/Home.view.tsx} | 23 +- .../src/pages/Login/Login.actions.tsx | 23 + .../src/pages/Login/Login.controller.tsx | 39 + src/frontend/src/pages/Login/Login.style.tsx | 26 + src/frontend/src/pages/Login/Login.view.tsx | 94 + .../ResetPassword/ResetPassword.actions.tsx | 30 + .../ResetPassword.controller.tsx | 30 + .../ResetPassword/ResetPassword.reducers.tsx | 46 + .../ResetPassword/ResetPassword.style.tsx | 26 + .../ResetPassword/ResetPassword.view.tsx | 90 + .../src/pages/SignUp/SignUp.actions.tsx | 45 + .../src/pages/SignUp/SignUp.controller.tsx | 37 + .../src/pages/SignUp/SignUp.reducers.tsx | 131 + .../src/pages/SignUp/SignUp.style.tsx | 22 + src/frontend/src/pages/SignUp/SignUp.view.tsx | 124 + .../pages/VerifyEmail/VerifyEmail.actions.tsx | 24 + .../VerifyEmailResend.actions.tsx | 23 + .../VerifyEmailResend.controller.tsx | 17 + .../VerifyEmailResend.style.tsx | 17 + .../VerifyEmailResend.view.tsx | 30 + .../VerifyEmail/VerifyEmail.controller.tsx | 26 + .../pages/VerifyEmail/VerifyEmail.style.tsx | 58 + .../pages/VerifyEmail/VerifyEmail.view.tsx | 148 + src/{ => frontend/src}/react-app-env.d.ts | 0 src/frontend/src/reducers/index.ts | 32 + src/{ => frontend/src}/serviceWorker.ts | 86 +- src/frontend/src/shared/captcha/Captcha.ts | 57 + src/frontend/src/shared/captcha/CaptchaFor.ts | 4 + .../src/shared/captcha/CaptchaPair.ts | 6 + .../src/shared/captcha/CaptchaSolution.ts | 1 + src/frontend/src/shared/mongo/DeleteRes.ts | 5 + .../src/shared/mongo/ResponseError.ts | 12 + src/frontend/src/shared/mongo/UpdateRes.ts | 13 + src/frontend/src/shared/quota/Quota.ts | 36 + src/frontend/src/shared/quota/QuotaRates.ts | 9 + src/frontend/src/shared/quota/QuotaType.ts | 8 + .../src/shared/user/ChangePassword.ts | 16 + .../src/shared/user/ForgotPassword.ts | 18 + src/frontend/src/shared/user/GetPublicUser.ts | 14 + src/frontend/src/shared/user/IsEqualTo.ts | 25 + src/frontend/src/shared/user/Jwt.ts | 1 + src/frontend/src/shared/user/JwtDecoded.ts | 9 + src/frontend/src/shared/user/JwtPayload.ts | 8 + src/frontend/src/shared/user/Login.ts | 29 + src/frontend/src/shared/user/PublicUser.ts | 25 + src/frontend/src/shared/user/ResetPassword.ts | 19 + src/frontend/src/shared/user/SignUp.ts | 40 + src/frontend/src/shared/user/User.ts | 35 + src/frontend/src/shared/user/UserRole.ts | 4 + src/frontend/src/shared/user/VerifyEmail.ts | 10 + src/frontend/src/styles/animations.ts | 242 + src/frontend/src/styles/colors.ts | 17 + src/frontend/src/styles/components.ts | 99 + src/frontend/src/styles/constants.ts | 2 + src/frontend/src/styles/fonts.css | 96 + src/frontend/src/styles/global.ts | 210 + src/{ => frontend/src}/styles/index.ts | 1 + src/frontend/tsconfig.json | 36 + src/frontend/yarn.lock | 13082 +++++++++++++ src/index.tsx | 28 - src/reducers.ts | 10 - src/setupTests.ts | 5 - src/styles/animations.ts | 133 - src/styles/colors.ts | 10 - src/styles/components.ts | 68 - src/styles/global.ts | 139 - tsconfig.json | 19 - workers-site/.cargo-ok | 0 workers-site/.gitignore | 2 - workers-site/index.js | 80 - workers-site/package-lock.json | 21 - workers-site/package.json | 12 - yarn.lock | 15142 ++++++---------- 1051 files changed, 60651 insertions(+), 13152 deletions(-) delete mode 100644 .env create mode 100644 .eslintignore create mode 100644 .eslintrc.json create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .vscode/extensions.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/my_command.js create mode 100644 .vscode/settings.json create mode 100644 .vscode/tezosacademy-snippets.code-snippets delete mode 100644 dist/worker.js create mode 100644 lerna.json delete mode 100644 public/character-bg 2.svg delete mode 100644 public/elements/character-bg.svg delete mode 100644 public/index.html delete mode 100644 src/App/App.controller.tsx delete mode 100644 src/App/App.style.tsx delete mode 100644 src/App/App.view.tsx delete mode 100644 src/Chapter/Chapter.controller.tsx delete mode 100644 src/Chapters/Camel/ChapterAbout/ChapterAbout.controller.tsx delete mode 100644 src/Chapters/Pascal/ChapterAbout/ChapterAbout.controller.tsx delete mode 100644 src/Chapters/Reason/ChapterAbout/ChapterAbout.controller.tsx delete mode 100644 src/ComingNext/ComingNext.style.tsx delete mode 100644 src/ComingNext/ComingNext.view.tsx delete mode 100644 src/Drawer/Drawer.actions.tsx delete mode 100644 src/Drawer/Drawer.controller.tsx delete mode 100644 src/Drawer/Drawer.reducers.tsx delete mode 100644 src/Drawer/Drawer.styles/DrawerBackward.tsx delete mode 100644 src/Drawer/Drawer.styles/DrawerForward.tsx delete mode 100644 src/Hamburger/Hamburger.controller.tsx delete mode 100644 src/Hamburger/Hamburger.styles/HamburgerBottomBackward.tsx delete mode 100644 src/Hamburger/Hamburger.styles/HamburgerBottomForward.tsx delete mode 100644 src/Hamburger/Hamburger.styles/HamburgerTopBackward.tsx delete mode 100644 src/Hamburger/Hamburger.styles/HamburgerTopForward.tsx delete mode 100644 src/Header/Header.controller.tsx delete mode 100644 src/Header/Header.view.tsx delete mode 100644 src/Homepage/Homepage.controller.tsx delete mode 100644 src/Homepage/Homepage.style.tsx delete mode 100644 src/NotFound/NotFound.style.tsx delete mode 100644 src/NotFound/NotFound.view.tsx create mode 100644 src/api/.env.example create mode 100644 src/api/.gitignore create mode 100644 src/api/Dockerfile create mode 100644 src/api/coverage/clover.xml create mode 100644 src/api/coverage/coverage-final.json create mode 100644 src/api/coverage/lcov-report/base.css create mode 100644 src/api/coverage/lcov-report/block-navigation.js create mode 100644 src/api/coverage/lcov-report/favicon.png create mode 100644 src/api/coverage/lcov-report/index.html create mode 100644 src/api/coverage/lcov-report/prettify.css create mode 100644 src/api/coverage/lcov-report/prettify.js create mode 100644 src/api/coverage/lcov-report/sort-arrow-sprite.png create mode 100644 src/api/coverage/lcov-report/sorter.js create mode 100644 src/api/coverage/lcov-report/src/captcha/captcha.model.ts.html create mode 100644 src/api/coverage/lcov-report/src/captcha/helpers/captchaSolutions.ts.html create mode 100644 src/api/coverage/lcov-report/src/captcha/helpers/createCaptcha.ts.html create mode 100644 src/api/coverage/lcov-report/src/captcha/helpers/getRandomCaptchaPair.ts.html create mode 100644 src/api/coverage/lcov-report/src/captcha/helpers/index.html create mode 100644 src/api/coverage/lcov-report/src/captcha/index.html create mode 100644 src/api/coverage/lcov-report/src/comment/addCommentView/addCommentView.ts.html create mode 100644 src/api/coverage/lcov-report/src/comment/addCommentView/index.html create mode 100644 src/api/coverage/lcov-report/src/comment/comment.model.ts.html create mode 100644 src/api/coverage/lcov-report/src/comment/getCommentWithPublicUser/getCommentWithPublicUser.ts.html create mode 100644 src/api/coverage/lcov-report/src/comment/getCommentWithPublicUser/index.html create mode 100644 src/api/coverage/lcov-report/src/comment/getLatestCommentsWithPublicUsers/getLatestCommentsWithPublicUsers.ts.html create mode 100644 src/api/coverage/lcov-report/src/comment/getLatestCommentsWithPublicUsers/index.html create mode 100644 src/api/coverage/lcov-report/src/comment/index.html create mode 100644 src/api/coverage/lcov-report/src/comment/newComment/index.html create mode 100644 src/api/coverage/lcov-report/src/comment/newComment/newComment.ts.html create mode 100644 src/api/coverage/lcov-report/src/constants.ts.html create mode 100644 src/api/coverage/lcov-report/src/helpers/clone.ts.html create mode 100644 src/api/coverage/lcov-report/src/helpers/dayjs.ts.html create mode 100644 src/api/coverage/lcov-report/src/helpers/firstError.ts.html create mode 100644 src/api/coverage/lcov-report/src/helpers/index.html create mode 100644 src/api/coverage/lcov-report/src/helpers/sanitize.ts.html create mode 100644 src/api/coverage/lcov-report/src/helpers/typegoose.ts.html create mode 100644 src/api/coverage/lcov-report/src/index.html create mode 100644 src/api/coverage/lcov-report/src/notification/getLatestNotifications/getLatestNotifications.ts.html create mode 100644 src/api/coverage/lcov-report/src/notification/getLatestNotifications/index.html create mode 100644 src/api/coverage/lcov-report/src/notification/index.html create mode 100644 src/api/coverage/lcov-report/src/notification/notification.model.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/captcha/captcha.model.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/captcha/helpers/captchaSolutions.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/captcha/helpers/createCaptcha.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/captcha/helpers/getRandomCaptchaPair.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/captcha/helpers/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/captcha/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/addCommentView/addCommentView.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/addCommentView/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/comment.model.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/getComment/getComment.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/getComment/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/getCommentWithPublicUser/getCommentWithPublicUser.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/getCommentWithPublicUser/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/getLatestComments/getLatestComments.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/getLatestComments/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/getLatestCommentsWithPublicUsers/getLatestCommentsWithPublicUsers.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/getLatestCommentsWithPublicUsers/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/newComment/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/comment/newComment/newComment.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/limit/rateLimit/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/limit/rateLimit/rateLimit.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/notification/getLatestNotifications/getLatestNotifications.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/notification/getLatestNotifications/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/notification/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/notification/notification.model.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/quota/rateLimit/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/quota/rateLimit/rateLimit.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/changePassword/changePassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/changePassword/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/forgotPassword/forgotPassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/forgotPassword/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/getPublicUser/getPublicUser.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/getPublicUser/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/helpers/authenticate.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/helpers/getSignedJwt.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/helpers/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/helpers/matchPassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/helpers/rateLimit.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/helpers/sendEmailForgotPassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/helpers/sendEmailVerifyEmail.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/helpers/verifyCaptcha.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/helpers/verifyRecaptchaToken.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/helpers/verifySignedJwt.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/login/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/login/login.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/resendEmailVerification/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/resendEmailVerification/resendEmailVerification.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/resetPassword/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/resetPassword/resetPassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/signUp/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/signUp/signUp.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/user.model.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/verifyEmail/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/user/verifyEmail/verifyEmail.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/vote/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/vote/sendVote/index.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/vote/sendVote/sendVote.ts.html create mode 100644 src/api/coverage/lcov-report/src/resolvers/vote/vote.model.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/captcha/Captcha.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/captcha/CaptchaFor.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/captcha/index.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/AddCommentView.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/AddCommentViewArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/Comment.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/CommentStatus.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/CommentType.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/GetComment.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/GetCommentWithPublicUserArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/GetLatestComments.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/GetLatestCommentsWithPublicUsersArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/ModerationStatus.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/NewComment.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/NewCommentArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/comment/index.html create mode 100644 src/api/coverage/lcov-report/src/shared/limit/Limit.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/limit/index.html create mode 100644 src/api/coverage/lcov-report/src/shared/mongo/ResponseError.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/mongo/index.html create mode 100644 src/api/coverage/lcov-report/src/shared/notification/Notification.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/notification/NotificationType.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/notification/TargetType.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/notification/index.html create mode 100644 src/api/coverage/lcov-report/src/shared/quota/Quota.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/quota/QuotaType.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/quota/index.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/ChangePassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/ChangePasswordArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/ForgotPassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/ForgotPasswordArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/GetPublicUser.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/GetPublicUserArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/IsEqualTo.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/Login.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/LoginArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/PublicUser.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/ResetPassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/ResetPasswordArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/Role.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/SignUp.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/SignUpArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/User.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/UserRole.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/VerifyEmail.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/VerifyEmailArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/user/index.html create mode 100644 src/api/coverage/lcov-report/src/shared/vote/SendVote.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/vote/Vote.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/vote/VoteDirection.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/vote/VoteUpArgs.ts.html create mode 100644 src/api/coverage/lcov-report/src/shared/vote/index.html create mode 100644 src/api/coverage/lcov-report/src/test/createTestUser.ts.html create mode 100644 src/api/coverage/lcov-report/src/test/deleteTestUser.ts.html create mode 100644 src/api/coverage/lcov-report/src/test/index.html create mode 100644 src/api/coverage/lcov-report/src/test/mockConnect.ts.html create mode 100644 src/api/coverage/lcov-report/src/test/sleep.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/changePassword/changePassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/changePassword/index.html create mode 100644 src/api/coverage/lcov-report/src/user/forgotPassword/forgotPassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/forgotPassword/index.html create mode 100644 src/api/coverage/lcov-report/src/user/getPublicUser/getPublicUser.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/getPublicUser/index.html create mode 100644 src/api/coverage/lcov-report/src/user/helpers/authenticate.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/helpers/getSignedJwt.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/helpers/index.html create mode 100644 src/api/coverage/lcov-report/src/user/helpers/matchPassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/helpers/rateLimit.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/helpers/sendEmailForgotPassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/helpers/sendEmailVerifyEmail.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/helpers/verifyCaptcha.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/helpers/verifyRecaptchaToken.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/helpers/verifySignedJwt.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/index.html create mode 100644 src/api/coverage/lcov-report/src/user/login/index.html create mode 100644 src/api/coverage/lcov-report/src/user/login/login.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/resendEmailVerification/index.html create mode 100644 src/api/coverage/lcov-report/src/user/resendEmailVerification/resendEmailVerification.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/resetPassword/index.html create mode 100644 src/api/coverage/lcov-report/src/user/resetPassword/resetPassword.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/signUp/index.html create mode 100644 src/api/coverage/lcov-report/src/user/signUp/signUp.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/user.model.ts.html create mode 100644 src/api/coverage/lcov-report/src/user/verifyEmail/index.html create mode 100644 src/api/coverage/lcov-report/src/user/verifyEmail/verifyEmail.ts.html create mode 100644 src/api/coverage/lcov-report/src/vote/index.html create mode 100644 src/api/coverage/lcov-report/src/vote/sendVote/index.html create mode 100644 src/api/coverage/lcov-report/src/vote/sendVote/sendVote.ts.html create mode 100644 src/api/coverage/lcov-report/src/vote/vote.model.ts.html create mode 100644 src/api/coverage/lcov.info create mode 100644 src/api/error.log create mode 100644 src/api/jest-mongodb-config.js create mode 100644 src/api/jest.config.js create mode 100644 src/api/kubernetes.json create mode 100644 src/api/package.json create mode 100644 src/api/src/constants.ts create mode 100644 src/api/src/error.ts create mode 100644 src/api/src/global.d.ts create mode 100644 src/api/src/helpers/clone.ts create mode 100644 src/api/src/helpers/dayjs.ts create mode 100644 src/api/src/helpers/firstError.spec.ts create mode 100644 src/api/src/helpers/firstError.ts create mode 100644 src/api/src/helpers/toPublicUser.ts create mode 100644 src/api/src/helpers/typegoose.ts create mode 100644 src/api/src/index.ts create mode 100644 src/api/src/kubernetes.json create mode 100644 src/api/src/logger.ts create mode 100644 src/api/src/resolvers/captcha/helpers/captchaSolutions.ts create mode 100644 src/api/src/resolvers/captcha/helpers/createCaptcha.spec.ts create mode 100644 src/api/src/resolvers/captcha/helpers/createCaptcha.ts create mode 100644 src/api/src/resolvers/captcha/helpers/getRandomCaptchaPair.spec.ts create mode 100644 src/api/src/resolvers/captcha/helpers/getRandomCaptchaPair.ts create mode 100644 src/api/src/resolvers/quota/rateLimit/rateLimit.spec.ts create mode 100644 src/api/src/resolvers/quota/rateLimit/rateLimit.ts create mode 100644 src/api/src/resolvers/user/changePassword/changePassword.spec.ts create mode 100644 src/api/src/resolvers/user/changePassword/changePassword.ts create mode 100644 src/api/src/resolvers/user/forgotPassword/forgotPassword.spec.ts create mode 100644 src/api/src/resolvers/user/forgotPassword/forgotPassword.ts create mode 100644 src/api/src/resolvers/user/getPublicUser/getPublicUser.spec.ts create mode 100644 src/api/src/resolvers/user/getPublicUser/getPublicUser.ts create mode 100644 src/api/src/resolvers/user/helpers/authenticate.spec.ts create mode 100644 src/api/src/resolvers/user/helpers/authenticate.ts create mode 100644 src/api/src/resolvers/user/helpers/getSignedJwt.spec.ts create mode 100644 src/api/src/resolvers/user/helpers/getSignedJwt.ts create mode 100644 src/api/src/resolvers/user/helpers/matchPassword.spec.ts create mode 100644 src/api/src/resolvers/user/helpers/matchPassword.ts create mode 100644 src/api/src/resolvers/user/helpers/sendEmailForgotPassword.spec.ts create mode 100644 src/api/src/resolvers/user/helpers/sendEmailForgotPassword.ts create mode 100644 src/api/src/resolvers/user/helpers/sendEmailVerifyEmail.spec.ts create mode 100644 src/api/src/resolvers/user/helpers/sendEmailVerifyEmail.ts create mode 100644 src/api/src/resolvers/user/helpers/verifyCaptcha.spec.ts create mode 100644 src/api/src/resolvers/user/helpers/verifyCaptcha.ts create mode 100644 src/api/src/resolvers/user/helpers/verifyRecaptchaToken.spec.ts create mode 100644 src/api/src/resolvers/user/helpers/verifyRecaptchaToken.ts create mode 100644 src/api/src/resolvers/user/helpers/verifySignedJwt.spec.ts create mode 100644 src/api/src/resolvers/user/helpers/verifySignedJwt.ts create mode 100644 src/api/src/resolvers/user/login/login.spec.ts create mode 100644 src/api/src/resolvers/user/login/login.ts create mode 100644 src/api/src/resolvers/user/resendEmailVerification/resendEmailVerification.spec.ts create mode 100644 src/api/src/resolvers/user/resendEmailVerification/resendEmailVerification.ts create mode 100644 src/api/src/resolvers/user/resetPassword/resetPassword.spec.ts create mode 100644 src/api/src/resolvers/user/resetPassword/resetPassword.ts create mode 100644 src/api/src/resolvers/user/signUp/signUp.spec.ts create mode 100644 src/api/src/resolvers/user/signUp/signUp.ts create mode 100644 src/api/src/resolvers/user/verifyEmail/verifyEmail.spec.ts create mode 100644 src/api/src/resolvers/user/verifyEmail/verifyEmail.ts create mode 100644 src/api/src/router.ts create mode 100644 src/api/src/sanitize.ts create mode 100644 src/api/src/shared/captcha/Captcha.ts create mode 100644 src/api/src/shared/captcha/CaptchaFor.ts create mode 100644 src/api/src/shared/captcha/CaptchaPair.ts create mode 100644 src/api/src/shared/captcha/CaptchaSolution.ts create mode 100644 src/api/src/shared/mongo/DeleteRes.ts create mode 100644 src/api/src/shared/mongo/ResponseError.ts create mode 100644 src/api/src/shared/mongo/UpdateRes.ts create mode 100644 src/api/src/shared/quota/Quota.ts create mode 100644 src/api/src/shared/quota/QuotaRates.ts create mode 100644 src/api/src/shared/quota/QuotaType.ts create mode 100644 src/api/src/shared/user/ChangePassword.ts create mode 100644 src/api/src/shared/user/ForgotPassword.ts create mode 100644 src/api/src/shared/user/GetPublicUser.ts create mode 100644 src/api/src/shared/user/IsEqualTo.ts create mode 100644 src/api/src/shared/user/Jwt.ts create mode 100644 src/api/src/shared/user/JwtDecoded.ts create mode 100644 src/api/src/shared/user/JwtPayload.ts create mode 100644 src/api/src/shared/user/Login.ts create mode 100644 src/api/src/shared/user/PublicUser.ts create mode 100644 src/api/src/shared/user/ResetPassword.ts create mode 100644 src/api/src/shared/user/SignUp.ts create mode 100644 src/api/src/shared/user/User.ts create mode 100644 src/api/src/shared/user/UserRole.ts create mode 100644 src/api/src/shared/user/VerifyEmail.ts create mode 100644 src/api/src/test/createTestUser.ts create mode 100644 src/api/src/test/deleteTestUser.ts create mode 100644 src/api/src/test/mockConnect.ts create mode 100644 src/api/src/test/sleep.ts create mode 100644 src/api/tsconfig.json create mode 100644 src/api/yarn.lock create mode 100644 src/frontend/.env.example create mode 100644 src/frontend/.gitignore create mode 100644 src/frontend/Dockerfile create mode 100644 src/frontend/nginx.conf create mode 100644 src/frontend/package.json create mode 100644 src/frontend/public/captchas/0.png create mode 100644 src/frontend/public/captchas/1.png create mode 100644 src/frontend/public/captchas/10.png create mode 100644 src/frontend/public/captchas/11.png create mode 100644 src/frontend/public/captchas/12.png create mode 100644 src/frontend/public/captchas/13.png create mode 100644 src/frontend/public/captchas/14.png create mode 100644 src/frontend/public/captchas/15.png create mode 100644 src/frontend/public/captchas/16.png create mode 100644 src/frontend/public/captchas/17.png create mode 100644 src/frontend/public/captchas/18.png create mode 100644 src/frontend/public/captchas/19.png create mode 100644 src/frontend/public/captchas/2.png create mode 100644 src/frontend/public/captchas/20.png create mode 100644 src/frontend/public/captchas/21.png create mode 100644 src/frontend/public/captchas/22.png create mode 100644 src/frontend/public/captchas/23.png create mode 100644 src/frontend/public/captchas/24.png create mode 100644 src/frontend/public/captchas/25.png create mode 100644 src/frontend/public/captchas/26.png create mode 100644 src/frontend/public/captchas/27.png create mode 100644 src/frontend/public/captchas/28.png create mode 100644 src/frontend/public/captchas/29.png create mode 100644 src/frontend/public/captchas/3.png create mode 100644 src/frontend/public/captchas/30.png create mode 100644 src/frontend/public/captchas/31.png create mode 100644 src/frontend/public/captchas/32.png create mode 100644 src/frontend/public/captchas/33.png create mode 100644 src/frontend/public/captchas/34.png create mode 100644 src/frontend/public/captchas/35.png create mode 100644 src/frontend/public/captchas/36.png create mode 100644 src/frontend/public/captchas/37.png create mode 100644 src/frontend/public/captchas/38.png create mode 100644 src/frontend/public/captchas/39.png create mode 100644 src/frontend/public/captchas/4.png create mode 100644 src/frontend/public/captchas/40.png create mode 100644 src/frontend/public/captchas/41.png create mode 100644 src/frontend/public/captchas/42.png create mode 100644 src/frontend/public/captchas/43.png create mode 100644 src/frontend/public/captchas/44.png create mode 100644 src/frontend/public/captchas/45.png create mode 100644 src/frontend/public/captchas/46.png create mode 100644 src/frontend/public/captchas/47.png create mode 100644 src/frontend/public/captchas/48.png create mode 100644 src/frontend/public/captchas/49.png create mode 100644 src/frontend/public/captchas/5.png create mode 100644 src/frontend/public/captchas/50.png create mode 100644 src/frontend/public/captchas/51.png create mode 100644 src/frontend/public/captchas/52.png create mode 100644 src/frontend/public/captchas/53.png create mode 100644 src/frontend/public/captchas/54.png create mode 100644 src/frontend/public/captchas/55.png create mode 100644 src/frontend/public/captchas/56.png create mode 100644 src/frontend/public/captchas/57.png create mode 100644 src/frontend/public/captchas/58.png create mode 100644 src/frontend/public/captchas/59.png create mode 100644 src/frontend/public/captchas/6.png create mode 100644 src/frontend/public/captchas/60.png create mode 100644 src/frontend/public/captchas/61.png create mode 100644 src/frontend/public/captchas/62.png create mode 100644 src/frontend/public/captchas/63.png create mode 100644 src/frontend/public/captchas/64.png create mode 100644 src/frontend/public/captchas/65.png create mode 100644 src/frontend/public/captchas/66.png create mode 100644 src/frontend/public/captchas/67.png create mode 100644 src/frontend/public/captchas/68.png create mode 100644 src/frontend/public/captchas/69.png create mode 100644 src/frontend/public/captchas/7.png create mode 100644 src/frontend/public/captchas/70.png create mode 100644 src/frontend/public/captchas/71.png create mode 100644 src/frontend/public/captchas/72.png create mode 100644 src/frontend/public/captchas/73.png create mode 100644 src/frontend/public/captchas/74.png create mode 100644 src/frontend/public/captchas/75.png create mode 100644 src/frontend/public/captchas/76.png create mode 100644 src/frontend/public/captchas/77.png create mode 100644 src/frontend/public/captchas/78.png create mode 100644 src/frontend/public/captchas/79.png create mode 100644 src/frontend/public/captchas/8.png create mode 100644 src/frontend/public/captchas/80.png create mode 100644 src/frontend/public/captchas/81.png create mode 100644 src/frontend/public/captchas/82.png create mode 100644 src/frontend/public/captchas/83.png create mode 100644 src/frontend/public/captchas/84.png create mode 100644 src/frontend/public/captchas/85.png create mode 100644 src/frontend/public/captchas/86.png create mode 100644 src/frontend/public/captchas/87.png create mode 100644 src/frontend/public/captchas/88.png create mode 100644 src/frontend/public/captchas/89.png create mode 100644 src/frontend/public/captchas/9.png create mode 100644 src/frontend/public/captchas/90.png create mode 100644 src/frontend/public/captchas/91.png create mode 100644 src/frontend/public/captchas/92.png create mode 100644 src/frontend/public/captchas/93.png create mode 100644 src/frontend/public/captchas/94.png create mode 100644 src/frontend/public/captchas/95.png create mode 100644 src/frontend/public/captchas/96.png create mode 100644 src/frontend/public/captchas/97.png create mode 100644 src/frontend/public/captchas/98.png create mode 100644 src/frontend/public/captchas/99.png rename {public => src/frontend/public}/elements/Group 4.png (100%) rename {public => src/frontend/public}/elements/admiral.png (100%) rename {public => src/frontend/public}/elements/alien.png (100%) rename {public => src/frontend/public}/elements/boss.png (100%) rename {public => src/frontend/public}/elements/button-border.svg (100%) rename {public => src/frontend/public}/elements/card-bg-green.png (100%) rename {public => src/frontend/public}/elements/card-bg.png (100%) rename {public => src/frontend/public}/elements/card-top.svg (100%) rename {public => src/frontend/public}/elements/character-bg-evil.svg (100%) rename {public => src/frontend/public/elements}/character-bg.svg (100%) rename {public => src/frontend/public}/elements/dialog-evil.png (100%) rename {public => src/frontend/public}/elements/dialog-mobile-evil.png (100%) rename {public => src/frontend/public}/elements/dialog-mobile.png (100%) rename {public => src/frontend/public}/elements/dialog.png (100%) rename {public => src/frontend/public}/elements/dialog.svg (100%) rename {public => src/frontend/public}/elements/logo.svg (100%) rename {public => src/frontend/public}/elements/mechanics.png (100%) rename {public => src/frontend/public}/elements/menu-bottom.png (100%) rename {public => src/frontend/public}/elements/menu-bottom.svg (100%) rename {public => src/frontend/public}/elements/menu-left.png (100%) rename {public => src/frontend/public}/elements/menu-left.svg (100%) rename {public => src/frontend/public}/elements/menu-right.png (100%) rename {public => src/frontend/public}/elements/menu-right.svg (100%) rename {public => src/frontend/public}/elements/menu-top.png (100%) rename {public => src/frontend/public}/elements/menu-top.svg (100%) rename {public => src/frontend/public}/elements/next-chapter.svg (100%) rename {public => src/frontend/public}/elements/pilot.png (100%) rename {public => src/frontend/public}/elements/previous-chapter.svg (100%) rename {public => src/frontend/public}/elements/robot.png (100%) rename {public => src/frontend/public}/elements/scientist.png (100%) rename {public => src/frontend/public}/elements/ship-battle.png (100%) rename {public => src/frontend/public}/elements/soldier.png (100%) rename {public => src/frontend/public}/elements/traitor.png (100%) rename {public => src/frontend/public}/elements/user.svg (100%) rename {public => src/frontend/public}/elements/zod.png (100%) rename {public => src/frontend/public}/favicon.ico (100%) rename {public => src/frontend/public}/favicon.png (100%) create mode 100644 src/frontend/public/fonts/Electrolize-Regular.woff create mode 100644 src/frontend/public/fonts/Electrolize-Regular.woff2 create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-Black.woff create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-Black.woff2 create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-Bold.woff create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-Bold.woff2 create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-Light.woff create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-Light.woff2 create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-Regular.woff create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-Regular.woff2 create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-SemiBold.woff create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-SemiBold.woff2 create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-Thin.woff create mode 100644 src/frontend/public/fonts/HurmeGeometricSans4-Thin.woff2 rename {public => src/frontend/public}/fonts/Modern-vulcan11.woff (100%) rename {public => src/frontend/public}/fonts/Modern-vulcan11.woff2 (100%) create mode 100755 src/frontend/public/fonts/ProximaNova-Bold.woff create mode 100755 src/frontend/public/fonts/ProximaNova-Bold.woff2 create mode 100755 src/frontend/public/fonts/ProximaNova-Light.woff create mode 100755 src/frontend/public/fonts/ProximaNova-Light.woff2 create mode 100755 src/frontend/public/fonts/ProximaNova-Regular.woff create mode 100755 src/frontend/public/fonts/ProximaNova-Regular.woff2 create mode 100755 src/frontend/public/fonts/ProximaNova-Semibold.woff create mode 100755 src/frontend/public/fonts/ProximaNova-Semibold.woff2 create mode 100755 src/frontend/public/fonts/ProximaNova-Thin.woff create mode 100755 src/frontend/public/fonts/ProximaNova-Thin.woff2 create mode 100644 src/frontend/public/icons/input-error.svg create mode 100644 src/frontend/public/icons/input-success.svg create mode 100644 src/frontend/public/icons/sprites.svg rename {public => src/frontend/public/images}/bg.png (100%) rename {public => src/frontend/public/images}/readme.gif (100%) rename {public => src/frontend/public/images}/readme.png (100%) create mode 100644 src/frontend/public/index.html rename {public => src/frontend/public}/logo192.png (100%) rename {public => src/frontend/public}/logo512.png (100%) rename {public => src/frontend/public}/manifest.json (74%) create mode 100644 src/frontend/public/ogimage.png rename {public => src/frontend/public}/robots.txt (100%) rename {public => src/frontend/public}/ships/bc0.svg (100%) rename {public => src/frontend/public}/ships/bc1.svg (100%) rename {public => src/frontend/public}/ships/bc2.svg (100%) rename {public => src/frontend/public}/ships/be0.svg (100%) rename {public => src/frontend/public}/ships/be1.svg (100%) rename {public => src/frontend/public}/ships/be2.svg (100%) rename {public => src/frontend/public}/ships/be3.svg (100%) rename {public => src/frontend/public}/ships/be4.svg (100%) rename {public => src/frontend/public}/ships/bg0.svg (100%) rename {public => src/frontend/public}/ships/bg1.svg (100%) rename {public => src/frontend/public}/ships/bg2.svg (100%) rename {public => src/frontend/public}/ships/bg3.svg (100%) rename {public => src/frontend/public}/ships/bg4.svg (100%) rename {public => src/frontend/public}/ships/bw0.svg (100%) rename {public => src/frontend/public}/ships/bw1.svg (100%) rename {public => src/frontend/public}/ships/bw2.svg (100%) rename {public => src/frontend/public}/ships/bw3.svg (100%) rename {public => src/frontend/public}/ships/bw4.svg (100%) rename {public => src/frontend/public}/ships/flame0.svg (100%) rename {public => src/frontend/public}/ships/flame1.svg (100%) rename {public => src/frontend/public}/ships/flame2.svg (100%) rename {public => src/frontend/public}/ships/flame3.svg (100%) rename {public => src/frontend/public}/ships/flame4.svg (100%) rename {public => src/frontend/public}/ships/laser1.svg (100%) rename {public => src/frontend/public}/ships/rc0.svg (100%) rename {public => src/frontend/public}/ships/rc1.svg (100%) rename {public => src/frontend/public}/ships/rc2.svg (100%) rename {public => src/frontend/public}/ships/re0.svg (100%) rename {public => src/frontend/public}/ships/re1.svg (100%) rename {public => src/frontend/public}/ships/re2.svg (100%) rename {public => src/frontend/public}/ships/re3.svg (100%) rename {public => src/frontend/public}/ships/re4.svg (100%) rename {public => src/frontend/public}/ships/rg0.svg (100%) rename {public => src/frontend/public}/ships/rg1.svg (100%) rename {public => src/frontend/public}/ships/rg2.svg (100%) rename {public => src/frontend/public}/ships/rg3.svg (100%) rename {public => src/frontend/public}/ships/rg4.svg (100%) rename {public => src/frontend/public}/ships/rw0.svg (100%) rename {public => src/frontend/public}/ships/rw1.svg (100%) rename {public => src/frontend/public}/ships/rw2.svg (100%) rename {public => src/frontend/public}/ships/rw3.svg (100%) rename {public => src/frontend/public}/ships/rw4.svg (100%) rename {public => src/frontend/public}/ships/yc0.svg (100%) rename {public => src/frontend/public}/ships/yc1.svg (100%) rename {public => src/frontend/public}/ships/yc2.svg (100%) rename {public => src/frontend/public}/ships/ye0.svg (100%) rename {public => src/frontend/public}/ships/ye1.svg (100%) rename {public => src/frontend/public}/ships/ye2.svg (100%) rename {public => src/frontend/public}/ships/ye3.svg (100%) rename {public => src/frontend/public}/ships/ye4.svg (100%) rename {public => src/frontend/public}/ships/yg0.svg (100%) rename {public => src/frontend/public}/ships/yg1.svg (100%) rename {public => src/frontend/public}/ships/yg2.svg (100%) rename {public => src/frontend/public}/ships/yg3.svg (100%) rename {public => src/frontend/public}/ships/yg4.svg (100%) rename {public => src/frontend/public}/ships/yw0.svg (100%) rename {public => src/frontend/public}/ships/yw1.svg (100%) rename {public => src/frontend/public}/ships/yw2.svg (100%) rename {public => src/frontend/public}/ships/yw3.svg (100%) rename {public => src/frontend/public}/ships/yw4.svg (100%) create mode 100644 src/frontend/src/app/App.components/Button/Button.constants.tsx create mode 100644 src/frontend/src/app/App.components/Button/Button.controller.tsx create mode 100644 src/frontend/src/app/App.components/Button/Button.style.tsx create mode 100644 src/frontend/src/app/App.components/Button/Button.view.tsx create mode 100644 src/frontend/src/app/App.components/Checkbox/Checkbox.controller.tsx create mode 100644 src/frontend/src/app/App.components/Checkbox/Checkbox.style.tsx create mode 100644 src/frontend/src/app/App.components/Checkbox/Checkbox.view.tsx create mode 100644 src/frontend/src/app/App.components/Drawer/Drawer.actions.tsx create mode 100644 src/frontend/src/app/App.components/Drawer/Drawer.controller.tsx create mode 100644 src/frontend/src/app/App.components/Drawer/Drawer.reducers.tsx rename src/{ => frontend/src/app/App.components}/Drawer/Drawer.style.tsx (73%) rename src/{ => frontend/src/app/App.components}/Drawer/Drawer.view.tsx (62%) create mode 100644 src/frontend/src/app/App.components/Footer/Footer.controller.tsx create mode 100644 src/frontend/src/app/App.components/Footer/Footer.style.tsx create mode 100644 src/frontend/src/app/App.components/Footer/Footer.view.tsx create mode 100644 src/frontend/src/app/App.components/Hamburger/Hamburger.controller.tsx rename src/{ => frontend/src/app/App.components}/Hamburger/Hamburger.style.tsx (64%) rename src/{ => frontend/src/app/App.components}/Hamburger/Hamburger.view.tsx (79%) create mode 100644 src/frontend/src/app/App.components/Header/Header.controller.tsx rename src/{ => frontend/src/app/App.components}/Header/Header.style.tsx (53%) create mode 100644 src/frontend/src/app/App.components/Header/Header.view.tsx create mode 100644 src/frontend/src/app/App.components/Input/Input.controller.tsx create mode 100644 src/frontend/src/app/App.components/Input/Input.style.tsx create mode 100644 src/frontend/src/app/App.components/Input/Input.view.tsx create mode 100644 src/frontend/src/app/App.components/LoggedInRoute/LoggedInRoute.controller.tsx create mode 100644 src/frontend/src/app/App.components/LoggedOutRoute/LoggedOutRoute.controller.tsx create mode 100644 src/frontend/src/app/App.components/ProgressBar/ProgressBar.actions.tsx create mode 100644 src/frontend/src/app/App.components/ProgressBar/ProgressBar.constants.tsx create mode 100644 src/frontend/src/app/App.components/ProgressBar/ProgressBar.controller.tsx create mode 100644 src/frontend/src/app/App.components/ProgressBar/ProgressBar.reducers.tsx create mode 100644 src/frontend/src/app/App.components/ProgressBar/ProgressBar.style.tsx create mode 100644 src/frontend/src/app/App.components/ProgressBar/ProgressBar.view.tsx rename src/{App => frontend/src/app}/App.components/Select/Select.controller.tsx (100%) rename src/{App => frontend/src/app}/App.components/Select/Select.style.tsx (99%) rename src/{App => frontend/src/app}/App.components/Select/Select.view.tsx (100%) create mode 100644 src/frontend/src/app/App.components/SoftImage/SoftImage.controller.tsx create mode 100644 src/frontend/src/app/App.components/SoftImage/SoftImage.style.tsx create mode 100644 src/frontend/src/app/App.components/SoftImage/SoftImage.view.tsx create mode 100644 src/frontend/src/app/App.components/Toaster/Toaster.actions.tsx create mode 100644 src/frontend/src/app/App.components/Toaster/Toaster.constants.tsx create mode 100644 src/frontend/src/app/App.components/Toaster/Toaster.controller.tsx create mode 100644 src/frontend/src/app/App.components/Toaster/Toaster.reducers.tsx create mode 100644 src/frontend/src/app/App.components/Toaster/Toaster.style.tsx create mode 100644 src/frontend/src/app/App.components/Toaster/Toaster.view.tsx create mode 100644 src/frontend/src/app/App.controller.tsx create mode 100644 src/frontend/src/app/App.meta.tsx create mode 100644 src/frontend/src/app/App.offline.tsx create mode 100644 src/frontend/src/app/App.routes.tsx rename src/{App/App.config/configureStore.ts => frontend/src/app/App.store.tsx} (64%) create mode 100644 src/frontend/src/app/App.style.tsx rename src/{App => frontend/src/app}/App.transitions.tsx (52%) create mode 100644 src/frontend/src/app/App.view.tsx create mode 100644 src/frontend/src/helpers/dayjs.ts create mode 100644 src/frontend/src/helpers/form.ts create mode 100644 src/frontend/src/helpers/typegoose.ts create mode 100644 src/frontend/src/helpers/usePrevious.ts create mode 100644 src/frontend/src/index.tsx create mode 100644 src/frontend/src/pages/Blank/Blank.actions.tsx create mode 100644 src/frontend/src/pages/Blank/Blank.controller.tsx create mode 100644 src/frontend/src/pages/Blank/Blank.reducers.tsx create mode 100644 src/frontend/src/pages/Blank/Blank.style.tsx create mode 100644 src/frontend/src/pages/Blank/Blank.view.tsx create mode 100644 src/frontend/src/pages/ChangePassword/ChangePassword.actions.tsx create mode 100644 src/frontend/src/pages/ChangePassword/ChangePassword.controller.tsx create mode 100644 src/frontend/src/pages/ChangePassword/ChangePassword.meta.tsx create mode 100644 src/frontend/src/pages/ChangePassword/ChangePassword.reducers.tsx create mode 100644 src/frontend/src/pages/ChangePassword/ChangePassword.style.tsx create mode 100644 src/frontend/src/pages/ChangePassword/ChangePassword.view.tsx rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Card/Card.controller.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Card/Card.style.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Card/Card.view.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Dialog/Dialog.controller.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Dialog/Dialog.style.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Dialog/Dialog.view.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Footer/Footer.controller.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Footer/Footer.style.tsx (89%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Footer/Footer.view.tsx (66%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Light/Light.style.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Light/Light.view.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Ship/Ship.controller.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Ship/Ship.style.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/Ship/Ship.view.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/ShipSelector/ShipSelector.controller.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/ShipSelector/ShipSelector.style.tsx (100%) rename src/{ => frontend/src/pages/Chapter/Chapter.components}/ShipSelector/ShipSelector.view.tsx (59%) create mode 100644 src/frontend/src/pages/Chapter/Chapter.controller.tsx rename src/{ => frontend/src/pages}/Chapter/Chapter.data.tsx (100%) rename src/{ => frontend/src/pages}/Chapter/Chapter.view.tsx (77%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterAbout/ChapterAbout.constants.tsx (100%) create mode 100644 src/frontend/src/pages/Chapters/Camel/ChapterAbout/ChapterAbout.controller.tsx rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterAbout/ChapterAbout.data.tsx (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterAbout/ChapterAbout.style.tsx (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterAbout/ChapterAbout.view.tsx (68%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterAddresses/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterAddresses/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterAddresses/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterAddresses/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterBuiltIns/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterBuiltIns/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterBuiltIns/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterBuiltIns/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterConditionals/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterConditionals/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterConditionals/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterConditionals/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterDeployContract/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterDeployContract/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterDeployContract/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterDeployContract/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterFA12/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterFA12/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterFA12/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterFA12/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterFunctions/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterFunctions/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterFunctions/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterFunctions/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterInteractions/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterInteractions/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterInteractions/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterInteractions/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLambda/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLambda/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLambda/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLambda/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLambda/starmap.mligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLists/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLists/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLists/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLists/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLoops/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLoops/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLoops/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterLoops/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMainFunction/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMainFunction/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMainFunction/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMainFunction/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMaps/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMaps/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMaps/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMaps/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMath/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMath/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMath/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMath/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMultisig/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMultisig/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMultisig/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterMultisig/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterOption/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterOption/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterOption/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterOption/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterPolymorphism/central.mligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterPolymorphism/central_types.mligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterPolymorphism/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterPolymorphism/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterPolymorphism/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterPolymorphism/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterPolymorphism/squadron.mligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterPolymorphism/squadron_types.mligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterRecords/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterRecords/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterRecords/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterRecords/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterStrings/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterStrings/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterStrings/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterStrings/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTimestamps/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTimestamps/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTimestamps/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTimestamps/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTransactions/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTransactions/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTransactions/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTransactions/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTuples/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTuples/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTuples/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTuples/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTypes/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTypes/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTypes/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterTypes/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterVariables/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterVariables/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterVariables/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterVariables/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterVariant/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterVariant/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterVariant/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Camel/ChapterVariant/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterAbout/ChapterAbout.constants.tsx (100%) create mode 100644 src/frontend/src/pages/Chapters/Pascal/ChapterAbout/ChapterAbout.controller.tsx rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterAbout/ChapterAbout.data.tsx (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterAbout/ChapterAbout.style.tsx (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterAbout/ChapterAbout.view.tsx (68%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterAddresses/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterAddresses/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterAddresses/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterAddresses/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterBuiltIns/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterBuiltIns/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterBuiltIns/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterBuiltIns/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterConditionals/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterConditionals/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterConditionals/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterConditionals/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterDeployContract/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterDeployContract/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterDeployContract/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterDeployContract/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterFA12/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterFA12/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterFA12/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterFA12/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterFunctions/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterFunctions/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterFunctions/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterFunctions/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterInteractions/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterInteractions/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterInteractions/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterInteractions/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLambda/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLambda/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLambda/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLambda/solution.religo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLambda/starmap.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLists/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLists/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLists/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLists/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLoops/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLoops/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLoops/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterLoops/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMainFunction/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMainFunction/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMainFunction/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMainFunction/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMaps/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMaps/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMaps/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMaps/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMath/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMath/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMath/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMath/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMultisig/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMultisig/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMultisig/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterMultisig/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterOption/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterOption/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterOption/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterOption/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterPolymorphism/central.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterPolymorphism/central_types.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterPolymorphism/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterPolymorphism/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterPolymorphism/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterPolymorphism/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterPolymorphism/squadron.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterPolymorphism/squadron_types.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterRecords/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterRecords/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterRecords/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterRecords/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterStrings/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterStrings/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterStrings/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterStrings/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTimestamps/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTimestamps/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTimestamps/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTimestamps/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTransactions/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTransactions/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTransactions/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTransactions/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTuples/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTuples/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTuples/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTuples/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTypes/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTypes/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTypes/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterTypes/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterVariables/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterVariables/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterVariables/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterVariables/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterVariant/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterVariant/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterVariant/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Pascal/ChapterVariant/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterAbout/ChapterAbout.constants.tsx (100%) create mode 100644 src/frontend/src/pages/Chapters/Reason/ChapterAbout/ChapterAbout.controller.tsx rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterAbout/ChapterAbout.data.tsx (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterAbout/ChapterAbout.style.tsx (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterAbout/ChapterAbout.view.tsx (68%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterAddresses/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterAddresses/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterAddresses/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterAddresses/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterBuiltIns/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterBuiltIns/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterBuiltIns/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterBuiltIns/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterConditionals/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterConditionals/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterConditionals/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterConditionals/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterDeployContract/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterDeployContract/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterDeployContract/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterDeployContract/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterFA12/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterFA12/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterFA12/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterFA12/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterFunctions/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterFunctions/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterFunctions/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterFunctions/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterInteractions/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterInteractions/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterInteractions/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterInteractions/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLambda/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLambda/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLambda/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLambda/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLambda/starmap.religo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLists/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLists/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLists/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLists/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLoops/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLoops/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLoops/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterLoops/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMainFunction/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMainFunction/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMainFunction/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMainFunction/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMaps/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMaps/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMaps/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMaps/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMath/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMath/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMath/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMath/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMultisig/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMultisig/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMultisig/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterMultisig/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterOption/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterOption/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterOption/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterOption/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterPolymorphism/central.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterPolymorphism/central_types.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterPolymorphism/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterPolymorphism/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterPolymorphism/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterPolymorphism/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterPolymorphism/squadron.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterPolymorphism/squadron_types.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterRecords/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterRecords/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterRecords/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterRecords/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterStrings/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterStrings/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterStrings/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterStrings/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTimestamps/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTimestamps/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTimestamps/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTimestamps/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTransactions/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTransactions/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTransactions/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTransactions/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTuples/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTuples/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTuples/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTuples/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTypes/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTypes/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTypes/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterTypes/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterVariables/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterVariables/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterVariables/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterVariables/solution.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterVariant/course.md (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterVariant/exercise.ligo (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterVariant/index.ts (100%) rename src/{ => frontend/src/pages}/Chapters/Reason/ChapterVariant/solution.ligo (100%) create mode 100644 src/frontend/src/pages/Error404/Error404.controller.tsx create mode 100644 src/frontend/src/pages/Error404/Error404.style.tsx create mode 100644 src/frontend/src/pages/Error404/Error404.view.tsx create mode 100644 src/frontend/src/pages/ForgotPassword/ForgotPassword.actions.tsx create mode 100644 src/frontend/src/pages/ForgotPassword/ForgotPassword.controller.tsx create mode 100644 src/frontend/src/pages/ForgotPassword/ForgotPassword.reducers.tsx create mode 100644 src/frontend/src/pages/ForgotPassword/ForgotPassword.style.tsx create mode 100644 src/frontend/src/pages/ForgotPassword/ForgotPassword.view.tsx create mode 100644 src/frontend/src/pages/Home/Home.controller.tsx create mode 100644 src/frontend/src/pages/Home/Home.style.tsx rename src/{Homepage/Homepage.view.tsx => frontend/src/pages/Home/Home.view.tsx} (54%) create mode 100644 src/frontend/src/pages/Login/Login.actions.tsx create mode 100644 src/frontend/src/pages/Login/Login.controller.tsx create mode 100644 src/frontend/src/pages/Login/Login.style.tsx create mode 100644 src/frontend/src/pages/Login/Login.view.tsx create mode 100644 src/frontend/src/pages/ResetPassword/ResetPassword.actions.tsx create mode 100644 src/frontend/src/pages/ResetPassword/ResetPassword.controller.tsx create mode 100644 src/frontend/src/pages/ResetPassword/ResetPassword.reducers.tsx create mode 100644 src/frontend/src/pages/ResetPassword/ResetPassword.style.tsx create mode 100644 src/frontend/src/pages/ResetPassword/ResetPassword.view.tsx create mode 100644 src/frontend/src/pages/SignUp/SignUp.actions.tsx create mode 100644 src/frontend/src/pages/SignUp/SignUp.controller.tsx create mode 100644 src/frontend/src/pages/SignUp/SignUp.reducers.tsx create mode 100644 src/frontend/src/pages/SignUp/SignUp.style.tsx create mode 100644 src/frontend/src/pages/SignUp/SignUp.view.tsx create mode 100644 src/frontend/src/pages/VerifyEmail/VerifyEmail.actions.tsx create mode 100644 src/frontend/src/pages/VerifyEmail/VerifyEmail.components/VerifyEmailResend/VerifyEmailResend.actions.tsx create mode 100644 src/frontend/src/pages/VerifyEmail/VerifyEmail.components/VerifyEmailResend/VerifyEmailResend.controller.tsx create mode 100644 src/frontend/src/pages/VerifyEmail/VerifyEmail.components/VerifyEmailResend/VerifyEmailResend.style.tsx create mode 100644 src/frontend/src/pages/VerifyEmail/VerifyEmail.components/VerifyEmailResend/VerifyEmailResend.view.tsx create mode 100644 src/frontend/src/pages/VerifyEmail/VerifyEmail.controller.tsx create mode 100644 src/frontend/src/pages/VerifyEmail/VerifyEmail.style.tsx create mode 100644 src/frontend/src/pages/VerifyEmail/VerifyEmail.view.tsx rename src/{ => frontend/src}/react-app-env.d.ts (100%) create mode 100644 src/frontend/src/reducers/index.ts rename src/{ => frontend/src}/serviceWorker.ts (73%) create mode 100644 src/frontend/src/shared/captcha/Captcha.ts create mode 100644 src/frontend/src/shared/captcha/CaptchaFor.ts create mode 100644 src/frontend/src/shared/captcha/CaptchaPair.ts create mode 100644 src/frontend/src/shared/captcha/CaptchaSolution.ts create mode 100644 src/frontend/src/shared/mongo/DeleteRes.ts create mode 100644 src/frontend/src/shared/mongo/ResponseError.ts create mode 100644 src/frontend/src/shared/mongo/UpdateRes.ts create mode 100644 src/frontend/src/shared/quota/Quota.ts create mode 100644 src/frontend/src/shared/quota/QuotaRates.ts create mode 100644 src/frontend/src/shared/quota/QuotaType.ts create mode 100644 src/frontend/src/shared/user/ChangePassword.ts create mode 100644 src/frontend/src/shared/user/ForgotPassword.ts create mode 100644 src/frontend/src/shared/user/GetPublicUser.ts create mode 100644 src/frontend/src/shared/user/IsEqualTo.ts create mode 100644 src/frontend/src/shared/user/Jwt.ts create mode 100644 src/frontend/src/shared/user/JwtDecoded.ts create mode 100644 src/frontend/src/shared/user/JwtPayload.ts create mode 100644 src/frontend/src/shared/user/Login.ts create mode 100644 src/frontend/src/shared/user/PublicUser.ts create mode 100644 src/frontend/src/shared/user/ResetPassword.ts create mode 100644 src/frontend/src/shared/user/SignUp.ts create mode 100644 src/frontend/src/shared/user/User.ts create mode 100644 src/frontend/src/shared/user/UserRole.ts create mode 100644 src/frontend/src/shared/user/VerifyEmail.ts create mode 100644 src/frontend/src/styles/animations.ts create mode 100644 src/frontend/src/styles/colors.ts create mode 100644 src/frontend/src/styles/components.ts create mode 100644 src/frontend/src/styles/constants.ts create mode 100644 src/frontend/src/styles/fonts.css create mode 100644 src/frontend/src/styles/global.ts rename src/{ => frontend/src}/styles/index.ts (79%) create mode 100644 src/frontend/tsconfig.json create mode 100644 src/frontend/yarn.lock delete mode 100644 src/index.tsx delete mode 100644 src/reducers.ts delete mode 100644 src/setupTests.ts delete mode 100644 src/styles/animations.ts delete mode 100644 src/styles/colors.ts delete mode 100644 src/styles/components.ts delete mode 100644 src/styles/global.ts delete mode 100644 tsconfig.json delete mode 100644 workers-site/.cargo-ok delete mode 100644 workers-site/.gitignore delete mode 100644 workers-site/index.js delete mode 100644 workers-site/package-lock.json delete mode 100644 workers-site/package.json diff --git a/.env b/.env deleted file mode 100644 index 2d2e9a0..0000000 --- a/.env +++ /dev/null @@ -1 +0,0 @@ -INLINE_RUNTIME_CHUNK=false \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..278c743 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +node_modules +public +dist +coverage \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..fe1de6c --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,101 @@ +{ + "root": true, + // "parser": "babel-eslint", + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": 2018, + "sourceType": "module", + "project": [ + "./frontend/tsconfig.json", + "./api/tsconfig.json", + "./videos-converter/tsconfig.json", + "./images-converter/tsconfig.json", + "./uptime-scanner/tsconfig.json" + ], + "tsconfigRootDir": "src" + }, + "env": { + "browser": true, + "es6": true, + "node": true, + "jest": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + //"plugin:@typescript-eslint/recommended-requiring-type-checking" + "standard", + "plugin:react/recommended", + "plugin:jsx-a11y/recommended", + "prettier/@typescript-eslint", // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier + "plugin:prettier/recommended", + "plugin:import/errors", + "plugin:import/warnings", + "plugin:import/typescript", + "plugin:security/recommended" + ], + "settings": { + "react": { + "version": "latest" + }, + "import/extensions": [".js", ".jsx", ".ts", ".tsx"], + "import/parsers": { + "@typescript-eslint/parser": [".ts", ".tsx"] + } + }, + "plugins": ["@typescript-eslint/eslint-plugin", "import", "prettier", "standard", "react", "jsx-a11y", "security"], + "rules": { + //"no-unused-variable": "warn", + "import/no-unresolved": "error", + "import/named": "error", + "import/namespace": "error", + "import/default": "error", + "import/export": "error", + "import/no-absolute-path": "error", + "import/no-self-import": "error", + "import/no-cycle": "error", + "import/no-named-as-default": "error", + "import/no-named-as-default-member": "error", + "import/no-mutable-exports": "error", + "import/no-unused-modules": "warn", + "import/first": "error", + "import/exports-last": "error", + "import/no-duplicates": "error", + "import/order": "error", + "import/newline-after-import": "error", + "import/no-named-default": "error", + "import/no-default-export": "error", + "import/no-anonymous-default-export": "error", + "@typescript-eslint/promise-function-async": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/member-delimiter-style": [ + "error", + { + "multiline": { + "delimiter": "none", + "requireLast": false + }, + "singleline": { + "delimiter": "comma", + "requireLast": false + } + } + ], + "no-console": "off", + "react/jsx-filename-extension": [ + 1, + { + "extensions": [".js", ".jsx", ".ts", ".tsx"] + } + ], + "react/jsx-uses-react": 1, + "react/jsx-uses-vars": 1, + "react/prop-types": 0, + "prettier/prettier": 1 + } +} diff --git a/.gitignore b/.gitignore index 9135573..9cd21e9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,25 +1,18 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +**/.env +**/.env.development +**/.env.production +**/*.log +**/node_modules +**/dist +**/downloads +**/screenshots -# dependencies -/node_modules -/.pnp -.pnp.js +# Windows +**/Thumbs.db +**/ehthumbs.db +**/Desktop.ini +**/$RECYCLE.BIN/ -# testing -/coverage +# OSX +**/.DS_Store -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -wrangler.toml diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..2bb558f --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +node_modules +dist +public +workers-site +workers +coverage \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..f8fb56b --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "singleQuote": true, + "printWidth": 120, + "semi": false, + "trailingComma": "all", + "arrowParens": "always" +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..01344da --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,31 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "msjsdiag.debugger-for-chrome", + "esbenp.prettier-vscode", + "bungcip.better-toml", + "Shan.code-settings-sync", + "raymondcamden.csslint", + "mikestead.dotenv", + "donjayamanne.githistory", + "eamodio.gitlens", + "christian-kohler.npm-intellisense", + "christian-kohler.path-intellisense", + "Gruntfuggly.todo-tree", + "alfnielsen.vsc-organize-imports", + "anseki.vscode-color", + "pranaygp.vscode-css-peek", + "Prisma.vscode-graphql", + "emmanuelbeziat.vscode-great-icons", + "ecmel.vscode-html-css", + "wix.vscode-import-cost", + "eg2.vscode-npm-script", + "jaspernorth.vscode-pigments", + "GitHub.vscode-pull-request-github", + "mrmlnc.vscode-scss", + "jpoissonnier.vscode-styled-components", + "cssho.vscode-svgviewer", + "akamud.vscode-theme-onedark", + "VisualStudioExptTeam.vscodeintellicode" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2ba986f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/.vscode/my_command.js b/.vscode/my_command.js new file mode 100644 index 0000000..aeb3a72 --- /dev/null +++ b/.vscode/my_command.js @@ -0,0 +1,10 @@ +exports.execute = async (args) => { + // args => https://egodigital.github.io/vscode-powertools/api/interfaces/_contracts_.workspacecommandscriptarguments.html + + // s. https://code.visualstudio.com/api/references/vscode-api + const vscode = args.require('vscode'); + + vscode.window.showInformationMessage( + `Hello, from '${ args.command }'!` + ); +}; \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..735e66f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,60 @@ +({ + // Hide files that are rarely edited for better folder arrangement + "files.exclude": { + "LICENSE": true, + "**/.DS_Store": true, + "**/.git": true, + "**/.webpack": true, + "**/build": true, + "**/dist": true, + "**/coverage": true, + "**/node_modules": true, + // "**.prettier*": true, + // "**.travis*": true, + // "**/lerna.json": true, + // "**/.eslint*": true, + // "**/.gitignore*": true, + // "**/package-lock.json": true, + "**/yarn.lock": true + // "**/source-map-install.js": true, + // "**/tsconfig.json": true, + // "**/webpack.config.js": true + }, + "javascript.validate.enable": false, + "gitlens.codeLens.enabled": false, + "gitlens.codeLens.author.enabled": false, + "eslint.validate": [ + "javascript", + "javascriptreact", + { "language": "typescript", "autoFix": true }, + { "language": "typescriptreact", "autoFix": true } + ], + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "editor.formatOnSave": true, + "[javascript]": { + "editor.formatOnSave": false + }, + "[javascriptreact]": { + "editor.formatOnSave": false + }, + "[typescript]": { + "editor.formatOnSave": false + }, + "[typescriptreact]": { + "editor.formatOnSave": true + } +}, +{ + "ego.power-tools": { + "commands": { + "myCommand": { + "script": "my_command.js", + "button": { + "text": "Click here to start the command." + } + } + } + } +}) diff --git a/.vscode/tezosacademy-snippets.code-snippets b/.vscode/tezosacademy-snippets.code-snippets new file mode 100644 index 0000000..b9ab39e --- /dev/null +++ b/.vscode/tezosacademy-snippets.code-snippets @@ -0,0 +1,32 @@ +{ + "Styled Componant": { + "prefix": "sc", + "body": ["export const $1 = styled.div``"], + "description": "styled componant" + }, + "Ellipsis": { + "prefix": "ellipsis", + "body": ["white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"], + "description": "ellipsis" + }, + "Flex": { + "prefix": "flex", + "body": ["display: flex; align-items: center; justify-content: space-around;"], + "description": "flex" + }, + "Media": { + "prefix": "media", + "body": ["@media (max-width: 700px) { width: 100vw; }"], + "description": "media" + }, + "Grid": { + "prefix": "grid", + "body": ["display: grid; grid-template-columns: auto auto; grid-gap: 10px;"], + "description": "grid" + }, + "svg": { + "prefix": "svg", + "body": "", + "description": "svg" + } +} diff --git a/README.md b/README.md index 53f0be1..b51eed2 100644 --- a/README.md +++ b/README.md @@ -1,14 +1 @@ -

- serverless mern -

- - - - - - -
serverless mern - Tezos Academy is a fun interactive tutorial develloped by OCTO Technology on how to code smart contracts for Tezos. You are about to create a spaceship battle smart contract!

- By default, Tezos smart contracts are written in Michelson, but it is an hard to learn low level formal language. That is why we decide for this tutorial to use PascaLIGO instead. The syntax is high level, close to Pascal and transpiles to Michelson.

- In this tutorial, you are going to build a "Ship Factory" to build an army of spaceships, then we will add more and more functionalities as you progress through the tutorial, such as going into space battles! -
+# tezosacademy diff --git a/dist/worker.js b/dist/worker.js deleted file mode 100644 index 9e83b3b..0000000 --- a/dist/worker.js +++ /dev/null @@ -1 +0,0 @@ -!function(a){var i={};function p(t){if(i[t])return i[t].exports;var n=i[t]={i:t,l:!1,exports:{}};return a[t].call(n.exports,n,n.exports,p),n.l=!0,n.exports}p.m=a,p.c=i,p.d=function(a,i,t){p.o(a,i)||Object.defineProperty(a,i,{enumerable:!0,get:t})},p.r=function(a){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},p.t=function(a,i){if(1&i&&(a=p(a)),8&i)return a;if(4&i&&"object"==typeof a&&a&&a.__esModule)return a;var t=Object.create(null);if(p.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:a}),2&i&&"string"!=typeof a)for(var n in a)p.d(t,n,function(i){return a[i]}.bind(null,n));return t},p.n=function(a){var i=a&&a.__esModule?function(){return a.default}:function(){return a};return p.d(i,"a",i),i},p.o=function(a,i){return Object.prototype.hasOwnProperty.call(a,i)},p.p="",p(p.s=4)}([function(a,i,p){"use strict";var t=p(1);a.exports=new t(p(2),p(3))},function(a,i,p){"use strict";function t(){this._types=Object.create(null),this._extensions=Object.create(null);for(var a=0;a{const i=new URL(a.url);let p=i.pathname;return p.endsWith("/")?p=p.concat("index.html"):n.a.getType(p)||(p=p.concat("/index.html")),i.pathname=p,new Request(i,a)},e={browserTTL:0,edgeTTL:864e4,bypassCache:!1},c=async(a,i)=>{i=Object.assign({ASSET_NAMESPACE:__STATIC_CONTENT,ASSET_MANIFEST:__STATIC_CONTENT_MANIFEST,mapRequestToAsset:o,cacheControl:e},i);const p=a.request,t=i.ASSET_NAMESPACE,c=i.ASSET_MANIFEST;if(!["GET","HEAD"].includes(p.method))throw new Error(`${p.method} is not a valid request method`);if(void 0===t)throw new Error(`there is no ${t} namespace bound to the script`);const l=i.mapRequestToAsset(p),d=new URL(l.url);let s=d.pathname.replace(/^\/+/,"");const m=caches.default,r=n.a.getType(s)||"text/plain";let v=!1;void 0!==c&&JSON.parse(c)[s]&&(s=JSON.parse(c)[s],v=!0);const x=`${d.origin}/${s}`,f=(()=>{switch(typeof i.cacheControl){case"function":return i.cacheControl(p);case"object":return i.cacheControl;default:return e}})();i.cacheControl=Object.assign({},e,f),i.cacheControl.bypassCache&&(v=!1);let u=null;if(v&&(u=await m.match(x)),u){let a=new Headers(u.headers);a.set("CF-Cache-Status","HIT"),u=new Response(u.body,{headers:a})}else{const p=await __STATIC_CONTENT.get(s,"arrayBuffer");if(null===p)throw new Error(`could not find ${s} in your content namespace`);u=new Response(p),v&&(u.headers.set("CF-Cache-Status","MISS"),u.headers.set("Cache-Control",`max-age=${i.cacheControl.edgeTTL}`),a.waitUntil(m.put(x,u.clone())),u.headers.delete("Cache-Control"))}return u.headers.set("Content-Type",r),i.cacheControl.browserTTL&&u.headers.set("Cache-Control",`max-age=${i.cacheControl.browserTTL}`),u};addEventListener("fetch",a=>{try{a.respondWith(async function(a){new URL(a.request.url);let i={};try{return await c(a,i)}catch(i){try{let i=await c(a,{mapRequestToAsset:a=>new Request(`${new URL(a.url).origin}/404.html`,a)});return new Response(i.body,{...i,status:404})}catch(a){}return new Response(i.message||i.toString(),{status:500})}}(a))}catch(i){0,a.respondWith(new Response("Internal Error",{status:500}))}})}]); \ No newline at end of file diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000..7c8905c --- /dev/null +++ b/lerna.json @@ -0,0 +1,5 @@ +{ + "packages": ["src/*"], + "npmClient": "yarn", + "version": "independent" +} diff --git a/package.json b/package.json index 0c36d72..9dd3a7d 100644 --- a/package.json +++ b/package.json @@ -1,60 +1,54 @@ { - "name": "tezos-academy", - "version": "0.1.0", - "private": true, + "name": "tezosacademy", + "version": "2.0.0", "scripts": { - "publish": "react-scripts build && wrangler publish", - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" + "start": "lerna exec -- yarn run --parallel start", + "build": "lerna exec -- yarn run --parallel build", + "lint": "eslint '**/*.{js,jsx}'", + "lint:fix": "npm run lint -- --fix", + "prettier": "prettier -l '**/*.{js,jsx,ts,tsx,json,md}'", + "test": "lerna run --parallel test", + "postinstall": "lerna bootstrap" }, - "dependencies": { - "@monaco-editor/react": "3.2.1", - "@testing-library/jest-dom": "^5.5.0", - "@testing-library/react": "^10.0.3", - "@testing-library/user-event": "^10.0.2", + "devDependencies": { "@types/jest": "^25.2.1", - "@types/node": "^13.13.2", - "@types/react": "^16.9.34", - "@types/react-dom": "^16.9.6", - "connected-react-router": "^6.8.0", - "markdown-to-jsx": "^6.11.1", - "rc-slider": "^9.2.4", - "react": "^16.13.1", - "react-dom": "^16.13.1", - "react-redux": "^7.2.0", - "react-router": "^5.1.2", - "react-router-dom": "^5.1.2", - "react-scripts": "3.4.1", - "react-transition-group": "^4.3.0", - "redux": "^4.0.5", - "redux-thunk": "^2.3.0", - "styled-components": "^5.1.0", - "typescript": "~3.8.3" - }, - "eslintConfig": { - "extends": "react-app" + "@typescript-eslint/eslint-plugin": "^2.30.0", + "@typescript-eslint/parser": "^2.30.0", + "babel-eslint": "^10.1.0", + "eslint": "^6.8.0", + "eslint-config-prettier": "^6.11.0", + "eslint-config-sinon": "^4.0.0", + "eslint-config-standard": "^14.1.1", + "eslint-import-resolver-webpack": "^0.12.1", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-jest": "^23.8.2", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.1.3", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-react": "^7.19.0", + "eslint-plugin-security": "^1.4.0", + "eslint-plugin-standard": "^4.0.1", + "husky": "^4.2.5", + "jest": "24.9.0", + "lerna": "^3.20.2", + "lint-staged": "^10.2.2", + "prettier": "^2.0.5", + "ts-jest": "^25.4.0", + "ts-node": "^8.10.1", + "tsc": "^1.20150623.0", + "typescript": "^3.9.2" }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" + "lint-staged": { + "*.{js,jsx}": [ + "eslint" + ], + "*.{js,jsx,ts,tsx,json,md}": [ + "prettier --check" ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" + "*.js": [ + "eslint --fix", + "git add" ] - }, - "devDependencies": { - "@types/markdown-to-jsx": "^6.11.0", - "@types/rc-slider": "^8.6.5", - "@types/react-redux": "^7.1.7", - "@types/react-router-dom": "^5.1.4", - "@types/react-transition-group": "^4.2.4", - "@types/styled-components": "^5.1.0", - "raw-loader": "^4.0.1" } } diff --git a/public/character-bg 2.svg b/public/character-bg 2.svg deleted file mode 100644 index f420794..0000000 --- a/public/character-bg 2.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/elements/character-bg.svg b/public/elements/character-bg.svg deleted file mode 100644 index f420794..0000000 --- a/public/elements/character-bg.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/index.html b/public/index.html deleted file mode 100644 index f998d12..0000000 --- a/public/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - Tezos Academy - - - -
- - diff --git a/src/App/App.controller.tsx b/src/App/App.controller.tsx deleted file mode 100644 index 516c2b6..0000000 --- a/src/App/App.controller.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { ConnectedRouter } from "connected-react-router"; -import { History } from "history"; -import * as PropTypes from "prop-types"; -import * as React from "react"; - -import { Drawer } from "../Drawer/Drawer.controller"; -import { Footer } from "../Footer/Footer.controller"; -import { Header } from "../Header/Header.controller"; -import { AppView } from "./App.view"; - -type AppProps = { history: History }; - -export const App = ({ history }: AppProps) => { - return ( - -
- - -