gitextract_otmdzcso/ ├── .coderabbit.yml ├── .github/ │ ├── CODEOWNERS │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── pull_request_template.md │ ├── scripts/ │ │ ├── download-translations.js │ │ └── upload-translations.js │ └── workflows/ │ ├── README.md │ ├── check-build.yml │ ├── check-format.yml │ ├── deploy-images-on-release.yml │ ├── deploy-images.yml │ ├── poeditor-sync.yml │ ├── production-deploy.yml │ ├── staging-deploy.yml │ └── upload-poeditor.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── CLAUDE.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Checkmate.CodeCanvas ├── LICENSE ├── PULLREQUESTS.md ├── README.es.md ├── README.md ├── SECURITY.md ├── charts/ │ └── helm/ │ └── checkmate/ │ ├── .helmignore │ ├── Chart.yaml │ ├── INSTALLATION.md │ ├── templates/ │ │ ├── client-deployment.yaml │ │ ├── client-ingress.yaml │ │ ├── client-service.yaml │ │ ├── mongodb-service.yaml │ │ ├── mongodb-statefulsets.yaml │ │ ├── prechecks.yaml │ │ ├── redis-service.yaml │ │ ├── redis-statefulsets.yaml │ │ ├── secrets.yaml │ │ ├── server-deployment.yaml │ │ ├── server-ingress.yaml │ │ ├── server-nginx-cm.yaml │ │ └── server-service.yaml │ └── values.yaml ├── client/ │ ├── .coderrabbit.yaml │ ├── .dockerignore │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── .prettierrc │ ├── README.md │ ├── env.sh │ ├── index.html │ ├── package.json │ ├── public/ │ │ ├── bulk_import_monitors_sample.csv │ │ └── bulk_import_monitors_template.csv │ ├── renovate.json │ ├── src/ │ │ ├── App.tsx │ │ ├── Components/ │ │ │ ├── LanguageSelector.jsx │ │ │ ├── actions-menu/ │ │ │ │ └── index.tsx │ │ │ ├── common/ │ │ │ │ ├── charts/ │ │ │ │ │ ├── HeatmapResponseTime.tsx │ │ │ │ │ ├── HeatmapResponseTimeTooltip.tsx │ │ │ │ │ └── HistogramResponseTime.tsx │ │ │ │ ├── controls/ │ │ │ │ │ ├── HeaderCreate.tsx │ │ │ │ │ └── HeaderTimeRange.tsx │ │ │ │ └── index.ts │ │ │ ├── design-elements/ │ │ │ │ ├── Avatar.tsx │ │ │ │ ├── BaseBox.tsx │ │ │ │ ├── BaseChart.tsx │ │ │ │ ├── BasePage.tsx │ │ │ │ ├── Breadcrumb.tsx │ │ │ │ ├── BulletPointCheck.tsx │ │ │ │ ├── Dot.tsx │ │ │ │ ├── Fallback.tsx │ │ │ │ ├── Gauge.tsx │ │ │ │ ├── Icon.tsx │ │ │ │ ├── MonitorStatus.tsx │ │ │ │ ├── OfflineBanner.tsx │ │ │ │ ├── PulseDot.tsx │ │ │ │ ├── SkeletonCard.tsx │ │ │ │ ├── SplitBox.tsx │ │ │ │ ├── StatBox.tsx │ │ │ │ ├── StatusBox.tsx │ │ │ │ ├── StatusLabel.tsx │ │ │ │ ├── Table.tsx │ │ │ │ ├── Tabs.tsx │ │ │ │ ├── TextLink.tsx │ │ │ │ ├── Tooltip.tsx │ │ │ │ └── index.tsx │ │ │ ├── i18nLoader/ │ │ │ │ └── index.tsx │ │ │ ├── inputs/ │ │ │ │ ├── AutoComplete.tsx │ │ │ │ ├── Button.tsx │ │ │ │ ├── Checkbox.tsx │ │ │ │ ├── ColorPicker.tsx │ │ │ │ ├── DatePicker.tsx │ │ │ │ ├── Dialog.tsx │ │ │ │ ├── FieldLabel.tsx │ │ │ │ ├── ImageUpload.tsx │ │ │ │ ├── LanguageSelector.tsx │ │ │ │ ├── Radio.tsx │ │ │ │ ├── Select.tsx │ │ │ │ ├── Slider.tsx │ │ │ │ ├── Switch.tsx │ │ │ │ ├── SwitchTheme.tsx │ │ │ │ ├── TextInput.tsx │ │ │ │ ├── TimePicker.tsx │ │ │ │ ├── ToggleButton.tsx │ │ │ │ └── index.tsx │ │ │ ├── layout/ │ │ │ │ ├── AppLayout.tsx │ │ │ │ └── RootLayout.tsx │ │ │ ├── monitors/ │ │ │ │ ├── ControlsFilter.tsx │ │ │ │ ├── GeoChecksMap.tsx │ │ │ │ ├── HeaderGeoTabs.tsx │ │ │ │ ├── HeaderMonitorControls.tsx │ │ │ │ ├── HeaderMonitorsSummary.tsx │ │ │ │ ├── MonitorStatBoxes.tsx │ │ │ │ ├── charts/ │ │ │ │ │ ├── HistogramDetails.tsx │ │ │ │ │ ├── HistogramInfrastructure.tsx │ │ │ │ │ ├── HistogramPageSpeed.tsx │ │ │ │ │ ├── HistogramPageSpeedDetails.tsx │ │ │ │ │ ├── HistogramPageSpeedDetailsTooltip.tsx │ │ │ │ │ ├── HistogramPageSpeedTooltip.tsx │ │ │ │ │ ├── HistogramStatus.tsx │ │ │ │ │ ├── PiePageSpeed.tsx │ │ │ │ │ ├── PiePageSpeedLegend.tsx │ │ │ │ │ └── RadialAvgResponse.tsx │ │ │ │ └── index.tsx │ │ │ ├── routing/ │ │ │ │ └── RouteProtected.tsx │ │ │ └── sidebar/ │ │ │ ├── Authfooter.tsx │ │ │ ├── Logo.tsx │ │ │ ├── Menu.tsx │ │ │ ├── NavItem.tsx │ │ │ ├── StarPrompt.tsx │ │ │ └── index.tsx │ │ ├── Features/ │ │ │ ├── Auth/ │ │ │ │ └── authSlice.ts │ │ │ └── UI/ │ │ │ └── uiSlice.ts │ │ ├── Hooks/ │ │ │ ├── UseApi.ts │ │ │ ├── UseToast.ts │ │ │ ├── useAddTeamMemberForm.ts │ │ │ ├── useDebounce.ts │ │ │ ├── useEditUserForm.ts │ │ │ ├── useInviteForm.ts │ │ │ ├── useIsAdmin.ts │ │ │ ├── useLoginForm.ts │ │ │ ├── useMaintenanceWindowForm.ts │ │ │ ├── useMonitorForm.ts │ │ │ ├── useNotificationForm.ts │ │ │ ├── usePasswordForm.ts │ │ │ ├── useProfileForm.ts │ │ │ ├── useRecoveryForm.ts │ │ │ ├── useRegisterForm.ts │ │ │ ├── useSetNewPasswordForm.ts │ │ │ ├── useSettingsForm.ts │ │ │ ├── useSidebar.ts │ │ │ └── useStatusPageForm.ts │ │ ├── Pages/ │ │ │ ├── Account/ │ │ │ │ ├── EditUser/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── TabPassword.tsx │ │ │ │ ├── TabProfile.tsx │ │ │ │ ├── TabTeam.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── AddTeamMemberDialog.tsx │ │ │ │ │ ├── HeaderTeamControls.tsx │ │ │ │ │ ├── InviteTeamMemberDialog.tsx │ │ │ │ │ └── TeamTable.tsx │ │ │ │ └── index.tsx │ │ │ ├── Auth/ │ │ │ │ ├── Login/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Recovery/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Register/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SetNewPassword/ │ │ │ │ │ └── index.tsx │ │ │ │ └── components/ │ │ │ │ └── HeaderAuthControls.tsx │ │ │ ├── Checks/ │ │ │ │ ├── Components/ │ │ │ │ │ └── ChecksTable.tsx │ │ │ │ └── index.tsx │ │ │ ├── CreateMonitor/ │ │ │ │ └── index.tsx │ │ │ ├── Incidents/ │ │ │ │ ├── Components/ │ │ │ │ │ ├── CardDetails.tsx │ │ │ │ │ ├── CardSummary.tsx │ │ │ │ │ ├── ControlsIncidentFilter.tsx │ │ │ │ │ ├── DialogIncidentDetails.tsx │ │ │ │ │ ├── DialogResolution.tsx │ │ │ │ │ └── IncidentTable.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── utils.ts │ │ │ ├── Infrastructure/ │ │ │ │ ├── Details/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ ├── Charts.tsx │ │ │ │ │ │ ├── ChartsNetwork.tsx │ │ │ │ │ │ ├── Gauges.tsx │ │ │ │ │ │ ├── StatusBoxes.tsx │ │ │ │ │ │ ├── TabNetwork.tsx │ │ │ │ │ │ └── TabOverview.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── Monitors/ │ │ │ │ ├── Components/ │ │ │ │ │ └── MonitorsTable.tsx │ │ │ │ └── index.tsx │ │ │ ├── Logs/ │ │ │ │ ├── TabDiagnostics.tsx │ │ │ │ ├── TabLogs.tsx │ │ │ │ ├── TabQueue.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── Metrics.tsx │ │ │ │ │ ├── StatGauges.tsx │ │ │ │ │ ├── Stats.tsx │ │ │ │ │ ├── TableJobs.tsx │ │ │ │ │ └── TableLogs.tsx │ │ │ │ └── index.tsx │ │ │ ├── Maintenance/ │ │ │ │ ├── MaintenanceWindowTable.tsx │ │ │ │ ├── create/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── NotFound/ │ │ │ │ └── index.tsx │ │ │ ├── Notifications/ │ │ │ │ ├── components/ │ │ │ │ │ └── NotificationsTable.tsx │ │ │ │ ├── create/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── PageSpeed/ │ │ │ │ ├── Details/ │ │ │ │ │ └── index.tsx │ │ │ │ └── Monitors/ │ │ │ │ ├── Components/ │ │ │ │ │ └── PageSpeedMonitorsTable.tsx │ │ │ │ └── index.tsx │ │ │ ├── Settings/ │ │ │ │ ├── DummyChart.tsx │ │ │ │ └── index.tsx │ │ │ ├── StatusPage/ │ │ │ │ ├── Create/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ └── HeaderConfigStatusControls.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Status/ │ │ │ │ │ ├── Components/ │ │ │ │ │ │ ├── HeaderStatusPageControls.tsx │ │ │ │ │ │ ├── InfrastructureMetrics.tsx │ │ │ │ │ │ ├── MonitorsList.tsx │ │ │ │ │ │ └── StatusBar.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── StatusPages/ │ │ │ │ ├── Components/ │ │ │ │ │ └── StatusPagesTable.tsx │ │ │ │ └── index.tsx │ │ │ └── Uptime/ │ │ │ ├── Details/ │ │ │ │ ├── Components/ │ │ │ │ │ ├── ChecksTable.tsx │ │ │ │ │ └── GeoChecksTable.tsx │ │ │ │ └── index.tsx │ │ │ └── Monitors/ │ │ │ ├── Components/ │ │ │ │ └── UptimeMonitorsTable.tsx │ │ │ └── index.tsx │ │ ├── Routes/ │ │ │ └── index.tsx │ │ ├── Types/ │ │ │ ├── Check.ts │ │ │ ├── Diagnostics.ts │ │ │ ├── GeoCheck.ts │ │ │ ├── Incident.ts │ │ │ ├── Log.ts │ │ │ ├── MaintenanceWindow.ts │ │ │ ├── Monitor.ts │ │ │ ├── Notification.ts │ │ │ ├── Queue.ts │ │ │ ├── Settings.ts │ │ │ ├── StatusPage.ts │ │ │ ├── User.ts │ │ │ ├── env.d.ts │ │ │ ├── mui.d.ts │ │ │ └── state.ts │ │ ├── Utils/ │ │ │ ├── ApiClient.ts │ │ │ ├── DataUtils.ts │ │ │ ├── FormatUtils.ts │ │ │ ├── InfraUtils.ts │ │ │ ├── MonitorUtils.ts │ │ │ ├── Theme/ │ │ │ │ ├── Palette.ts │ │ │ │ ├── Theme.ts │ │ │ │ └── constants.ts │ │ │ ├── TimeUtils.ts │ │ │ ├── i18n.ts │ │ │ ├── logger.ts │ │ │ ├── timezones.json │ │ │ └── toastUtils.jsx │ │ ├── Validation/ │ │ │ ├── addTeamMember.ts │ │ │ ├── editUser.ts │ │ │ ├── invite.ts │ │ │ ├── login.ts │ │ │ ├── maintenanceWindow.ts │ │ │ ├── monitor.ts │ │ │ ├── notifications.ts │ │ │ ├── password.ts │ │ │ ├── patterns.ts │ │ │ ├── profile.ts │ │ │ ├── recovery.ts │ │ │ ├── register.ts │ │ │ ├── setNewPassword.ts │ │ │ ├── settings.ts │ │ │ ├── statusPage.ts │ │ │ └── validation.js │ │ ├── index.css │ │ ├── locales/ │ │ │ ├── ar.json │ │ │ ├── cs.json │ │ │ ├── de.json │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ ├── fi.json │ │ │ ├── fr.json │ │ │ ├── ja.json │ │ │ ├── pt-BR.json │ │ │ ├── ru.json │ │ │ ├── th.json │ │ │ ├── tr.json │ │ │ ├── uk.json │ │ │ ├── vi.json │ │ │ ├── zh-CN.json │ │ │ └── zh-TW.json │ │ ├── main.tsx │ │ └── store.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.node.json │ ├── tsconfig.tsbuildinfo │ └── vite.config.ts ├── docker/ │ ├── .gitignore │ ├── coolify/ │ │ ├── build_images.sh │ │ ├── client.Dockerfile │ │ ├── mongoDB.Dockerfile │ │ ├── nginx/ │ │ │ └── conf.d/ │ │ │ └── default.conf │ │ ├── redis.Dockerfile │ │ └── server.Dockerfile │ ├── dev/ │ │ ├── build_images.sh │ │ ├── certs/ │ │ │ └── .gitkeep │ │ ├── client.Dockerfile │ │ ├── docker-compose.custom-ca-example.yaml │ │ ├── docker-compose.yaml │ │ ├── mongoDB.Dockerfile │ │ ├── nginx/ │ │ │ └── conf.d/ │ │ │ └── default.conf │ │ ├── nginx-test/ │ │ │ ├── docker-compose.nginx-test.yaml │ │ │ └── nginx.conf │ │ └── server.Dockerfile │ ├── dist/ │ │ ├── build_images.sh │ │ ├── client.Dockerfile │ │ ├── docker-compose.yaml │ │ ├── mongoDB.Dockerfile │ │ ├── nginx/ │ │ │ └── conf.d/ │ │ │ └── default.conf │ │ └── server.Dockerfile │ ├── dist-arm/ │ │ ├── build_images.sh │ │ ├── docker-compose.yaml │ │ └── server.Dockerfile │ ├── dist-mono/ │ │ ├── build_images.sh │ │ ├── docker-compose-local.yaml │ │ ├── docker-compose.yaml │ │ ├── mongoDB.Dockerfile │ │ └── server.Dockerfile │ ├── prod/ │ │ ├── build_images.sh │ │ ├── certbot-compose.yaml │ │ ├── client.Dockerfile │ │ ├── docker-compose.yaml │ │ ├── mongoDB.Dockerfile │ │ ├── nginx/ │ │ │ └── conf.d/ │ │ │ ├── cerbot │ │ │ └── default.conf │ │ └── server.Dockerfile │ └── staging/ │ ├── build_images.sh │ ├── cerbot-compose.yaml │ ├── client.Dockerfile │ ├── docker-compose.yaml │ ├── mongoDB.Dockerfile │ ├── nginx/ │ │ └── conf.d/ │ │ ├── certbot │ │ └── default.conf │ └── server.Dockerfile ├── docs/ │ ├── README.md │ ├── custom-ca-quick-reference.md │ ├── custom-ca-trust.md │ └── infrastructure-disk-selection.md ├── package.json ├── scripts/ │ └── flatten-locales.js └── server/ ├── .dockerignore ├── .github/ │ ├── pull_request_template.md │ └── workflows/ │ └── staging-deploy.yml ├── .gitignore ├── .mocharc.cjs ├── .nycrc ├── .prettierrc ├── LICENSE ├── README.md ├── eslint.config.js ├── jest.config.ts ├── nodemon.json ├── openapi.json ├── package.json ├── scripts/ │ └── generate-checks.js ├── src/ │ ├── app.ts │ ├── config/ │ │ ├── controllers.ts │ │ ├── routes.ts │ │ └── services.ts │ ├── controllers/ │ │ ├── authController.ts │ │ ├── checkController.ts │ │ ├── controllerUtils.ts │ │ ├── diagnosticController.ts │ │ ├── geoCheckController.ts │ │ ├── incidentController.ts │ │ ├── inviteController.ts │ │ ├── logController.ts │ │ ├── maintenanceWindowController.ts │ │ ├── monitorController.ts │ │ ├── notificationController.ts │ │ ├── queueController.ts │ │ ├── settingsController.ts │ │ └── statusPageController.ts │ ├── db/ │ │ ├── IDb.ts │ │ ├── MongoDB.ts │ │ ├── migration/ │ │ │ ├── 0001_migrateStatusWindowThreshold.ts │ │ │ ├── 0002_convertChecksToTimeSeries.ts │ │ │ ├── 0003_cleanupDuplicateMonitorStats.ts │ │ │ ├── 0004_fixInfrastructureThresholds.ts │ │ │ ├── 0005_migrateStatusPageTypeToArray.ts │ │ │ └── index.ts │ │ └── models/ │ │ ├── AppSettings.ts │ │ ├── Check.ts │ │ ├── GeoCheck.ts │ │ ├── Incident.ts │ │ ├── Invite.ts │ │ ├── MaintenanceWindow.ts │ │ ├── Migration.ts │ │ ├── Monitor.ts │ │ ├── MonitorStats.ts │ │ ├── Notification.ts │ │ ├── RecoveryToken.ts │ │ ├── StatusPage.ts │ │ ├── Team.ts │ │ ├── User.ts │ │ └── index.ts │ ├── index.ts │ ├── middleware/ │ │ ├── handleErrors.ts │ │ ├── isAllowed.ts │ │ ├── rateLimiter.ts │ │ ├── sanitization.ts │ │ ├── verifyJWT.ts │ │ └── verifyStatusPageAccess.ts │ ├── repositories/ │ │ ├── checks/ │ │ │ ├── IChecksRepository.ts │ │ │ └── MongoChecksRepistory.ts │ │ ├── geo-checks/ │ │ │ ├── IGeoChecksRepository.ts │ │ │ └── MongoGeoChecksRepository.ts │ │ ├── incidents/ │ │ │ ├── IIncidentsRepository.ts │ │ │ └── MongoIncidentRepository.ts │ │ ├── index.ts │ │ ├── invites/ │ │ │ ├── IInvitesRepository.ts │ │ │ └── MongoInviteRepository.ts │ │ ├── maintenance-windows/ │ │ │ ├── IMaintenanceWindowsRepository.ts │ │ │ └── MongoMaintenanceWindowsRepository.ts │ │ ├── monitor-stats/ │ │ │ ├── IMonitorStatsRepository.ts │ │ │ └── MongoMonitorStatsRepository.ts │ │ ├── monitors/ │ │ │ ├── IMonitorsRepository.ts │ │ │ └── MongoMonitorsRepository.ts │ │ ├── notifications/ │ │ │ ├── INotificationsRepository.ts │ │ │ └── MongoNotificationsRepository.ts │ │ ├── recovery-tokens/ │ │ │ ├── IRecoveryTokensRepository.ts │ │ │ └── MongoRecoveryTokensRepository.ts │ │ ├── settings/ │ │ │ ├── ISettingsRepository.ts │ │ │ └── MongoSettingsRepository.ts │ │ ├── status-pages/ │ │ │ ├── IStatusPagesRepository.ts │ │ │ └── MongoStatusPagesRepository.ts │ │ ├── teams/ │ │ │ ├── ITeamsRepository.ts │ │ │ └── MongoTeamsRepository.ts │ │ └── users/ │ │ ├── IUsersRepository.ts │ │ └── MongoUsersRepository.ts │ ├── routes/ │ │ ├── authRoute.ts │ │ ├── checkRoute.ts │ │ ├── diagnosticRoute.ts │ │ ├── geoCheckRoutes.ts │ │ ├── incidentRoute.ts │ │ ├── inviteRoute.ts │ │ ├── logRoutes.ts │ │ ├── maintenanceWindowRoute.ts │ │ ├── monitorRoute.ts │ │ ├── notificationRoute.ts │ │ ├── queueRoute.ts │ │ ├── settingsRoute.ts │ │ └── statusPageRoute.ts │ ├── service/ │ │ ├── business/ │ │ │ ├── checkService.ts │ │ │ ├── diagnosticService.ts │ │ │ ├── geoChecksService.ts │ │ │ ├── incidentService.ts │ │ │ ├── inviteService.ts │ │ │ ├── maintenanceWindowService.ts │ │ │ ├── monitorService.ts │ │ │ ├── statusPageService.ts │ │ │ └── userService.ts │ │ ├── index.ts │ │ ├── infrastructure/ │ │ │ ├── SuperSimpleQueue/ │ │ │ │ ├── SuperSimpleQueue.ts │ │ │ │ └── SuperSimpleQueueHelper.ts │ │ │ ├── bufferService.ts │ │ │ ├── emailService.ts │ │ │ ├── globalPingService.ts │ │ │ ├── network/ │ │ │ │ ├── AdvancedMatcher.ts │ │ │ │ ├── DockerProvider.ts │ │ │ │ ├── GameProvider.ts │ │ │ │ ├── GrpcProvider.ts │ │ │ │ ├── HardwareProvider.ts │ │ │ │ ├── HttpProvider.ts │ │ │ │ ├── IStatusProvider.ts │ │ │ │ ├── PageSpeedProvider.ts │ │ │ │ ├── PingProvider.ts │ │ │ │ ├── PortProvider.ts │ │ │ │ ├── WebSocketProvider.ts │ │ │ │ └── utils.ts │ │ │ ├── networkService.ts │ │ │ ├── notificationMessageBuilder.ts │ │ │ ├── notificationProviders/ │ │ │ │ ├── INotificationProvider.ts │ │ │ │ ├── discord.ts │ │ │ │ ├── email.ts │ │ │ │ ├── matrix.ts │ │ │ │ ├── pagerduty.ts │ │ │ │ ├── slack.ts │ │ │ │ ├── teams.ts │ │ │ │ ├── utils.ts │ │ │ │ └── webhook.ts │ │ │ ├── notificationsService.ts │ │ │ ├── protos/ │ │ │ │ └── health.proto │ │ │ └── statusService.ts │ │ └── system/ │ │ └── settingsService.ts │ ├── shutdown.ts │ ├── templates/ │ │ ├── addReview.mjml │ │ ├── employeeActivation.mjml │ │ ├── noIncidentsThisWeek.mjml │ │ ├── passwordReset.mjml │ │ ├── testEmailTemplate.mjml │ │ ├── unifiedNotification.mjml │ │ └── welcomeEmail.mjml │ ├── types/ │ │ ├── alert.ts │ │ ├── check.ts │ │ ├── email.ts │ │ ├── express.d.ts │ │ ├── geoCheck.ts │ │ ├── incident.ts │ │ ├── index.ts │ │ ├── invite.ts │ │ ├── maintenanceWindow.ts │ │ ├── monitor.ts │ │ ├── monitorStats.ts │ │ ├── network.ts │ │ ├── notification.ts │ │ ├── notificationMessage.ts │ │ ├── recoveryToken.ts │ │ ├── settings.ts │ │ ├── ssl-checker.d.ts │ │ ├── statusPage.ts │ │ ├── team.ts │ │ └── user.ts │ ├── utils/ │ │ ├── AppError.ts │ │ ├── dataUtils.ts │ │ ├── demoMonitors.json │ │ ├── imageProcessing.ts │ │ ├── logger.ts │ │ └── utils.ts │ └── validation/ │ ├── authValidation.ts │ ├── checkValidation.ts │ ├── envValidation.ts │ ├── incidentValidation.ts │ ├── index.ts │ ├── maintenanceWindowValidation.ts │ ├── monitorValidation.ts │ ├── notificationValidation.ts │ ├── settingsValidation.ts │ ├── shared.ts │ ├── statusPageValidation.ts │ └── userValidation.ts ├── test/ │ ├── monitorService.test.ts │ ├── superSimpleQueueHelper.test.ts │ └── teamsProvider.test.ts ├── tsconfig.jest.json └── tsconfig.json