gitextract_5q18uku4/ ├── .agents/ │ └── skills/ │ ├── nestjs-best-practices/ │ │ ├── .github/ │ │ │ └── workflows/ │ │ │ ├── branch-protection.yml │ │ │ └── deploy.yml │ │ ├── .gitignore │ │ ├── AGENTS.md │ │ ├── README.md │ │ ├── SKILL.md │ │ ├── rules/ │ │ │ ├── api-use-dto-serialization.md │ │ │ ├── api-use-interceptors.md │ │ │ ├── api-use-pipes.md │ │ │ ├── api-versioning.md │ │ │ ├── arch-avoid-circular-deps.md │ │ │ ├── arch-feature-modules.md │ │ │ ├── arch-module-sharing.md │ │ │ ├── arch-single-responsibility.md │ │ │ ├── arch-use-events.md │ │ │ ├── arch-use-repository-pattern.md │ │ │ ├── db-avoid-n-plus-one.md │ │ │ ├── db-use-migrations.md │ │ │ ├── db-use-transactions.md │ │ │ ├── devops-graceful-shutdown.md │ │ │ ├── devops-use-config-module.md │ │ │ ├── devops-use-logging.md │ │ │ ├── di-avoid-service-locator.md │ │ │ ├── di-interface-segregation.md │ │ │ ├── di-liskov-substitution.md │ │ │ ├── di-prefer-constructor-injection.md │ │ │ ├── di-scope-awareness.md │ │ │ ├── di-use-interfaces-tokens.md │ │ │ ├── error-handle-async-errors.md │ │ │ ├── error-throw-http-exceptions.md │ │ │ ├── error-use-exception-filters.md │ │ │ ├── micro-use-health-checks.md │ │ │ ├── micro-use-patterns.md │ │ │ ├── micro-use-queues.md │ │ │ ├── perf-async-hooks.md │ │ │ ├── perf-lazy-loading.md │ │ │ ├── perf-optimize-database.md │ │ │ ├── perf-use-caching.md │ │ │ ├── security-auth-jwt.md │ │ │ ├── security-rate-limiting.md │ │ │ ├── security-sanitize-output.md │ │ │ ├── security-use-guards.md │ │ │ ├── security-validate-all-input.md │ │ │ ├── test-e2e-supertest.md │ │ │ ├── test-mock-external-services.md │ │ │ └── test-use-testing-module.md │ │ └── scripts/ │ │ ├── build-agents.ts │ │ ├── build.sh │ │ └── package.json │ ├── typeorm/ │ │ └── SKILL.md │ └── typescript-advanced-types/ │ └── SKILL.md ├── .dockerignore ├── .editorconfig ├── .eslintignore ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ ├── data-issue-report.md │ │ └── feature-request.md │ ├── auto-label.json │ ├── copilot-instructions.md │ ├── pull_request_template.md │ └── workflows/ │ ├── deploy-sloths.yaml │ ├── deploy.yaml │ ├── pull_request.yml │ ├── pull_request_close.yml │ └── renovate.yml ├── .gitignore ├── .oxfmtrc.json ├── AGENTS.md ├── CONTRIBUTING.md ├── DOMAIN.md ├── GUIDELINES.md ├── LICENSE ├── README.md ├── VITEST.md ├── client/ │ ├── .dockerignore │ ├── Dockerfile │ ├── Dockerfile.lambda │ ├── README.md │ ├── eslint.config.mjs │ ├── next-env.d.ts │ ├── next.config.mjs │ ├── next.config.prod.mjs │ ├── package.json │ ├── playwright.config.ts │ ├── public/ │ │ └── static/ │ │ └── empty.txt │ ├── specs/ │ │ └── smoke.spec.ts │ ├── src/ │ │ ├── __mocks__/ │ │ │ ├── axios.js │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── useMessage.tsx │ │ │ │ └── useTheme.tsx │ │ │ └── next/ │ │ │ └── config.ts │ │ ├── __tests__/ │ │ │ ├── ProfilePage.test.tsx │ │ │ └── __snapshots__/ │ │ │ └── ProfilePage.test.tsx.snap │ │ ├── api/ │ │ │ ├── .gitignore │ │ │ ├── .npmignore │ │ │ ├── .openapi-generator/ │ │ │ │ ├── FILES │ │ │ │ └── VERSION │ │ │ ├── .openapi-generator-ignore │ │ │ ├── api.ts │ │ │ ├── base.ts │ │ │ ├── common.ts │ │ │ ├── configuration.ts │ │ │ ├── git_push.sh │ │ │ └── index.ts │ │ ├── components/ │ │ │ ├── Analytics.tsx │ │ │ ├── Comment.tsx │ │ │ ├── CountBadge/ │ │ │ │ ├── CountBadge.tsx │ │ │ │ └── index.tsx │ │ │ ├── CoursePageLayout.tsx │ │ │ ├── DevTools/ │ │ │ │ ├── DevToolsContainer.tsx │ │ │ │ ├── DevToolsCurrentUser.tsx │ │ │ │ ├── DevToolsUsers.tsx │ │ │ │ └── index.ts │ │ │ ├── Footer/ │ │ │ │ ├── Donation.tsx │ │ │ │ ├── Feedback.tsx │ │ │ │ ├── FooterLayout.tsx │ │ │ │ ├── Help.tsx │ │ │ │ ├── Menu.tsx │ │ │ │ ├── SocialNetworks.tsx │ │ │ │ └── index.tsx │ │ │ ├── HeaderMiniBannerCarousel.module.css │ │ │ ├── HeaderMiniBannerCarousel.test.tsx │ │ │ ├── HeaderMiniBannerCarousel.tsx │ │ │ ├── Heroes/ │ │ │ │ ├── HeroesCountBadge.tsx │ │ │ │ ├── HeroesRadarTab.tsx │ │ │ │ └── HeroesRadarTable.tsx │ │ │ ├── LoadingScreen.module.css │ │ │ ├── MentorOptions.tsx │ │ │ ├── Profile/ │ │ │ │ ├── AboutCard.tsx │ │ │ │ ├── CommonCard.tsx │ │ │ │ ├── CommonCardWithSettingsModal.tsx │ │ │ │ ├── ContactsCard.tsx │ │ │ │ ├── ContactsCardForm.tsx │ │ │ │ ├── DiscordCard.tsx │ │ │ │ ├── EducationCard.tsx │ │ │ │ ├── EmailConfirmation.tsx │ │ │ │ ├── InterviewCard.tsx │ │ │ │ ├── InterviewModal.tsx │ │ │ │ ├── LanguagesCard.tsx │ │ │ │ ├── MainCard.tsx │ │ │ │ ├── MentorStatsCard.tsx │ │ │ │ ├── MentorStatsModal.tsx │ │ │ │ ├── ObfuscateConfirmationModal.tsx │ │ │ │ ├── ProfileSettingsModal.module.css │ │ │ │ ├── ProfileSettingsModal.tsx │ │ │ │ ├── PublicFeedbackCard.tsx │ │ │ │ ├── PublicFeedbackModal.tsx │ │ │ │ ├── StudentLeaveCourse.tsx │ │ │ │ ├── StudentStatsCard.tsx │ │ │ │ ├── StudentStatsModal.tsx │ │ │ │ ├── __test__/ │ │ │ │ │ ├── AboutCard.test.tsx │ │ │ │ │ ├── CommonCard.test.tsx │ │ │ │ │ ├── CommonCardWithSettingsModal.test.tsx │ │ │ │ │ ├── ContactsCard.test.tsx │ │ │ │ │ ├── ContactsCardForm.test.tsx │ │ │ │ │ ├── EducationCard.test.tsx │ │ │ │ │ ├── InterviewCard.test.tsx │ │ │ │ │ ├── InterviewModal.test.tsx │ │ │ │ │ ├── MainCard.test.tsx │ │ │ │ │ ├── MentorStatsCard.test.tsx │ │ │ │ │ ├── MentorStatsModal.test.tsx │ │ │ │ │ ├── ProfileSettingsModal.test.tsx │ │ │ │ │ ├── PublicFeedbackCard.test.tsx │ │ │ │ │ ├── PublicFeedbackModal.test.tsx │ │ │ │ │ ├── StudentStatsCard.test.tsx │ │ │ │ │ ├── StudentStatsModal.test.tsx │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── AboutCard.test.tsx.snap │ │ │ │ │ ├── CommonCard.test.tsx.snap │ │ │ │ │ ├── CommonCardWithSettingsModal.test.tsx.snap │ │ │ │ │ ├── ContactsCard.test.tsx.snap │ │ │ │ │ ├── ContactsCardForm.test.tsx.snap │ │ │ │ │ ├── EducationCard.test.tsx.snap │ │ │ │ │ ├── MainCard.test.tsx.snap │ │ │ │ │ ├── ProfileSettingsModal.test.tsx.snap │ │ │ │ │ ├── PublicFeedbackCard.test.tsx.snap │ │ │ │ │ ├── PublicFeedbackModal.test.tsx.snap │ │ │ │ │ ├── StudentStatsCard.test.tsx.snap │ │ │ │ │ └── StudentStatsModal.test.tsx.snap │ │ │ │ └── ui/ │ │ │ │ ├── DateWidget.tsx │ │ │ │ ├── ExpandButtonWidget.tsx │ │ │ │ ├── InterviewerWidget.tsx │ │ │ │ ├── IsGoodCandidateWidget.tsx │ │ │ │ ├── LegacyScreeningFeedback.tsx │ │ │ │ ├── PrescreeningFeedback.tsx │ │ │ │ ├── ScoreWidget.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── DateWidget.test.tsx │ │ │ │ │ ├── ExpandButtonWidget.test.tsx │ │ │ │ │ ├── InterviewerWidget.test.tsx │ │ │ │ │ ├── IsGoodCandidateWidget.test.tsx │ │ │ │ │ └── ScoreWidget.test.tsx │ │ │ │ └── index.ts │ │ │ ├── RegistrationPageLayout.tsx │ │ │ ├── SelectLanguages.tsx │ │ │ ├── SettingsItem.tsx │ │ │ ├── SlothImage.tsx │ │ │ ├── Student/ │ │ │ │ ├── AssignStudentModal.tsx │ │ │ │ ├── DashboardDetails.module.css │ │ │ │ ├── DashboardDetails.tsx │ │ │ │ └── index.ts │ │ │ ├── StudentDiscord.tsx │ │ │ ├── TabsWithCounter/ │ │ │ │ └── renderers.tsx │ │ │ ├── Warning/ │ │ │ │ └── index.tsx │ │ │ ├── WelcomeCard.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── CopyToClipboardButton.test.tsx │ │ │ │ ├── GithubUserLink.test.tsx │ │ │ │ ├── Rating.test.tsx │ │ │ │ └── StudenDiscrod.test.tsx │ │ │ ├── common/ │ │ │ │ └── CustomPopconfirm.tsx │ │ │ ├── useLoading.tsx │ │ │ ├── withGoogleMaps.tsx │ │ │ └── withSession.tsx │ │ ├── configs/ │ │ │ ├── cdn.ts │ │ │ ├── course-icons.ts │ │ │ ├── discord-integration.ts │ │ │ ├── gcp.ts │ │ │ ├── heroes-badges.ts │ │ │ ├── registry.ts │ │ │ └── timezones.ts │ │ ├── data/ │ │ │ ├── course-leave-reasons.ts │ │ │ ├── english.ts │ │ │ ├── eventTypes.ts │ │ │ ├── index.ts │ │ │ ├── interviews/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── templateValidator.test.ts │ │ │ │ ├── angular.ts │ │ │ │ ├── corejs1.ts │ │ │ │ ├── corejs2.ts │ │ │ │ ├── index.ts │ │ │ │ ├── react.ts │ │ │ │ ├── shortTrackJavaScript.ts │ │ │ │ ├── shortTrackPerformance.ts │ │ │ │ ├── shortTrackScreening.ts │ │ │ │ ├── shortTrackTypeScript.ts │ │ │ │ ├── technical-screening.tsx │ │ │ │ ├── templateValidator.ts │ │ │ │ └── types.ts │ │ │ ├── skills.ts │ │ │ ├── taskTypes.ts │ │ │ └── tshirts.ts │ │ ├── domain/ │ │ │ ├── course.test.ts │ │ │ ├── course.ts │ │ │ ├── interview.test.ts │ │ │ ├── interview.tsx │ │ │ ├── user.test.tsx │ │ │ └── user.ts │ │ ├── hooks/ │ │ │ └── index.ts │ │ ├── index.d.ts │ │ ├── modules/ │ │ │ ├── AutoTest/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AttemptsAnswers/ │ │ │ │ │ │ └── AttemptsAnswers.tsx │ │ │ │ │ ├── AutoTestTaskCard/ │ │ │ │ │ │ └── AutoTestTaskCard.tsx │ │ │ │ │ ├── Coding/ │ │ │ │ │ │ ├── Coding.test.tsx │ │ │ │ │ │ └── Coding.tsx │ │ │ │ │ ├── Exercise/ │ │ │ │ │ │ └── Exercise.tsx │ │ │ │ │ ├── JupyterNotebook/ │ │ │ │ │ │ └── JupyterNotebook.tsx │ │ │ │ │ ├── Question/ │ │ │ │ │ │ ├── Question.module.css │ │ │ │ │ │ └── Question.tsx │ │ │ │ │ ├── SelfEducation/ │ │ │ │ │ │ ├── SelfEducation.module.css │ │ │ │ │ │ ├── SelfEducation.test.tsx │ │ │ │ │ │ └── SelfEducation.tsx │ │ │ │ │ ├── StatusTabs/ │ │ │ │ │ │ ├── StatusTabs.test.tsx │ │ │ │ │ │ ├── StatusTabs.tsx │ │ │ │ │ │ └── renderers.tsx │ │ │ │ │ ├── TaskCard/ │ │ │ │ │ │ ├── TaskCard.test.tsx │ │ │ │ │ │ └── TaskCard.tsx │ │ │ │ │ ├── TaskCardColumn/ │ │ │ │ │ │ └── TaskCardColumn.tsx │ │ │ │ │ ├── TaskDeadlineDate/ │ │ │ │ │ │ ├── TaskDeadlineDate.test.tsx │ │ │ │ │ │ └── TaskDeadlineDate.tsx │ │ │ │ │ ├── TaskDescription/ │ │ │ │ │ │ └── TaskDescription.tsx │ │ │ │ │ ├── VerificationInformation/ │ │ │ │ │ │ ├── VerificationInformation.test.tsx │ │ │ │ │ │ └── VerificationInformation.tsx │ │ │ │ │ ├── VerificationsTable/ │ │ │ │ │ │ ├── VerificationsTable.test.tsx │ │ │ │ │ │ ├── VerificationsTable.tsx │ │ │ │ │ │ └── renderers.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useAttemptsMessage/ │ │ │ │ │ │ ├── useAttemptsMessage.test.ts │ │ │ │ │ │ └── useAttemptsMessage.ts │ │ │ │ │ ├── useCourseTaskSubmit/ │ │ │ │ │ │ ├── useCourseTaskSubmit.test.ts │ │ │ │ │ │ └── useCourseTaskSubmit.ts │ │ │ │ │ ├── useCourseTaskVerifications/ │ │ │ │ │ │ └── useCourseTaskVerifications.ts │ │ │ │ │ └── useVerificationsAnswers/ │ │ │ │ │ └── useVerificationsAnswers.ts │ │ │ │ ├── pages/ │ │ │ │ │ ├── AutoTests/ │ │ │ │ │ │ └── AutoTests.tsx │ │ │ │ │ ├── Task/ │ │ │ │ │ │ └── Task.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ └── map.ts │ │ │ ├── Contributor/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ContributorModal.tsx │ │ │ │ │ └── ContributorsTable.tsx │ │ │ │ └── pages/ │ │ │ │ └── ContributorPage.tsx │ │ │ ├── Course/ │ │ │ │ ├── components/ │ │ │ │ │ ├── CourseNoAccess.tsx │ │ │ │ │ └── NoSubmissionAvailable/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── contexts/ │ │ │ │ │ ├── ActiveCourseContext.tsx │ │ │ │ │ ├── SessionContext.test.tsx │ │ │ │ │ ├── SessionContext.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── pages/ │ │ │ │ ├── CouseNoAccess/ │ │ │ │ │ └── index.tsx │ │ │ │ └── Student/ │ │ │ │ └── CrossCheckSubmit/ │ │ │ │ └── index.tsx │ │ │ ├── CourseManagement/ │ │ │ │ ├── components/ │ │ │ │ │ ├── CertificateCriteriaModal/ │ │ │ │ │ │ ├── CertificateCriteriaModal.test.tsx │ │ │ │ │ │ └── CertificateCriteriaModal.tsx │ │ │ │ │ ├── CourseEventModal/ │ │ │ │ │ │ ├── formState.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CourseModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CourseTaskModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CoursesListModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ExpelCriteriaModal/ │ │ │ │ │ │ ├── ExpelCriteriaModal.test.tsx │ │ │ │ │ │ └── ExpelCriteriaModal.tsx │ │ │ │ │ ├── ExpelledStudentsStats.tsx │ │ │ │ │ ├── SelectCourseTasks/ │ │ │ │ │ │ ├── SelectCourseTasks.test.tsx │ │ │ │ │ │ └── SelectCourseTasks.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── hooks/ │ │ │ │ └── useExpelledStats.ts │ │ │ ├── CourseStatistics/ │ │ │ │ ├── components/ │ │ │ │ │ ├── CountriesChart/ │ │ │ │ │ │ └── CountriesChart.tsx │ │ │ │ │ ├── DonutChart/ │ │ │ │ │ │ └── DonutChart.tsx │ │ │ │ │ ├── EpamMentorsStatsCard/ │ │ │ │ │ │ ├── EpamMentorsStatsCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── LiquidChart/ │ │ │ │ │ │ └── LiquidChart.tsx │ │ │ │ │ ├── MentorsCountriesCard/ │ │ │ │ │ │ ├── MentorsCountriesCard.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── StatCards/ │ │ │ │ │ │ ├── StatCards.module.css │ │ │ │ │ │ ├── StatCards.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── StatScopeSelector/ │ │ │ │ │ │ ├── StatScopeSelector.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── StudentsCertificatesCountriesCard/ │ │ │ │ │ │ ├── StudentsCertificatesCountriesCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── StudentsCountriesCard/ │ │ │ │ │ │ ├── StudentsCountriesCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── StudentsEligibleForCertificationCard/ │ │ │ │ │ │ ├── StudentsEligibleForCertificationCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── StudentsStatsCard/ │ │ │ │ │ │ ├── StudentsStatsCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── StudentsWithCertificateCard/ │ │ │ │ │ │ ├── StudentsWithCertificateCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── StudentsWithMentorsCard/ │ │ │ │ │ │ ├── StudentsWithMentorsCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── TaskPerformanceCard/ │ │ │ │ │ ├── TaskPerformanceCard.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── data.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── useCourseStats.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── pages/ │ │ │ │ └── CourseStatistics.tsx │ │ │ ├── CrossCheck/ │ │ │ │ ├── AddCriteriaForCrossCheck.tsx │ │ │ │ ├── CriteriaActions.tsx │ │ │ │ ├── CriteriaTypeSelect.tsx │ │ │ │ ├── DeleteAllCrossCheckCriteriaButton.tsx │ │ │ │ ├── EditableCellForCrossCheck.tsx │ │ │ │ ├── EditableCriteriaInput.tsx │ │ │ │ ├── EditableTableForCrossCheck.tsx │ │ │ │ ├── ExportJSONButton.tsx │ │ │ │ ├── UploadCriteriaJSON.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── AddCriteriaForCrossCheck.test.tsx │ │ │ │ │ ├── ExportJSONButton.test.tsx │ │ │ │ │ ├── UploadCriteriaJSON.test.tsx │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── AddCriteriaForCrossCheck.test.tsx.snap │ │ │ │ ├── components/ │ │ │ │ │ ├── CriteriaForm.tsx │ │ │ │ │ ├── CrossCheckAssignmentLink.tsx │ │ │ │ │ ├── CrossCheckCriteriaForm.module.css │ │ │ │ │ ├── CrossCheckCriteriaForm.tsx │ │ │ │ │ ├── CrossCheckHistory.tsx │ │ │ │ │ ├── DragHandle.module.css │ │ │ │ │ ├── DragHandle.tsx │ │ │ │ │ ├── DragSortTable.tsx │ │ │ │ │ ├── SolutionReview/ │ │ │ │ │ │ ├── Message/ │ │ │ │ │ │ │ ├── Message.test.tsx │ │ │ │ │ │ │ ├── Message.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── MessageSendingPanel/ │ │ │ │ │ │ │ ├── MessageSendingPanel.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── SolutionReview.module.css │ │ │ │ │ │ ├── SolutionReview.tsx │ │ │ │ │ │ ├── UserAvatar/ │ │ │ │ │ │ │ ├── UserAvatar.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── Username/ │ │ │ │ │ │ │ ├── Username.test.tsx │ │ │ │ │ │ │ ├── Username.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── SolutionReviewSettingsPanel/ │ │ │ │ │ │ ├── SolutionReviewSettingsPanel.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── SubmittedStatus.tsx │ │ │ │ │ └── criteria/ │ │ │ │ │ ├── CrossCheckCriteria.tsx │ │ │ │ │ ├── CrossCheckCriteriaModal.tsx │ │ │ │ │ ├── PenaltyCriteria.tsx │ │ │ │ │ ├── SubtaskCriteria.tsx │ │ │ │ │ └── TitleCriteria.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── useSolutionReviewSettings.ts │ │ │ │ ├── index.tsx │ │ │ │ └── utils/ │ │ │ │ ├── addKeyAndIndex.tsx │ │ │ │ ├── arrayMoveImmutable.tsx │ │ │ │ └── getCriteriaStatusColor.ts │ │ │ ├── CrossCheckPairs/ │ │ │ │ ├── components/ │ │ │ │ │ ├── BadReview/ │ │ │ │ │ │ ├── BadReviewControllers.tsx │ │ │ │ │ │ └── BadReviewTable.tsx │ │ │ │ │ └── CrossCheckPairsTable/ │ │ │ │ │ ├── CrossCheckPairsTable.module.css │ │ │ │ │ └── CrossCheckPairsTable.tsx │ │ │ │ ├── data/ │ │ │ │ │ └── getCrossCheckPairsColumns.tsx │ │ │ │ └── pages/ │ │ │ │ └── CrossCheckPairs/ │ │ │ │ ├── CrossCheckPairs.tsx │ │ │ │ └── index.ts │ │ │ ├── Discipline/ │ │ │ │ ├── components/ │ │ │ │ │ ├── DisciplineModal.tsx │ │ │ │ │ └── DisciplineTable.tsx │ │ │ │ └── pages/ │ │ │ │ └── DisciplinePage.tsx │ │ │ ├── DiscordAdmin/ │ │ │ │ ├── components/ │ │ │ │ │ ├── DiscordServersModal.tsx │ │ │ │ │ └── DiscordServersTable.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── useDiscordServers.ts │ │ │ │ ├── index.ts │ │ │ │ └── pages/ │ │ │ │ └── DiscordAdminPage/ │ │ │ │ ├── DiscordAdminPage.tsx │ │ │ │ └── index.ts │ │ │ ├── EventsAdmin/ │ │ │ │ ├── components/ │ │ │ │ │ ├── EventsModal.tsx │ │ │ │ │ └── EventsTable.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── useEvents.ts │ │ │ │ ├── index.ts │ │ │ │ └── pages/ │ │ │ │ └── EventsAdminPage/ │ │ │ │ ├── EventsAdminPage.tsx │ │ │ │ └── index.ts │ │ │ ├── Feedback/ │ │ │ │ ├── components/ │ │ │ │ │ └── FeedbackForm.tsx │ │ │ │ └── data/ │ │ │ │ └── softSkills.ts │ │ │ ├── Home/ │ │ │ │ ├── components/ │ │ │ │ │ ├── CourseLinks/ │ │ │ │ │ │ ├── CourseLinks.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CourseSelector/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── HomeSummary/ │ │ │ │ │ │ ├── HomeSummary.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── NoCourse/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RegistryBanner/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── SystemAlerts/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── data/ │ │ │ │ │ ├── links.tsx │ │ │ │ │ └── loadHomeData.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useActiveCourse.test.tsx │ │ │ │ │ ├── useActiveCourse.tsx │ │ │ │ │ └── useStudentSummary.tsx │ │ │ │ └── pages/ │ │ │ │ └── HomePage/ │ │ │ │ └── index.tsx │ │ │ ├── Interview/ │ │ │ │ └── Student/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AlertDescription.module.css │ │ │ │ │ ├── AlertDescription.tsx │ │ │ │ │ ├── ExtraInfo.tsx │ │ │ │ │ ├── InterviewCard.tsx │ │ │ │ │ ├── InterviewDescription.tsx │ │ │ │ │ ├── NoInterviewsAlert.tsx │ │ │ │ │ └── StatusLabel.tsx │ │ │ │ ├── data/ │ │ │ │ │ └── getInterviewCardDetails.tsx │ │ │ │ └── index.ts │ │ │ ├── Interviews/ │ │ │ │ ├── data/ │ │ │ │ │ ├── getInterviewData.ts │ │ │ │ │ ├── getStageInterviewData.ts │ │ │ │ │ └── index.ts │ │ │ │ └── pages/ │ │ │ │ ├── InterviewFeedback/ │ │ │ │ │ └── index.tsx │ │ │ │ └── StageInterviewFeedback/ │ │ │ │ ├── CustomQuestion.tsx │ │ │ │ ├── FormItem.tsx │ │ │ │ ├── NestedRadio.tsx │ │ │ │ ├── QuestionCard.tsx │ │ │ │ ├── QuestionList.tsx │ │ │ │ ├── QuestionsPicker.tsx │ │ │ │ ├── StageInterviewFeedback.tsx │ │ │ │ ├── StepContext.tsx │ │ │ │ ├── StepForm.tsx │ │ │ │ ├── Steps.tsx │ │ │ │ ├── StepsContent.tsx │ │ │ │ ├── StudentInfo.tsx │ │ │ │ ├── SubHeader.module.css │ │ │ │ ├── SubHeader.tsx │ │ │ │ ├── feedbackTemplateHandler.test.ts │ │ │ │ ├── feedbackTemplateHandler.ts │ │ │ │ └── index.ts │ │ │ ├── Mentor/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Instructions/ │ │ │ │ │ │ ├── Instructions.tsx │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── renderers.tsx │ │ │ │ │ ├── MentorDashboard/ │ │ │ │ │ │ ├── MentorDashboard.test.tsx │ │ │ │ │ │ ├── MentorDashboard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Notification/ │ │ │ │ │ │ ├── Notification.test.tsx │ │ │ │ │ │ ├── Notification.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ReviewRandomTask/ │ │ │ │ │ │ ├── ReviewRandomTask.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SubmitReviewModal/ │ │ │ │ │ │ ├── SubmitReviewModal.test.tsx │ │ │ │ │ │ ├── SubmitReviewModal.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── TaskSolutionsTable/ │ │ │ │ │ │ ├── TaskSolutionsTable.test.tsx │ │ │ │ │ │ ├── TaskSolutionsTable.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── renderers.tsx │ │ │ │ │ ├── TaskStatusTabs/ │ │ │ │ │ │ ├── TaskStatusTabs.test.tsx │ │ │ │ │ │ ├── TaskStatusTabs.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── renderers.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── data/ │ │ │ │ │ └── softSkills.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useMentorDashboard.tsx │ │ │ │ │ └── useMentorStudents.tsx │ │ │ │ └── pages/ │ │ │ │ ├── InterviewWaitingList/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Interviews/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── InterviewCard.module.css │ │ │ │ │ │ ├── InterviewCard.tsx │ │ │ │ │ │ ├── InterviewDetails.tsx │ │ │ │ │ │ ├── InterviewsList.module.css │ │ │ │ │ │ ├── InterviewsList.tsx │ │ │ │ │ │ ├── InterviewsSummary.tsx │ │ │ │ │ │ ├── MentorPreferencesModal.tsx │ │ │ │ │ │ ├── RegistrationNotice.test.tsx │ │ │ │ │ │ ├── RegistrationNoticeAlert.module.css │ │ │ │ │ │ ├── RegistrationNoticeAlert.tsx │ │ │ │ │ │ ├── SelectMentorModal.tsx │ │ │ │ │ │ ├── StudentInterview.module.css │ │ │ │ │ │ ├── StudentInterview.tsx │ │ │ │ │ │ ├── WaitListAlert.module.css │ │ │ │ │ │ └── WaitListAlert.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ └── useAlert.ts │ │ │ │ │ ├── index.module.css │ │ │ │ │ └── index.tsx │ │ │ │ ├── StudentFeedback/ │ │ │ │ │ └── index.tsx │ │ │ │ └── Students/ │ │ │ │ └── index.tsx │ │ │ ├── MentorRegistry/ │ │ │ │ ├── components/ │ │ │ │ │ ├── InviteMentorsModal.tsx │ │ │ │ │ ├── MentorRegistryDeleteModal.tsx │ │ │ │ │ ├── MentorRegistryResendModal.tsx │ │ │ │ │ ├── MentorRegistryTable.tsx │ │ │ │ │ ├── MentorRegistryTableContainer.module.css │ │ │ │ │ └── MentorRegistryTableContainer.tsx │ │ │ │ ├── constants.ts │ │ │ │ └── index.ts │ │ │ ├── MentorTasksReview/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AssignReviewerModal/ │ │ │ │ │ │ ├── AssignReviewerModal.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── ReviewsTable/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── renderers.tsx │ │ │ │ └── pages/ │ │ │ │ ├── MentorTasksReview.constants.ts │ │ │ │ └── MentorTasksReview.tsx │ │ │ ├── MentorsHallOfFame/ │ │ │ │ ├── components/ │ │ │ │ │ └── MentorCard/ │ │ │ │ │ ├── MentorCard.module.css │ │ │ │ │ ├── MentorCard.test.tsx │ │ │ │ │ └── MentorCard.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── pages/ │ │ │ │ │ ├── MentorsHallOfFamePage.test.tsx │ │ │ │ │ └── MentorsHallOfFamePage.tsx │ │ │ │ ├── services/ │ │ │ │ │ ├── mentors-hall-of-fame.service.test.ts │ │ │ │ │ └── mentors-hall-of-fame.service.ts │ │ │ │ └── types.ts │ │ │ ├── NotAccess/ │ │ │ │ ├── NotAccess.tsx │ │ │ │ └── index.ts │ │ │ ├── Notifications/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Consents.tsx │ │ │ │ │ ├── NotificationSettingsModal.module.css │ │ │ │ │ ├── NotificationSettingsModal.tsx │ │ │ │ │ ├── NotificationSettingsTable.tsx │ │ │ │ │ ├── NotificationsUserSettingsTable.module.css │ │ │ │ │ └── NotificationsUserSettingsTable.tsx │ │ │ │ ├── pages/ │ │ │ │ │ ├── AdminNotificationsPage/ │ │ │ │ │ │ ├── AdminNotificationsSettingsPage.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ConnectionConfirmedPage.tsx │ │ │ │ │ └── UserNotificationsSettingsPage.tsx │ │ │ │ └── services/ │ │ │ │ └── notifications.ts │ │ │ ├── Opportunities/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AvatarCv/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── EditCv/ │ │ │ │ │ │ ├── ContactsForm/ │ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── GeneralInfoForm/ │ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── VisibleCoursesForm/ │ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── form-validation.ts │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── EditViewCv/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ExpirationTooltip/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Link/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── NameTitle/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── NoConsentView/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── PublicLink/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── StudentStatus/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── ViewCv/ │ │ │ │ │ ├── AboutSection/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ActionButtons/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── BaseSection/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ContactsSection/ │ │ │ │ │ │ ├── ContactsList/ │ │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CoursesSection/ │ │ │ │ │ │ ├── CoursesSection.module.css │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DataTextValue/ │ │ │ │ │ │ ├── DataTextValue.module.css │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── FeedbackSection/ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── GratitudeSection/ │ │ │ │ │ │ ├── GratitudeList/ │ │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── PersonalSection/ │ │ │ │ │ │ ├── PersonalSection.module.css │ │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.test.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── data/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── getPersonalToRender.test.tsx.snap │ │ │ │ │ ├── getContactsToRender.test.tsx │ │ │ │ │ ├── getContactsToRender.ts │ │ │ │ │ ├── getPersonalToRender.test.tsx │ │ │ │ │ └── getPersonalToRender.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useExpiration.test.tsx │ │ │ │ │ ├── useExpiration.ts │ │ │ │ │ ├── useResumeData.test.tsx │ │ │ │ │ ├── useResumeData.tsx │ │ │ │ │ ├── useViewData.test.tsx │ │ │ │ │ └── useViewData.tsx │ │ │ │ ├── models.ts │ │ │ │ ├── pages/ │ │ │ │ │ ├── EditPage/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── PublicPage/ │ │ │ │ │ ├── getServerSideProps.ts │ │ │ │ │ └── index.tsx │ │ │ │ └── transformers/ │ │ │ │ ├── index.ts │ │ │ │ ├── splitDataForForms.test.ts │ │ │ │ ├── splitDataForForms.ts │ │ │ │ ├── transformFieldsData.test.ts │ │ │ │ ├── transformFieldsData.ts │ │ │ │ ├── transformInitialCvData.test.ts │ │ │ │ └── transformInitialCvData.ts │ │ │ ├── Profile/ │ │ │ │ └── components/ │ │ │ │ └── MentorEndorsement/ │ │ │ │ ├── MentorEndorsement.tsx │ │ │ │ └── index.tsx │ │ │ ├── Prompts/ │ │ │ │ ├── components/ │ │ │ │ │ ├── PromptModal.tsx │ │ │ │ │ └── PromptTable.tsx │ │ │ │ └── pages/ │ │ │ │ └── PromptPage.tsx │ │ │ ├── Registry/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Cards/ │ │ │ │ │ │ ├── AdditionalInfo/ │ │ │ │ │ │ │ ├── AdditionalInfo.test.tsx │ │ │ │ │ │ │ └── AdditionalInfo.tsx │ │ │ │ │ │ ├── ContactInfo/ │ │ │ │ │ │ │ ├── ContactInfo.test.tsx │ │ │ │ │ │ │ └── ContactInfo.tsx │ │ │ │ │ │ ├── CourseDetails/ │ │ │ │ │ │ │ ├── CourseDetails.test.tsx │ │ │ │ │ │ │ └── CourseDetails.tsx │ │ │ │ │ │ ├── Disciplines/ │ │ │ │ │ │ │ ├── Disciplines.test.tsx │ │ │ │ │ │ │ └── Disciplines.tsx │ │ │ │ │ │ ├── PersonalInfo/ │ │ │ │ │ │ │ ├── PersonalInfo.test.tsx │ │ │ │ │ │ │ └── PersonalInfo.tsx │ │ │ │ │ │ └── Preferences/ │ │ │ │ │ │ ├── Preferences.test.tsx │ │ │ │ │ │ └── Preferences.tsx │ │ │ │ │ ├── CourseCertificateAlert/ │ │ │ │ │ │ └── CourseCertificateAlert.tsx │ │ │ │ │ ├── CourseLabel/ │ │ │ │ │ │ └── CourseLabel.tsx │ │ │ │ │ ├── DataProcessingCheckbox/ │ │ │ │ │ │ ├── DataProcessingCheckbox.test.tsx │ │ │ │ │ │ └── DataProcessingCheckbox.tsx │ │ │ │ │ ├── Footer/ │ │ │ │ │ │ └── Footer.tsx │ │ │ │ │ ├── FormButtons/ │ │ │ │ │ │ ├── FormButtons.test.tsx │ │ │ │ │ │ └── FormButtons.tsx │ │ │ │ │ ├── FormCard/ │ │ │ │ │ │ └── FormCard.tsx │ │ │ │ │ ├── FormSections/ │ │ │ │ │ │ ├── DoneSection/ │ │ │ │ │ │ │ ├── DoneSection.test.tsx │ │ │ │ │ │ │ └── DoneSection.tsx │ │ │ │ │ │ ├── GeneralSection/ │ │ │ │ │ │ │ ├── GeneralSection.test.tsx │ │ │ │ │ │ │ └── GeneralSection.tsx │ │ │ │ │ │ └── MentorshipSection/ │ │ │ │ │ │ ├── MentorshipSection.test.tsx │ │ │ │ │ │ └── MentorshipSection.tsx │ │ │ │ │ ├── Header/ │ │ │ │ │ │ └── Header.tsx │ │ │ │ │ ├── LanguagesMentoring/ │ │ │ │ │ │ ├── LanguagesMentoring.test.tsx │ │ │ │ │ │ └── LanguagesMentoring.tsx │ │ │ │ │ ├── NoCourses/ │ │ │ │ │ │ └── NoCourses.tsx │ │ │ │ │ ├── RegistrationForm/ │ │ │ │ │ │ ├── RegistrationForm.test.tsx │ │ │ │ │ │ └── RegistrationForm.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── constants/ │ │ │ │ │ └── index.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useFormLayout/ │ │ │ │ │ │ └── useFormLayout.ts │ │ │ │ │ ├── useMentorData/ │ │ │ │ │ │ └── useMentorData.tsx │ │ │ │ │ └── useStudentData/ │ │ │ │ │ └── useStudentData.tsx │ │ │ │ └── pages/ │ │ │ │ ├── Mentor/ │ │ │ │ │ └── Mentor.tsx │ │ │ │ ├── Student/ │ │ │ │ │ └── Student.tsx │ │ │ │ └── index.ts │ │ │ ├── Schedule/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AdditionalActions/ │ │ │ │ │ │ ├── AdditionalActions.test.tsx │ │ │ │ │ │ ├── AdditionalActions.tsx │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── EventDetails/ │ │ │ │ │ │ ├── EventDetails.module.css │ │ │ │ │ │ ├── EventDetails.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── FilteredTags/ │ │ │ │ │ │ ├── FilteredTags.test.tsx │ │ │ │ │ │ ├── FilteredTags.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── MobileItemCard/ │ │ │ │ │ │ ├── MobileItemCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SettingsDrawer/ │ │ │ │ │ │ ├── ChangeTagColors.tsx │ │ │ │ │ │ ├── SettingsDrawer.tsx │ │ │ │ │ │ ├── ShowTableColumns.tsx │ │ │ │ │ │ ├── TimeZone.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── SettingsPanel/ │ │ │ │ │ │ ├── SettingsPanel.test.tsx │ │ │ │ │ │ ├── SettingsPanel.tsx │ │ │ │ │ │ ├── helpers.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── StatusTabs/ │ │ │ │ │ │ ├── StatusTabs.test.tsx │ │ │ │ │ │ ├── StatusTabs.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── renderers.tsx │ │ │ │ │ └── TableView/ │ │ │ │ │ ├── TableView.test.tsx │ │ │ │ │ ├── TableView.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── renderers.tsx │ │ │ │ ├── constants.ts │ │ │ │ ├── hooks/ │ │ │ │ │ └── useScheduleSettings.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pages/ │ │ │ │ │ └── SchedulePage/ │ │ │ │ │ └── index.tsx │ │ │ │ └── utils.ts │ │ │ ├── Score/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ExportCsvButton/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ScoreTable/ │ │ │ │ │ │ ├── ScoreTableTabs.tsx │ │ │ │ │ │ ├── Summary.tsx │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── SettingsDrawer/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── data/ │ │ │ │ │ ├── getColumns.tsx │ │ │ │ │ ├── getExportCsvUrl.ts │ │ │ │ │ ├── getTaskColumns.tsx │ │ │ │ │ └── isExportEnabled.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── types.ts │ │ │ │ │ └── useScorePaging.tsx │ │ │ │ └── pages/ │ │ │ │ └── ScorePage/ │ │ │ │ ├── UpdateAlert.module.css │ │ │ │ ├── UpdateAlert.tsx │ │ │ │ └── index.tsx │ │ │ ├── StudentDashboard/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AvailableReviewCard/ │ │ │ │ │ │ ├── AvailableReviewCard.test.tsx │ │ │ │ │ │ ├── AvailableReviewCard.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── CommonDashboardCard.tsx │ │ │ │ │ ├── MainStatsCard.tsx │ │ │ │ │ ├── MentorCard/ │ │ │ │ │ │ ├── MentorCard.test.tsx │ │ │ │ │ │ ├── MentorCard.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── MentorInfo/ │ │ │ │ │ │ ├── MentorInfo.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── NextEventCard/ │ │ │ │ │ │ ├── NextEventCard.module.css │ │ │ │ │ │ ├── NextEventCard.test.tsx │ │ │ │ │ │ ├── NextEventCard.tsx │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── renderers.tsx │ │ │ │ │ ├── RepositoryCard.tsx │ │ │ │ │ ├── SubmitTaskSolution/ │ │ │ │ │ │ ├── SubmitTaskSolution.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── TasksChart.tsx │ │ │ │ │ ├── TasksStatsCard.tsx │ │ │ │ │ ├── TasksStatsModal.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useDashboardData.ts │ │ │ │ │ ├── useSubmitTaskSolution.test.ts │ │ │ │ │ └── useSubmitTaskSolution.ts │ │ │ │ └── index.ts │ │ │ ├── Students/ │ │ │ │ ├── Pages/ │ │ │ │ │ └── Students.tsx │ │ │ │ └── components/ │ │ │ │ ├── CourseItem/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── StudentInfo/ │ │ │ │ │ └── index.tsx │ │ │ │ └── StudentsTable/ │ │ │ │ ├── index.tsx │ │ │ │ └── renderers.tsx │ │ │ ├── Tasks/ │ │ │ │ ├── components/ │ │ │ │ │ ├── CrossCheckTaskCriteriaPanel/ │ │ │ │ │ │ ├── CrossCheckTaskCriteriaPanel.test.tsx │ │ │ │ │ │ └── CrossCheckTaskCriteriaPanel.tsx │ │ │ │ │ ├── GitHubPanel/ │ │ │ │ │ │ ├── GitHubPanel.test.tsx │ │ │ │ │ │ └── GitHubPanel.tsx │ │ │ │ │ ├── JsonAttributesPanel/ │ │ │ │ │ │ ├── JsonAttributesPanel.test.tsx │ │ │ │ │ │ └── JsonAttributesPanel.tsx │ │ │ │ │ ├── TaskModal/ │ │ │ │ │ │ ├── TaskModal.test.tsx │ │ │ │ │ │ └── TaskModal.tsx │ │ │ │ │ ├── TaskSettings/ │ │ │ │ │ │ ├── TaskSettings.test.tsx │ │ │ │ │ │ └── TaskSettings.tsx │ │ │ │ │ ├── TasksTable/ │ │ │ │ │ │ ├── TasksTable.test.tsx │ │ │ │ │ │ └── TasksTable.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── pages/ │ │ │ │ │ ├── TasksPage/ │ │ │ │ │ │ └── TasksPage.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils/ │ │ │ │ └── test-utils.ts │ │ │ ├── TeamDistribution/ │ │ │ │ ├── components/ │ │ │ │ │ ├── SubmitScoreModal/ │ │ │ │ │ │ ├── SubmitScoreModal.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── TeamDistributionCard/ │ │ │ │ │ │ ├── Actions.test.tsx │ │ │ │ │ │ ├── Actions.tsx │ │ │ │ │ │ ├── CardTitle.test.tsx │ │ │ │ │ │ ├── CardTitle.tsx │ │ │ │ │ │ ├── DistributionPeriod.tsx │ │ │ │ │ │ ├── TeamDistributionCard.test.tsx │ │ │ │ │ │ ├── TeamDistributionCard.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── renderers.tsx │ │ │ │ │ ├── TeamDistributionModal/ │ │ │ │ │ │ ├── TeamDistributionModal.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── WelcomeCard/ │ │ │ │ │ ├── WelcomeCard.test.tsx │ │ │ │ │ ├── WelcomeCard.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useSubmitTeamScore.test.tsx │ │ │ │ │ └── useSubmitTeamScore.tsx │ │ │ │ └── pages/ │ │ │ │ └── TeamDistributions/ │ │ │ │ ├── TeamDistributions.tsx │ │ │ │ └── index.tsx │ │ │ ├── Teams/ │ │ │ │ ├── Pages/ │ │ │ │ │ └── Teams.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── JoinTeamModal/ │ │ │ │ │ │ └── JoinTeamModal.tsx │ │ │ │ │ ├── MyTeamSection/ │ │ │ │ │ │ └── MyTeamSection.tsx │ │ │ │ │ ├── StudentsTable/ │ │ │ │ │ │ ├── StudentsTable.tsx │ │ │ │ │ │ └── renderers.tsx │ │ │ │ │ ├── StudentsWithoutTeamSection/ │ │ │ │ │ │ └── StudentsWithoutTeamSection.tsx │ │ │ │ │ ├── TeamModal/ │ │ │ │ │ │ ├── TeamModal.test.tsx │ │ │ │ │ │ └── TeamModal.tsx │ │ │ │ │ ├── TeamsHeader/ │ │ │ │ │ │ ├── ActionCard.tsx │ │ │ │ │ │ └── TeamsHeader.tsx │ │ │ │ │ ├── TeamsSection/ │ │ │ │ │ │ ├── TeamsSection.tsx │ │ │ │ │ │ └── renderers.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── useDistribution/ │ │ │ │ │ ├── useDistribution.test.ts │ │ │ │ │ └── useDistribution.ts │ │ │ │ └── index.tsx │ │ │ ├── UserGroupsAdmin/ │ │ │ │ ├── components/ │ │ │ │ │ ├── UserGroupsModal.tsx │ │ │ │ │ └── UserGroupsTable.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── useUserGroups.ts │ │ │ │ ├── index.ts │ │ │ │ └── pages/ │ │ │ │ └── UserGroupsAdminPage/ │ │ │ │ ├── UserGroupsAdminPage.tsx │ │ │ │ └── index.ts │ │ │ └── UsersAdmin/ │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ └── useUsersSearch.ts │ │ │ ├── index.ts │ │ │ └── pages/ │ │ │ └── UsersAdminPage/ │ │ │ ├── UsersAdminPage.tsx │ │ │ └── index.ts │ │ ├── pages/ │ │ │ ├── 404.tsx │ │ │ ├── _app.tsx │ │ │ ├── _document.tsx │ │ │ ├── admin/ │ │ │ │ ├── auto-test-task/ │ │ │ │ │ └── [taskId].tsx │ │ │ │ ├── auto-test.tsx │ │ │ │ ├── contributors.tsx │ │ │ │ ├── courses.tsx │ │ │ │ ├── disciplines.tsx │ │ │ │ ├── discord-telegram.tsx │ │ │ │ ├── events.tsx │ │ │ │ ├── mentor-registry.module.css │ │ │ │ ├── mentor-registry.tsx │ │ │ │ ├── notifications.tsx │ │ │ │ ├── prompts.tsx │ │ │ │ ├── registrations.tsx │ │ │ │ ├── students.tsx │ │ │ │ ├── tasks.tsx │ │ │ │ ├── user-group.tsx │ │ │ │ └── users.tsx │ │ │ ├── applicants/ │ │ │ │ └── index.tsx │ │ │ ├── course/ │ │ │ │ ├── 403.tsx │ │ │ │ ├── admin/ │ │ │ │ │ ├── certified-students.tsx │ │ │ │ │ ├── cross-check-table.tsx │ │ │ │ │ ├── events.tsx │ │ │ │ │ ├── interviews.tsx │ │ │ │ │ ├── mentor-tasks-review.tsx │ │ │ │ │ ├── mentors.tsx │ │ │ │ │ ├── reports.tsx │ │ │ │ │ ├── stage-interviews.tsx │ │ │ │ │ ├── students.tsx │ │ │ │ │ ├── tasks.tsx │ │ │ │ │ └── users.tsx │ │ │ │ ├── interview/ │ │ │ │ │ └── [type]/ │ │ │ │ │ └── feedback.tsx │ │ │ │ ├── mentor/ │ │ │ │ │ ├── confirm.tsx │ │ │ │ │ ├── dashboard.tsx │ │ │ │ │ ├── expel-student.tsx │ │ │ │ │ ├── feedback/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── interview-technical-screening.tsx │ │ │ │ │ ├── interview-wait-list.tsx │ │ │ │ │ ├── interviews.tsx │ │ │ │ │ └── students.tsx │ │ │ │ ├── schedule.tsx │ │ │ │ ├── score.tsx │ │ │ │ ├── stats.tsx │ │ │ │ ├── student/ │ │ │ │ │ ├── auto-test/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── task.tsx │ │ │ │ │ ├── cross-check-review.tsx │ │ │ │ │ ├── cross-check-submit.tsx │ │ │ │ │ ├── dashboard.module.css │ │ │ │ │ ├── dashboard.tsx │ │ │ │ │ └── interviews.tsx │ │ │ │ ├── submit-scores.tsx │ │ │ │ ├── team-distributions.tsx │ │ │ │ └── teams.tsx │ │ │ ├── cv/ │ │ │ │ ├── [uuid].tsx │ │ │ │ └── edit.tsx │ │ │ ├── gratitude.tsx │ │ │ ├── heroes.tsx │ │ │ ├── index.tsx │ │ │ ├── login/ │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── mentors-hall-of-fame.tsx │ │ │ ├── profile/ │ │ │ │ ├── connection-confirmed.tsx │ │ │ │ ├── index.module.css │ │ │ │ ├── index.tsx │ │ │ │ └── notifications.tsx │ │ │ └── registry/ │ │ │ ├── epamlearningjs.tsx │ │ │ ├── mentor.tsx │ │ │ └── student.tsx │ │ ├── providers/ │ │ │ ├── DevToolsProvider.tsx │ │ │ ├── MessageProvider.tsx │ │ │ ├── ThemeProvider.tsx │ │ │ └── index.ts │ │ ├── reset.d.ts │ │ ├── services/ │ │ │ ├── cdn.ts │ │ │ ├── check.ts │ │ │ ├── course.ts │ │ │ ├── courses.ts │ │ │ ├── features.tsx │ │ │ ├── files.ts │ │ │ ├── formatter.ts │ │ │ ├── gratitude.ts │ │ │ ├── mentorRegistry.ts │ │ │ ├── models.ts │ │ │ ├── reference-data/ │ │ │ │ └── stageInterview.ts │ │ │ ├── routes.ts │ │ │ ├── user.ts │ │ │ ├── validators.test.ts │ │ │ └── validators.ts │ │ ├── setupTests.ts │ │ ├── shared/ │ │ │ ├── components/ │ │ │ │ ├── CommentModal.tsx │ │ │ │ ├── CopyToClipboardButton.tsx │ │ │ │ ├── FilteredTags.tsx │ │ │ │ ├── Forms/ │ │ │ │ │ ├── CommentInput.tsx │ │ │ │ │ ├── CourseTaskSelect.tsx │ │ │ │ │ ├── GdprCheckbox.tsx │ │ │ │ │ ├── Heroes/ │ │ │ │ │ │ ├── index.module.css │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── LocationSelect.tsx │ │ │ │ │ ├── MarkdownInput.tsx │ │ │ │ │ ├── ModalForm.tsx │ │ │ │ │ ├── ModalSubmitForm.test.tsx │ │ │ │ │ ├── ModalSubmitForm.tsx │ │ │ │ │ ├── PreparedComment.tsx │ │ │ │ │ ├── ScoreInput.tsx │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── CourseTaskSelect.test.tsx │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ └── CourseTaskSelect.test.tsx.snap │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── useGoogleMapsPlaces.test.ts │ │ │ │ │ └── useGoogleMapsPlaces.ts │ │ │ │ ├── GithubAvatar.tsx │ │ │ │ ├── GithubUserLink.module.css │ │ │ │ ├── GithubUserLink.tsx │ │ │ │ ├── Header.module.css │ │ │ │ ├── Header.tsx │ │ │ │ ├── Icons/ │ │ │ │ │ ├── CourseIcon.tsx │ │ │ │ │ ├── DeadlineIcon.tsx │ │ │ │ │ ├── DiscordFilled.tsx │ │ │ │ │ ├── DiscordOutlined.tsx │ │ │ │ │ ├── GitHubLogoIcon.tsx │ │ │ │ │ ├── HealthMask.tsx │ │ │ │ │ ├── LinkedInIcon.tsx │ │ │ │ │ ├── PublicSvgIcon.tsx │ │ │ │ │ ├── RSLogoIcon.tsx │ │ │ │ │ ├── ScoreIcon.tsx │ │ │ │ │ ├── TelegramIcon.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── LoadingScreen.module.css │ │ │ │ ├── LoadingScreen.tsx │ │ │ │ ├── MentorSearch.tsx │ │ │ │ ├── NonTouchTooltip.tsx │ │ │ │ ├── PageLayout.tsx │ │ │ │ ├── PersonSelect.tsx │ │ │ │ ├── Rating.tsx │ │ │ │ ├── ScoreCard.module.css │ │ │ │ ├── ScoreCard.tsx │ │ │ │ ├── ScoreSelector.module.css │ │ │ │ ├── ScoreSelector.tsx │ │ │ │ ├── Sider/ │ │ │ │ │ ├── AdminSider.test.tsx │ │ │ │ │ ├── AdminSider.tsx │ │ │ │ │ └── data/ │ │ │ │ │ └── menuItems.tsx │ │ │ │ ├── SolidarityUkraine.tsx │ │ │ │ ├── StudentMentorModal.tsx │ │ │ │ ├── StudentSearch.tsx │ │ │ │ ├── Table/ │ │ │ │ │ ├── PersonCell.tsx │ │ │ │ │ ├── columns.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderers.tsx │ │ │ │ │ └── sorters.ts │ │ │ │ ├── ThemeSwitch.tsx │ │ │ │ ├── Timer.tsx │ │ │ │ ├── TooltipedButton.tsx │ │ │ │ └── UserSearch.tsx │ │ │ ├── hooks/ │ │ │ │ ├── useMessage.tsx │ │ │ │ ├── useModal/ │ │ │ │ │ ├── useModalForm.test.tsx │ │ │ │ │ └── useModalForm.tsx │ │ │ │ ├── useTheme.tsx │ │ │ │ └── useWindowDimensions.ts │ │ │ └── utils/ │ │ │ ├── onlyDefined.ts │ │ │ ├── pagination.ts │ │ │ ├── queryParams-utils.test.ts │ │ │ ├── queryParams-utils.ts │ │ │ ├── text-utils.test.ts │ │ │ └── text-utils.ts │ │ ├── styles/ │ │ │ └── main.css │ │ └── utils/ │ │ ├── dynamicWithSkeleton.tsx │ │ ├── optionalQueryString.ts │ │ └── profilePageUtils.ts │ ├── tsconfig.json │ └── vitest.config.mts ├── common/ │ ├── README.md │ └── models/ │ ├── index.ts │ ├── interview.ts │ ├── profile.ts │ ├── stage-interview-feedback.ts │ └── user.ts ├── docker-compose.yml ├── docs/ │ ├── .nojekyll │ ├── CNAME │ ├── README.md │ ├── _sidebar.md │ ├── code-of-conduct.md │ ├── index.html │ └── platform/ │ ├── about.md │ ├── adding-tests.md │ ├── choose-kata-languages.md │ ├── cross-check-flow.md │ ├── cross-check-scheduling.md │ ├── cv.md │ ├── notifications.md │ ├── pull-request-review-process.md │ ├── shedule.md │ ├── tasks.md │ └── typical-problems.md ├── eslint.config.mjs ├── nestjs/ │ ├── .dockerignore │ ├── .swcrc │ ├── Dockerfile │ ├── Dockerfile.lambda │ ├── README.md │ ├── eslint.config.mjs │ ├── nest-cli.json │ ├── openapitools.json │ ├── package.json │ ├── src/ │ │ ├── activity/ │ │ │ ├── activity.controller.ts │ │ │ ├── activity.module.ts │ │ │ └── dto/ │ │ │ ├── activity.dto.ts │ │ │ ├── create-activity-webhook.dto.ts │ │ │ └── create-activity.dto.ts │ │ ├── alerts/ │ │ │ ├── alerts.controller.ts │ │ │ ├── alerts.module.ts │ │ │ ├── alerts.service.ts │ │ │ └── dto/ │ │ │ ├── alert.dto.ts │ │ │ ├── create-alert.dto.ts │ │ │ ├── index.ts │ │ │ └── update-alert.dto.ts │ │ ├── app.module.ts │ │ ├── auth/ │ │ │ ├── auth-user.model.spec.ts │ │ │ ├── auth-user.model.ts │ │ │ ├── auth.controller.spec.ts │ │ │ ├── auth.controller.ts │ │ │ ├── auth.module.ts │ │ │ ├── auth.service.spec.ts │ │ │ ├── auth.service.ts │ │ │ ├── constants.ts │ │ │ ├── course.guard.ts │ │ │ ├── default.guard.ts │ │ │ ├── dto/ │ │ │ │ └── auth-connection.dto.ts │ │ │ ├── index.ts │ │ │ ├── role.decorator.ts │ │ │ ├── role.guard.ts │ │ │ └── strategies/ │ │ │ ├── basic.strategy.ts │ │ │ ├── dev.strategy.ts │ │ │ ├── github.strategy.ts │ │ │ └── jwt.strategy.ts │ │ ├── auto-test/ │ │ │ ├── auto-test.controller.ts │ │ │ ├── auto-test.module.ts │ │ │ ├── auto-test.service.ts │ │ │ └── dto/ │ │ │ ├── auto-test-task.dto.ts │ │ │ ├── basic-auto-test-task.dto.ts │ │ │ └── task-solution.dto.ts │ │ ├── certificates/ │ │ │ ├── certificates.controller.ts │ │ │ ├── certificates.module.ts │ │ │ ├── certificates.service.ts │ │ │ └── dto/ │ │ │ ├── certificate-metadata.dto.ts │ │ │ └── save-certificate-dto.ts │ │ ├── cloud-api/ │ │ │ ├── cloud-api.module.ts │ │ │ └── cloud-api.service.ts │ │ ├── config/ │ │ │ ├── config.module.ts │ │ │ ├── config.service.ts │ │ │ └── index.ts │ │ ├── constants.ts │ │ ├── contributors/ │ │ │ ├── contributors.controller.ts │ │ │ ├── contributors.module.ts │ │ │ ├── contributors.service.ts │ │ │ ├── dto/ │ │ │ │ ├── contributor.dto.ts │ │ │ │ ├── create-contributor.dto.ts │ │ │ │ ├── index.ts │ │ │ │ └── update-contributor.dto.ts │ │ │ └── index.ts │ │ ├── core/ │ │ │ ├── core.module.ts │ │ │ ├── decorators/ │ │ │ │ ├── index.ts │ │ │ │ └── student-id.decorator.ts │ │ │ ├── dto/ │ │ │ │ ├── id-name.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pagination.dto.ts │ │ │ │ └── person.dto.ts │ │ │ ├── filters/ │ │ │ │ ├── entity-not-found.filter.ts │ │ │ │ ├── index.ts │ │ │ │ └── sentry.filter.ts │ │ │ ├── jwt/ │ │ │ │ └── jwt.service.ts │ │ │ ├── middlewares/ │ │ │ │ ├── index.ts │ │ │ │ ├── logger.middleware.ts │ │ │ │ └── no-cache.middleware.ts │ │ │ ├── paginate/ │ │ │ │ ├── dto/ │ │ │ │ │ └── Paginate.dto.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── pino.ts │ │ │ ├── subscribers/ │ │ │ │ ├── base-subscriber.ts │ │ │ │ ├── course-event.subscriber.ts │ │ │ │ └── course-task.subscriber.ts │ │ │ ├── templates/ │ │ │ │ └── index.ts │ │ │ └── validation/ │ │ │ ├── index.ts │ │ │ ├── validation.exception.ts │ │ │ └── validation.filter.ts │ │ ├── courses/ │ │ │ ├── course-access.service.ts │ │ │ ├── course-events/ │ │ │ │ ├── course-events.controller.ts │ │ │ │ ├── course-events.service.ts │ │ │ │ ├── dto/ │ │ │ │ │ ├── course-event.dto.ts │ │ │ │ │ ├── create-course-event.dto.ts │ │ │ │ │ └── update-course-event.dto.ts │ │ │ │ └── index.ts │ │ │ ├── course-mentors/ │ │ │ │ ├── course-mentors.controller.ts │ │ │ │ ├── course-mentors.service.ts │ │ │ │ ├── dto/ │ │ │ │ │ ├── mentor-details.dto.ts │ │ │ │ │ └── search-mentor.dto.ts │ │ │ │ └── index.ts │ │ │ ├── course-schedule/ │ │ │ │ ├── course-icalendar.controller.ts │ │ │ │ ├── course-icalendar.service.ts │ │ │ │ ├── course-schedule.controller.ts │ │ │ │ ├── course-schedule.service.spec.ts │ │ │ │ ├── course-schedule.service.ts │ │ │ │ ├── dto/ │ │ │ │ │ ├── course-copy-from.dto.ts │ │ │ │ │ ├── course-schedule-hash.dto.ts │ │ │ │ │ ├── course-schedule-item.dto.ts │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── course-students/ │ │ │ │ ├── course-students.controller.ts │ │ │ │ ├── course-students.service.ts │ │ │ │ └── dto/ │ │ │ │ ├── mentor-student-summary.dto.ts │ │ │ │ ├── result.dto.ts │ │ │ │ ├── student-status.dto.ts │ │ │ │ └── student-summary.dto.ts │ │ │ ├── course-tasks/ │ │ │ │ ├── course-tasks.controller.ts │ │ │ │ ├── course-tasks.service.ts │ │ │ │ ├── dto/ │ │ │ │ │ ├── course-task-detailed.dto.ts │ │ │ │ │ ├── course-task.dto.ts │ │ │ │ │ ├── create-course-task.dto.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── update-course-task.dto.ts │ │ │ │ └── index.ts │ │ │ ├── course-users/ │ │ │ │ ├── course-users.controller.spec.ts │ │ │ │ ├── course-users.controller.ts │ │ │ │ ├── course-users.service.spec.ts │ │ │ │ ├── course-users.service.ts │ │ │ │ ├── dto/ │ │ │ │ │ ├── course-roles.dto.ts │ │ │ │ │ ├── course-user.dto.ts │ │ │ │ │ └── update-user.dto.ts │ │ │ │ └── types.ts │ │ │ ├── courses.controller.ts │ │ │ ├── courses.module.ts │ │ │ ├── courses.service.ts │ │ │ ├── cross-checks/ │ │ │ │ ├── course-cross-checks.controller.ts │ │ │ │ ├── course-cross-checks.service.spec.ts │ │ │ │ ├── course-cross-checks.service.ts │ │ │ │ ├── cross-check-feedback.guard.ts │ │ │ │ ├── dto/ │ │ │ │ │ ├── available-review-stats.dto.ts │ │ │ │ │ ├── check-tasks-pairs.dto.ts │ │ │ │ │ ├── cross-check-criteria-data.dto.ts │ │ │ │ │ ├── cross-check-feedback.dto.ts │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── dto/ │ │ │ │ ├── course.dto.ts │ │ │ │ ├── create-course.dto.ts │ │ │ │ ├── export-course.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── leave-course.dto.ts │ │ │ │ ├── update-course.dto.ts │ │ │ │ └── used-course.dto.ts │ │ │ ├── expelled-stats.service.test.ts │ │ │ ├── expelled-stats.service.ts │ │ │ ├── index.ts │ │ │ ├── interviews/ │ │ │ │ ├── cross-mentor-distribution.service.ts │ │ │ │ ├── dto/ │ │ │ │ │ ├── available-student.dto.ts │ │ │ │ │ ├── get-interview-feedback.dto.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── interview-comment.dto.ts │ │ │ │ │ ├── interview-distribute.dto.ts │ │ │ │ │ ├── interview-pair.dto.ts │ │ │ │ │ ├── interview.dto.ts │ │ │ │ │ ├── put-interview-feedback.dto.ts │ │ │ │ │ └── registration-interview.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interviewFeedback.service.ts │ │ │ │ ├── interviews.controller.ts │ │ │ │ └── interviews.service.ts │ │ │ ├── mentor-reviews/ │ │ │ │ ├── dto/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── mentor-review-assign.dto.ts │ │ │ │ │ ├── mentor-reviews-query.dto.ts │ │ │ │ │ └── mentor-reviews.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mentor-reviews.controller.ts │ │ │ │ └── mentor-reviews.service.ts │ │ │ ├── mentors/ │ │ │ │ ├── dto/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── mentor-dashboard.dto.ts │ │ │ │ │ ├── mentor-options.dto.ts │ │ │ │ │ └── mentor-student.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mentors.controller.ts │ │ │ │ └── mentors.service.ts │ │ │ ├── score/ │ │ │ │ ├── dto/ │ │ │ │ │ ├── score-query.dto.ts │ │ │ │ │ └── score.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── score.controller.ts │ │ │ │ ├── score.service.ts │ │ │ │ └── write-score.service.ts │ │ │ ├── stats/ │ │ │ │ ├── course-stats.controller.ts │ │ │ │ ├── course-stats.service.ts │ │ │ │ ├── dto/ │ │ │ │ │ ├── countries-stats.dto.ts │ │ │ │ │ ├── course-mentors-stats.dto.ts │ │ │ │ │ ├── course-stats.dto.ts │ │ │ │ │ ├── expelled-stats.dto.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── task-performance-stats.dto.ts │ │ │ │ └── index.ts │ │ │ ├── students/ │ │ │ │ ├── dto/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── student.dto.ts │ │ │ │ │ ├── user-students-query.dto.ts │ │ │ │ │ └── user-students.dto.ts │ │ │ │ ├── feedbacks/ │ │ │ │ │ ├── dto/ │ │ │ │ │ │ ├── create-student-feedback.dto.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── student-feedback.dto.ts │ │ │ │ │ │ └── update-student-feedback.dto.ts │ │ │ │ │ ├── feedbacks.controller.ts │ │ │ │ │ ├── feedbacks.service.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── students.controller.ts │ │ │ │ └── students.service.ts │ │ │ ├── task-solutions/ │ │ │ │ ├── dto/ │ │ │ │ │ ├── create-task-solution.dto.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── task-solution.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── task-solutions.controller.ts │ │ │ │ └── task-solutions.service.ts │ │ │ ├── task-verifications/ │ │ │ │ ├── dto/ │ │ │ │ │ ├── create-task-verification.dto.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── self-education.dto.ts │ │ │ │ │ └── task-verifications-attempts.dto.ts │ │ │ │ ├── self-education.service.test.ts │ │ │ │ ├── self-education.service.ts │ │ │ │ ├── task-verifications.controller.ts │ │ │ │ ├── task-verifications.service.test.ts │ │ │ │ └── task-verifications.service.ts │ │ │ ├── tasks/ │ │ │ │ ├── dto/ │ │ │ │ │ └── check-tasks-deadline.ts │ │ │ │ ├── tasks.controller.ts │ │ │ │ └── tasks.service.ts │ │ │ └── team-distribution/ │ │ │ ├── distribute-students.service.ts │ │ │ ├── dto/ │ │ │ │ ├── create-team-distribution.dto.ts │ │ │ │ ├── create-team.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── join-team.dto.ts │ │ │ │ ├── team-distribution-student.dto.ts │ │ │ │ ├── team-distribution.dto.ts │ │ │ │ ├── team.dto.ts │ │ │ │ ├── update-team-distribution.dto.ts │ │ │ │ └── update-team-dto.ts │ │ │ ├── registered-student-guard.ts │ │ │ ├── team-distribution-student.service.test.ts │ │ │ ├── team-distribution-student.service.ts │ │ │ ├── team-distribution.controller.ts │ │ │ ├── team-distribution.service.test.ts │ │ │ ├── team-distribution.service.ts │ │ │ ├── team-lead-or-manager.guard.ts │ │ │ ├── team.controller.ts │ │ │ └── team.service.ts │ │ ├── cross-check/ │ │ │ ├── cross-check.module.ts │ │ │ ├── cross-check.service.spec.ts │ │ │ ├── cross-check.service.ts │ │ │ └── tasks-filtering.ts │ │ ├── devtools/ │ │ │ ├── devtools.controller.ts │ │ │ ├── devtools.module.ts │ │ │ ├── devtools.service.ts │ │ │ └── dto/ │ │ │ └── devtools.users-dto.ts │ │ ├── disciplines/ │ │ │ ├── disciplines.controller.test.ts │ │ │ ├── disciplines.controller.ts │ │ │ ├── disciplines.module.ts │ │ │ ├── disciplines.service.test.ts │ │ │ ├── disciplines.service.ts │ │ │ ├── dto/ │ │ │ │ ├── create-discipline.dto.ts │ │ │ │ ├── discipline-ids.dto.ts │ │ │ │ ├── discipline.dto.ts │ │ │ │ ├── index.ts │ │ │ │ └── update-discipline.dto.ts │ │ │ └── index.ts │ │ ├── discord-servers/ │ │ │ ├── discord-servers.controller.ts │ │ │ ├── discord-servers.module.ts │ │ │ ├── discord-servers.service.ts │ │ │ └── dto/ │ │ │ ├── create-discord-server.dto.ts │ │ │ ├── discord-server.dto.ts │ │ │ ├── index.ts │ │ │ └── update-discord-server.dto.ts │ │ ├── events/ │ │ │ ├── dto/ │ │ │ │ ├── create-event.dto.ts │ │ │ │ ├── event.dto.ts │ │ │ │ ├── index.ts │ │ │ │ └── update-event.dto.ts │ │ │ ├── events.controller.ts │ │ │ ├── events.module.ts │ │ │ └── events.service.ts │ │ ├── gratitudes/ │ │ │ ├── discord.service.ts │ │ │ ├── dto/ │ │ │ │ ├── badge.dto.ts │ │ │ │ ├── country.dto.ts │ │ │ │ ├── create-gratitude.dto.ts │ │ │ │ ├── gratitude.dto.ts │ │ │ │ ├── hero-radar.dto.ts │ │ │ │ ├── heroes-radar-badge.dto.ts │ │ │ │ ├── heroes-radar-query.dto.ts │ │ │ │ ├── heroes-radar.dto.ts │ │ │ │ └── index.ts │ │ │ ├── gratitudes.controller.ts │ │ │ ├── gratitudes.module.ts │ │ │ ├── gratitudes.service.ts │ │ │ └── index.ts │ │ ├── listeners/ │ │ │ ├── course.listener.ts │ │ │ ├── index.ts │ │ │ └── listeners.module.ts │ │ ├── main.ts │ │ ├── mentors-hall-of-fame/ │ │ │ ├── dto/ │ │ │ │ ├── course-stats.dto.ts │ │ │ │ ├── index.ts │ │ │ │ └── top-mentor.dto.ts │ │ │ ├── index.ts │ │ │ ├── mentors-hall-of-fame.controller.test.ts │ │ │ ├── mentors-hall-of-fame.controller.ts │ │ │ ├── mentors-hall-of-fame.module.ts │ │ │ ├── mentors-hall-of-fame.service.test.ts │ │ │ └── mentors-hall-of-fame.service.ts │ │ ├── migrations.ts │ │ ├── notifications/ │ │ │ ├── dto/ │ │ │ │ ├── notification.dto.ts │ │ │ │ └── update-notification.dto.ts │ │ │ ├── email-template.ts │ │ │ ├── notifications.controller.ts │ │ │ ├── notifications.module.ts │ │ │ └── notifications.service.ts │ │ ├── openapi-spec.ts │ │ ├── opportunities/ │ │ │ ├── dto/ │ │ │ │ ├── applicant-resume.dto.ts │ │ │ │ ├── consent.dto.ts │ │ │ │ ├── form-data.dto.ts │ │ │ │ ├── give-consent-dto.ts │ │ │ │ ├── resume.dto.ts │ │ │ │ ├── status.dto.ts │ │ │ │ └── visibility.dto.ts │ │ │ ├── opportunities.controller.ts │ │ │ ├── opportunities.module.ts │ │ │ ├── opportunities.service.test.ts │ │ │ └── opportunities.service.ts │ │ ├── ormconfig.ts │ │ ├── profile/ │ │ │ ├── dto/ │ │ │ │ ├── endorsement.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── personal-profile.dto.ts │ │ │ │ ├── profile-course.dto.ts │ │ │ │ ├── profile.dto.ts │ │ │ │ ├── update-profile.dto.ts │ │ │ │ └── update-user.dto.ts │ │ │ ├── endorsement.service.ts │ │ │ ├── index.ts │ │ │ ├── profile.controller.ts │ │ │ ├── profile.module.ts │ │ │ └── profile.service.ts │ │ ├── prompts/ │ │ │ ├── dto/ │ │ │ │ ├── create-prompt.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── prompt.dto.ts │ │ │ │ └── update-prompt.dto.ts │ │ │ ├── prompts.controller.ts │ │ │ ├── prompts.module.ts │ │ │ └── prompts.service.ts │ │ ├── registry/ │ │ │ ├── constants.ts │ │ │ ├── dto/ │ │ │ │ ├── approve-mentor.dto.ts │ │ │ │ ├── comment-mentor-registry.dto.ts │ │ │ │ ├── invite-mentors.dto.ts │ │ │ │ └── mentor-registry.dto.ts │ │ │ ├── registry.controller.ts │ │ │ ├── registry.module.ts │ │ │ └── registry.service.ts │ │ ├── repositories/ │ │ │ ├── dto/ │ │ │ │ ├── create-repository-event.dto.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── repositories.controller.ts │ │ │ ├── repositories.module.ts │ │ │ └── repositories.service.ts │ │ ├── reset.d.ts │ │ ├── schedule/ │ │ │ ├── dto/ │ │ │ │ └── check-schedule-changes.ts │ │ │ ├── schedule.controller.ts │ │ │ ├── schedule.module.ts │ │ │ └── schedule.service.ts │ │ ├── session/ │ │ │ ├── dto/ │ │ │ │ └── auth-user.dto.ts │ │ │ ├── session.controller.ts │ │ │ └── session.module.ts │ │ ├── setup.ts │ │ ├── spec.json │ │ ├── tasks/ │ │ │ ├── dto/ │ │ │ │ ├── create-task.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── task.dto.ts │ │ │ │ └── update-task.dto.ts │ │ │ ├── tasks-criteria/ │ │ │ │ ├── dto/ │ │ │ │ │ ├── criteria.dto.ts │ │ │ │ │ └── task-criteria.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── tasks-criteria.controller.ts │ │ │ │ └── tasks-criteria.service.ts │ │ │ ├── tasks.controller.ts │ │ │ ├── tasks.module.ts │ │ │ └── tasks.service.ts │ │ ├── user-groups/ │ │ │ ├── dto/ │ │ │ │ ├── create-user-group.dto.ts │ │ │ │ ├── index.ts │ │ │ │ ├── update-user-group.dto.ts │ │ │ │ └── user-group.dto.ts │ │ │ ├── index.ts │ │ │ ├── user-groups.controller.ts │ │ │ ├── user-groups.module.ts │ │ │ └── user-groups.service.ts │ │ ├── users/ │ │ │ ├── dto/ │ │ │ │ ├── index.ts │ │ │ │ ├── user-search.dto.ts │ │ │ │ └── user.dto.ts │ │ │ ├── index.ts │ │ │ ├── users.controller.ts │ │ │ ├── users.module.ts │ │ │ └── users.service.ts │ │ ├── users-notifications/ │ │ │ ├── dto/ │ │ │ │ ├── notification-connection-exists.dto.ts │ │ │ │ ├── notification-connection.dto.ts │ │ │ │ ├── notification-user-connections.dto.ts │ │ │ │ ├── notification-user-settings.dto.ts │ │ │ │ ├── send-user-notification.dto.ts │ │ │ │ ├── update-notification-user-settings.dto.ts │ │ │ │ └── upsert-notification-connection.dto.ts │ │ │ ├── index.ts │ │ │ ├── users-notifications.module.ts │ │ │ ├── users.notifications.controller.ts │ │ │ └── users.notifications.service.ts │ │ └── utils/ │ │ ├── index.ts │ │ ├── shuffle.test.ts │ │ └── shuffle.ts │ ├── test/ │ │ └── app.e2e-spec.ts │ ├── tsconfig.build.json │ ├── tsconfig.json │ └── vitest.config.mts ├── package.json ├── renovate.json ├── server/ │ ├── .dockerignore │ ├── .swcrc │ ├── Dockerfile │ ├── Dockerfile.lambda │ ├── README.md │ ├── eslint.config.mjs │ ├── package.json │ ├── public/ │ │ └── swagger.yml │ ├── src/ │ │ ├── app.ts │ │ ├── config.ts │ │ ├── dataSource.ts │ │ ├── dataSourceOptions.ts │ │ ├── index.ts │ │ ├── logger.ts │ │ ├── migrations/ │ │ │ ├── 1630340371992-UserMigration.ts │ │ │ ├── 1630341383942-TaskResult.ts │ │ │ ├── 1630342025950-StudentMigration.ts │ │ │ ├── 1630342266002-UserMigration.ts │ │ │ ├── 1630347897950-StudentMigration.ts │ │ │ ├── 1632333725126-ResumeMigration.ts │ │ │ ├── 1635365797478-User.ts │ │ │ ├── 1637591194886-StageInterview.ts │ │ │ ├── 1638302439645-CourseMigration.ts │ │ │ ├── 1639418471577-Indicies.ts │ │ │ ├── 1639427578702-Update.ts │ │ │ ├── 1639502600339-Student.ts │ │ │ ├── 1642884123347-ResumeSelectCourses.ts │ │ │ ├── 1643481312933-Task.ts │ │ │ ├── 1643550350939-LoginState.ts │ │ │ ├── 1643926895264-Notifications.ts │ │ │ ├── 1644695410918-NotificationConnection.ts │ │ │ ├── 1645364514538-RepositoryEvent.ts │ │ │ ├── 1645654601903-Opportunitites.ts │ │ │ ├── 1647103154082-CrossCheckScheduling.ts │ │ │ ├── 1647175301446-TaskSolutionConstraint.ts │ │ │ ├── 1647550751147-NotificationType.ts │ │ │ ├── 1647885219936-LoginStateUserId.ts │ │ │ ├── 1649505252996-CourseLogo.ts │ │ │ ├── 1649868994688-CourseLogo.ts │ │ │ ├── 1650652882300-DiscordChannel.ts │ │ │ ├── 1652870756742-Resume.ts │ │ │ ├── 1656326258991-History.ts │ │ │ ├── 1661034658479-Feedback.ts │ │ │ ├── 1661087975938-Discipline.ts │ │ │ ├── 1661106736439-Disciplines.ts │ │ │ ├── 1661107174477-Disciplines.ts │ │ │ ├── 1661616212488-NotificationCategory.ts │ │ │ ├── 1662275601017-CourseTask.ts │ │ │ ├── 1664183799115-CourseEvent.ts │ │ │ ├── 1666348642811-TaskCriteria.ts │ │ │ ├── 1666621080327-TaskSolutionResult.ts │ │ │ ├── 1671475396333-Tasks.ts │ │ │ ├── 1672142743107-TeamDistribution.ts │ │ │ ├── 1672386450861-TeamDistribution.ts │ │ │ ├── 1673090827105-TaskVerification.ts │ │ │ ├── 1673692838338-User.ts │ │ │ ├── 1674128274839-Team.ts │ │ │ ├── 1674377676805-TeamDistributionStudent.ts │ │ │ ├── 1674755854609-Resume.ts │ │ │ ├── 1675245424426-UserGroup.ts │ │ │ ├── 1675345245770-Course.ts │ │ │ ├── 1676139987317-User.ts │ │ │ ├── 1685197747051-MentorRegistry.ts │ │ │ ├── 1686657350908-InterviewScore.ts │ │ │ ├── 1687009744110-Prompt.ts │ │ │ ├── 1691520611773-Temperature.ts │ │ │ ├── 1691524327332-Temperature.ts │ │ │ ├── 1693930286280-CourseUsersActivist.ts │ │ │ ├── 1699808604000-AddMinStudentPerMentorColumnToCourse.ts │ │ │ ├── 1700391857109-Obfuscation.ts │ │ │ ├── 1712137476312-Course.ts │ │ │ ├── 1730926720293-CourseTask.ts │ │ │ ├── 1734874453585-Contributor.ts │ │ │ ├── 1736458672717-Course.ts │ │ │ ├── 1738250779923-CoursePersonalMentoringDates.ts │ │ │ ├── 1746467689328-Course.ts │ │ │ ├── 1747380525126-CourseTaskInterviewCreatingPairs.ts │ │ │ ├── 1760699701354-AddCourseLeaveSurveyResponse.ts │ │ │ └── index.ts │ │ ├── models/ │ │ │ ├── alert.ts │ │ │ ├── certificate.ts │ │ │ ├── contributor.ts │ │ │ ├── course-leave-survey-response.entity.ts │ │ │ ├── course.ts │ │ │ ├── courseEvent.ts │ │ │ ├── courseManager.ts │ │ │ ├── courseTask.ts │ │ │ ├── courseUser.ts │ │ │ ├── data/ │ │ │ │ ├── available-languages.data.ts │ │ │ │ ├── index.ts │ │ │ │ └── language-levels.data.ts │ │ │ ├── discipline.ts │ │ │ ├── discordServer.ts │ │ │ ├── event.ts │ │ │ ├── feedback.ts │ │ │ ├── history.ts │ │ │ ├── index.ts │ │ │ ├── loginState.ts │ │ │ ├── mentor.ts │ │ │ ├── mentorRegistry.ts │ │ │ ├── notification.ts │ │ │ ├── notificationChannel.ts │ │ │ ├── notificationChannelSettings.ts │ │ │ ├── notificationUserConnection.ts │ │ │ ├── notificationUserSettings.ts │ │ │ ├── privateFeedback.ts │ │ │ ├── profilePermissions.ts │ │ │ ├── prompt.ts │ │ │ ├── registry.ts │ │ │ ├── repositoryEvent.ts │ │ │ ├── resume.ts │ │ │ ├── session.ts │ │ │ ├── stageInterview.ts │ │ │ ├── stageInterviewFeedback.ts │ │ │ ├── stageInterviewStudent.ts │ │ │ ├── student-feedback.ts │ │ │ ├── student.ts │ │ │ ├── task.ts │ │ │ ├── taskArtefact.ts │ │ │ ├── taskChecker.ts │ │ │ ├── taskCriteria.ts │ │ │ ├── taskInterviewResult.ts │ │ │ ├── taskInterviewStudent.ts │ │ │ ├── taskResult.ts │ │ │ ├── taskSolution.ts │ │ │ ├── taskSolutionChecker.ts │ │ │ ├── taskSolutionResult.ts │ │ │ ├── taskVerification.ts │ │ │ ├── team.ts │ │ │ ├── teamDistribution.ts │ │ │ ├── teamDistributionStudent.ts │ │ │ ├── user.ts │ │ │ └── userGroup.ts │ │ ├── repositories/ │ │ │ ├── courseTask.repository.ts │ │ │ ├── crossCheck.repository.ts │ │ │ ├── feedback.repository.ts │ │ │ ├── interview.repository.ts │ │ │ ├── mentor.repository.ts │ │ │ ├── mentorRegistry.repository.ts │ │ │ ├── repositoryEvent.repository.ts │ │ │ ├── stageInterview.repository.ts │ │ │ ├── stageInterviewFeedback.repository.ts │ │ │ ├── student.repository.ts │ │ │ └── user.repository.ts │ │ ├── reset.d.ts │ │ ├── routes/ │ │ │ ├── checks/ │ │ │ │ ├── getBadComment.ts │ │ │ │ ├── getMaxScoreCheckers.ts │ │ │ │ └── index.ts │ │ │ ├── common.ts │ │ │ ├── course/ │ │ │ │ ├── certificates.ts │ │ │ │ ├── crossCheck/ │ │ │ │ │ ├── createCompletion.ts │ │ │ │ │ ├── createDistribution.ts │ │ │ │ │ ├── createMessage.ts │ │ │ │ │ ├── createResult.ts │ │ │ │ │ ├── createSolution.ts │ │ │ │ │ ├── deleteSolution.ts │ │ │ │ │ ├── getAssignments.ts │ │ │ │ │ ├── getResult.ts │ │ │ │ │ ├── getSolution.ts │ │ │ │ │ ├── getTaskDetails.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── updateMessage.ts │ │ │ │ ├── events.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interviews.ts │ │ │ │ ├── mentor.ts │ │ │ │ ├── repository.ts │ │ │ │ ├── schedule.ts │ │ │ │ ├── score/ │ │ │ │ │ ├── createMultipleScores.ts │ │ │ │ │ ├── createSingleScore.ts │ │ │ │ │ ├── getScoreByStudent.ts │ │ │ │ │ ├── getScoreCsv.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── recalculateScore.ts │ │ │ │ ├── stageInterview/ │ │ │ │ │ ├── cancelInterview.ts │ │ │ │ │ ├── createFeedback.ts │ │ │ │ │ ├── createInterview.ts │ │ │ │ │ ├── createInterviews.ts │ │ │ │ │ ├── getFeedback.ts │ │ │ │ │ ├── getInterviewStudent.ts │ │ │ │ │ ├── getInterviewerStudents.ts │ │ │ │ │ ├── getInterviews.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── updateInterview.ts │ │ │ │ ├── student.ts │ │ │ │ ├── students.ts │ │ │ │ ├── taskArtefact.ts │ │ │ │ ├── taskVerifications.ts │ │ │ │ └── tasks/ │ │ │ │ ├── createCourseTaskDistribution.ts │ │ │ │ ├── getCourseTasksDetails.ts │ │ │ │ └── index.ts │ │ │ ├── feedback.ts │ │ │ ├── file/ │ │ │ │ ├── index.ts │ │ │ │ └── upload.ts │ │ │ ├── guards.ts │ │ │ ├── index.ts │ │ │ ├── logging.ts │ │ │ ├── me.ts │ │ │ ├── middlewares.ts │ │ │ ├── profile/ │ │ │ │ ├── __test__/ │ │ │ │ │ └── permissions.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── info.ts │ │ │ │ ├── me.ts │ │ │ │ ├── mentor-stats.ts │ │ │ │ ├── permissions.ts │ │ │ │ ├── public-feedback.ts │ │ │ │ ├── stage-interview-feedback.ts │ │ │ │ ├── student-stats.ts │ │ │ │ └── user-info.ts │ │ │ ├── registry/ │ │ │ │ └── index.ts │ │ │ ├── repository/ │ │ │ │ ├── events.ts │ │ │ │ └── index.ts │ │ │ ├── task/ │ │ │ │ └── index.ts │ │ │ ├── taskVerification/ │ │ │ │ └── index.ts │ │ │ ├── tasks/ │ │ │ │ └── index.ts │ │ │ ├── users/ │ │ │ │ └── index.ts │ │ │ ├── utils.ts │ │ │ └── validators.ts │ │ ├── rules/ │ │ │ ├── __tests__/ │ │ │ │ └── mentors.test.ts │ │ │ ├── index.ts │ │ │ ├── interviews.ts │ │ │ ├── mentors.ts │ │ │ ├── name.ts │ │ │ └── types.ts │ │ ├── schedule.ts │ │ └── services/ │ │ ├── aws.service.ts │ │ ├── check.service.ts │ │ ├── course.service.ts │ │ ├── crossCheck.service.ts │ │ ├── distribution/ │ │ │ ├── __tests__/ │ │ │ │ ├── crossCheck.test.ts │ │ │ │ ├── crossMentor.test.ts │ │ │ │ └── shuffle.test.ts │ │ │ ├── crossCheckDistribution.service.ts │ │ │ ├── crossMentorDistribution.service.ts │ │ │ ├── index.ts │ │ │ └── shuffle.ts │ │ ├── github.service.ts │ │ ├── index.ts │ │ ├── interview.service.ts │ │ ├── notification.service.ts │ │ ├── operationResult.ts │ │ ├── repository.service.ts │ │ ├── score/ │ │ │ ├── index.ts │ │ │ └── score.service.ts │ │ ├── stageInterview.service.ts │ │ ├── student.service.ts │ │ ├── taskResults.service.ts │ │ ├── taskVerification.service.ts │ │ ├── tasks.service.ts │ │ └── user.service.ts │ ├── swaggerDef.js │ ├── tsconfig.json │ └── vitest.config.mts ├── setup/ │ ├── backup-local.sql │ ├── cdk/ │ │ ├── App.ts │ │ ├── DockerFunctionConstruct.ts │ │ ├── Stack.ts │ │ ├── cdk.json │ │ └── package.json │ ├── docker-compose.yml │ ├── dump-local.sh │ ├── dump.sh │ ├── nginx/ │ │ └── nginx.conf │ ├── restore-local.sh │ └── restore.sh ├── skills-lock.json ├── tools/ │ └── sloths/ │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── .oxfmtrc.json │ ├── README.md │ ├── env.d.ts │ ├── index.html │ ├── package.json │ ├── public/ │ │ └── cdn/ │ │ ├── cleaned/ │ │ │ └── filelist.json │ │ └── stickers/ │ │ ├── activist/ │ │ │ └── metadata.json │ │ ├── codewars/ │ │ │ └── metadata.json │ │ ├── congrats/ │ │ │ └── metadata.json │ │ └── metadata.json │ ├── src/ │ │ ├── App.vue │ │ ├── assets/ │ │ │ ├── locales/ │ │ │ │ └── en.json │ │ │ └── styles/ │ │ │ ├── base.css │ │ │ ├── fonts.css │ │ │ ├── main.css │ │ │ └── variables.css │ │ ├── common/ │ │ │ ├── const.ts │ │ │ └── types.ts │ │ ├── components/ │ │ │ ├── about/ │ │ │ │ ├── AboutSection.vue │ │ │ │ └── AboutTeammate.vue │ │ │ ├── background/ │ │ │ │ └── BackgroundView.vue │ │ │ ├── buttons/ │ │ │ │ ├── CustomBtn.vue │ │ │ │ ├── IconBtn.vue │ │ │ │ └── ImageBtn.vue │ │ │ ├── catalog/ │ │ │ │ ├── SlothCard.vue │ │ │ │ └── SlothInfo.vue │ │ │ ├── controls-list/ │ │ │ │ ├── ControlsList.vue │ │ │ │ ├── PaginationList.vue │ │ │ │ ├── SearchText.vue │ │ │ │ ├── SortingList.vue │ │ │ │ └── TagCloud.vue │ │ │ ├── footer/ │ │ │ │ └── FooterView.vue │ │ │ ├── guess/ │ │ │ │ └── GuessInfo.vue │ │ │ ├── header/ │ │ │ │ └── HeaderView.vue │ │ │ ├── home/ │ │ │ │ ├── HomeAbout.vue │ │ │ │ ├── HomeCatalog.vue │ │ │ │ └── HomeCategory.vue │ │ │ ├── loader/ │ │ │ │ └── LoaderView.vue │ │ │ ├── memory/ │ │ │ │ ├── GameField.vue │ │ │ │ └── MemoryInfo.vue │ │ │ ├── mixins/ │ │ │ │ └── sort-mixin.ts │ │ │ ├── modal/ │ │ │ │ ├── AlertModal.vue │ │ │ │ └── ModalWindow.vue │ │ │ └── switchers/ │ │ │ ├── SoundSwitcher.vue │ │ │ └── ThemeSwitcher.vue │ │ ├── i18n.ts │ │ ├── main.ts │ │ ├── router/ │ │ │ └── index.ts │ │ ├── services/ │ │ │ ├── error-handler.ts │ │ │ └── sloths-service.ts │ │ ├── shims-vue.d.ts │ │ ├── stores/ │ │ │ ├── alert-modal.ts │ │ │ ├── audio-on.ts │ │ │ ├── cleaned.ts │ │ │ ├── counter.ts │ │ │ ├── loader.ts │ │ │ ├── pages-store.ts │ │ │ ├── pagination.ts │ │ │ ├── search-text.ts │ │ │ ├── sloth-info.ts │ │ │ ├── sloths.ts │ │ │ ├── sorting-list.ts │ │ │ ├── tag-cloud.ts │ │ │ └── theme.ts │ │ ├── utils/ │ │ │ ├── audio.ts │ │ │ ├── canvas-utils.ts │ │ │ ├── game-utils.ts │ │ │ └── userTheme.ts │ │ └── views/ │ │ ├── 404.vue │ │ ├── About.vue │ │ ├── Catalog.vue │ │ ├── Create.vue │ │ ├── Guess.vue │ │ ├── Home.vue │ │ ├── Memory.vue │ │ └── Merch.vue │ ├── tsconfig.config.json │ ├── tsconfig.json │ └── vite.config.ts ├── turbo.json └── vitest.shared.mts