├── .d.ts ├── .env.example ├── .eslintrc.json ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── integrate.yml │ └── publish.yml ├── .gitignore ├── .prettierrc ├── .travis.yml ├── .vscode ├── launch.json └── settings.json ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── __backend-tests__ ├── chronosMethods.test.js ├── jest.config.js ├── mockdbsetup.js └── mongo.test.js ├── __tests__ ├── README.md ├── charts │ ├── HealthChart.test.tsx │ └── TrafficChart.test.tsx ├── components │ ├── About.test.tsx │ ├── Contact.test.tsx │ ├── CreateAdmin.test.tsx │ ├── Header.test.tsx │ ├── Login.test.tsx │ ├── Settings.test.tsx │ └── SignUp.test.tsx ├── mock_data.json └── test_settings.json ├── app ├── App.tsx ├── assets │ ├── AntDesign.svg │ ├── C.svg │ ├── Chronos-Demo-poster.png │ ├── Chronos-Demo.gif │ ├── admin_approval.gif │ ├── animated_logo.gif │ ├── apple-icon-black.png │ ├── aws-icon-white.png │ ├── aws-icon-whitebg.png │ ├── aws-logo-color.png │ ├── clean-sprout.gif │ ├── disable_sign_up.gif │ ├── docker-logo-color.png │ ├── dotenvSetup.png │ ├── dropdown-arrow.png │ ├── electron-logo-color.png │ ├── email-icon-black.png │ ├── enable_sign_up.gif │ ├── enzyme-logo-color.png │ ├── express-logo-color.png │ ├── fire.png │ ├── graphql-logo-color.png │ ├── graphs.gif │ ├── growing-bean-1.gif │ ├── growing-bean-2.gif │ ├── growing-bean-3.gif │ ├── grpc-logo-color.png │ ├── http-logo-color.png │ ├── important.png │ ├── jest-logo-color.png │ ├── js-logo-color.png │ ├── logo.svg │ ├── macbook-logo-color.png │ ├── material-ui-logo-color.png │ ├── mit-logo-color.png │ ├── mongo-icon-color.png │ ├── mongo-icon-green-light.png │ ├── mongo-icon-green.png │ ├── mongo-icon-white.png │ ├── mongo-logo-color.png │ ├── mountain.png │ ├── mountain_longer.png │ ├── node-logo-color.png │ ├── npm-logo-color.png │ ├── plotly-logo-color.png │ ├── pngwing.com 2.png │ ├── pngwing.com.png │ ├── postgres-icon-white.png │ ├── postgres-icon-yellow-light.png │ ├── postgres-icon-yellow.png │ ├── postgres-logo-color.png │ ├── query_tool.gif │ ├── react-logo-color.png │ ├── slack-logo-color.png │ ├── spectron-logo-color.png │ ├── ts-logo-color.png │ ├── ts-logo-long-blue.png │ ├── ts-logo-long.png │ ├── vis-logo-color.png │ └── webpack-logo-color.png ├── charts │ ├── AwsChart.tsx │ ├── EventChart.tsx │ ├── GrafanaEventChart │ │ ├── GrafanaEventChart.tsx │ │ └── styles.scss │ ├── HealthChart.tsx │ ├── LogsTable.jsx │ ├── RequestTypesChart.tsx │ ├── ResponseCodesChart.tsx │ ├── RouteChart.jsx │ ├── TrafficChart.tsx │ └── sizeSwitch.js ├── components │ ├── About │ │ ├── About.tsx │ │ ├── PastContributors.tsx │ │ ├── StylingContext.tsx │ │ ├── TeamMembers.tsx │ │ └── styles.scss │ ├── ApplicationsCard │ │ ├── ApplicationsCard.tsx │ │ ├── EventHandlers.ts │ │ └── styles.scss │ ├── AwsEC2Graphs │ │ ├── AwsEC2Graphs.tsx │ │ └── styles.scss │ ├── AwsECSClusterGraphs.tsx │ ├── ClusterTable.tsx │ ├── Contact │ │ ├── Contact.tsx │ │ ├── ContactForm.tsx │ │ └── styles.scss │ ├── Copyright.tsx │ ├── CreateAdmin.tsx │ ├── DashboardIcons │ │ ├── DashboardIcons.tsx │ │ └── styles.scss │ ├── FirstLaunch │ │ ├── FirstLaunch.tsx │ │ └── styles.scss │ ├── GraphNavBar │ │ └── GraphNavBar.tsx │ ├── Header │ │ ├── Header.tsx │ │ ├── LiveToggle.tsx │ │ ├── ServiceDropdown.tsx │ │ └── styles.scss │ ├── Login.tsx │ ├── Occupied │ │ ├── Occupied.tsx │ │ ├── helpers │ │ │ └── muiHelper.ts │ │ ├── styles.scss │ │ └── types │ │ │ └── Occupied.ts │ ├── SearchBar │ │ ├── SearchBar.tsx │ │ └── styles.scss │ ├── Setting │ │ ├── Setting.tsx │ │ └── styles.scss │ ├── SignUp.tsx │ ├── Splash │ │ ├── Splash.tsx │ │ └── styles.scss │ ├── Styling.tsx │ ├── TransferColumns.tsx │ ├── WIP │ │ └── AwaitingApproval.tsx │ └── WindowBar │ │ ├── WindowBar.tsx │ │ └── styles.scss ├── containers │ ├── AWSGraphsContainer │ │ ├── AWSGraphsContainer.tsx │ │ └── styles.scss │ ├── DashboardContainer │ │ ├── DashboardContainer.tsx │ │ └── styles.scss │ ├── DockerHealthContainer.tsx │ ├── EventContainer.tsx │ ├── GrafanaIFrame.tsx │ ├── GraphsContainer │ │ ├── GraphsContainer.tsx │ │ ├── helpers │ │ │ └── index.ts │ │ └── styles.scss │ ├── HealthContainer.tsx │ ├── Inspect │ │ ├── Inspect.jsx │ │ └── styles.scss │ ├── LandingPageContainer.tsx │ ├── MainContainer │ │ ├── MainContainer.tsx │ │ └── styles.scss │ ├── ModifyMetricsContainer │ │ ├── ModifyMetricsContainer.tsx │ │ └── styles.scss │ ├── ProfileContainer.tsx │ ├── QueryContainer.tsx │ └── SidebarContainer │ │ ├── SidebarContainer.tsx │ │ └── styles.scss ├── context │ ├── ApplicationContext.tsx │ ├── AwsContext.tsx │ ├── CommsContext.tsx │ ├── DashboardContext.tsx │ ├── DockerContext.tsx │ ├── EventContext.tsx │ ├── HealthContext.tsx │ ├── QueryContext.tsx │ ├── TempCodingHC.tsx │ └── helpers.ts ├── index.html ├── index.scss ├── index.tsx ├── modals │ ├── AddModal │ │ ├── AddModal.scss │ │ ├── AddModal.tsx │ │ ├── ServiceDBType.tsx │ │ └── ServicesDescription.tsx │ ├── AwsModal │ │ ├── AwsDescription.tsx │ │ ├── AwsKeyUrl.tsx │ │ ├── AwsModal.scss │ │ ├── AwsModal.tsx │ │ ├── AwsRegion.tsx │ │ └── AwsServiceInstance.tsx │ ├── EnvModal │ │ ├── EnvModal.scss │ │ └── EnvModal.tsx │ ├── ServicesModal │ │ ├── ServicesLink.tsx │ │ ├── ServicesModal.scss │ │ └── ServicesModal.tsx │ ├── SetAuth │ │ └── SetAuth.tsx │ └── UserModal │ │ ├── UserModal.scss │ │ └── UserModal.tsx └── utils │ └── index.ts ├── assets ├── ChroNotes.png ├── animated_logo.gif ├── aws-logo-color.png ├── codebase_visulization.png ├── demo.gif ├── docker-logo-color.png ├── docker_example_logs.png ├── electron-logo-color.png ├── example-microservices-tracker.png ├── example_microservices_card.gif ├── examples_docker_removed.png ├── examples_docker_stop.png ├── examples_enable_kubernetes_engine.png ├── examples_kubernetes_created.png ├── gRPC_example_reverseProxy.png ├── graphql-logo-color.png ├── kubernetes-example2.png ├── mongo-logo-color.png ├── node-logo-color.png ├── pngwing.com.png └── postgres-logo-color.png ├── chronos_npm_package ├── .npmignore ├── README.md ├── build │ ├── chronos.js │ ├── chronos.js.map │ ├── controllers │ │ ├── GrafanaPanel.js │ │ ├── GrafanaPanel.js.map │ │ ├── alert.js │ │ ├── alert.js.map │ │ ├── createGrafanaDashboard.js │ │ ├── createGrafanaDashboard.js.map │ │ ├── dockerHelper.js │ │ ├── dockerHelper.js.map │ │ ├── getDataSource.js │ │ ├── getDataSource.js.map │ │ ├── healthHelpers.js │ │ ├── healthHelpers.js.map │ │ ├── mongo.js │ │ ├── mongo.js.map │ │ ├── postgres.js │ │ ├── postgres.js.map │ │ ├── utilities.js │ │ └── utilities.js.map │ ├── models │ │ ├── CommunicationModel.js │ │ ├── CommunicationModel.js.map │ │ ├── ContainerInfo.js │ │ ├── ContainerInfo.js.map │ │ ├── GrafanaAPIKeyModel.js │ │ ├── GrafanaAPIKeyModel.js.map │ │ ├── HealthModel.js │ │ ├── HealthModel.js.map │ │ ├── KafkaModel.js │ │ ├── KafkaModel.js.map │ │ ├── KubernetesModel.js │ │ ├── KubernetesModel.js.map │ │ ├── MetricsModel.js │ │ ├── MetricsModel.js.map │ │ ├── ServicesModel.js │ │ ├── ServicesModel.js.map │ │ ├── gRPC_CommunicationModel.js │ │ └── gRPC_CommunicationModel.js.map │ ├── server │ │ ├── fileControllers.js │ │ ├── fileControllers.js.map │ │ ├── kuberControllers.js │ │ ├── kuberControllers.js.map │ │ ├── server.js │ │ └── server.js.map │ └── wrappers │ │ ├── MongoClientWrapper.js │ │ ├── MongoClientWrapper.js.map │ │ ├── MongoServerWrapper.js │ │ ├── MongoServerWrapper.js.map │ │ ├── PostgresClientWrapper.js │ │ ├── PostgresClientWrapper.js.map │ │ ├── PostgresServerWrapper.js │ │ └── PostgresServerWrapper.js.map ├── chronos.ts ├── controllers │ ├── GrafanaPanel.ts │ ├── alert.ts │ ├── createGrafanaDashboard.ts │ ├── dockerHelper.ts │ ├── getDataSource.ts │ ├── healthHelpers.ts │ ├── mongo.ts │ ├── postgres.ts │ └── utilities.ts ├── dist │ ├── chronos.js │ ├── chronos.js.map │ ├── controllers │ │ ├── GrafanaPanel.js │ │ ├── GrafanaPanel.js.map │ │ ├── alert.js │ │ ├── alert.js.map │ │ ├── createGrafanaDashboard.js │ │ ├── createGrafanaDashboard.js.map │ │ ├── dockerHelper.js │ │ ├── dockerHelper.js.map │ │ ├── getDataSource.js │ │ ├── getDataSource.js.map │ │ ├── healthHelpers.js │ │ ├── healthHelpers.js.map │ │ ├── mongo.js │ │ ├── mongo.js.map │ │ ├── postgres.js │ │ ├── postgres.js.map │ │ ├── utilities.js │ │ └── utilities.js.map │ ├── models │ │ ├── CommunicationModel.js │ │ ├── CommunicationModel.js.map │ │ ├── ContainerInfo.js │ │ ├── ContainerInfo.js.map │ │ ├── GrafanaAPIKeyModel.js │ │ ├── GrafanaAPIKeyModel.js.map │ │ ├── HealthModel.js │ │ ├── HealthModel.js.map │ │ ├── KafkaModel.js │ │ ├── KafkaModel.js.map │ │ ├── KubernetesModel.js │ │ ├── KubernetesModel.js.map │ │ ├── MetricsModel.js │ │ ├── MetricsModel.js.map │ │ ├── ServicesModel.js │ │ ├── ServicesModel.js.map │ │ ├── gRPC_CommunicationModel.js │ │ └── gRPC_CommunicationModel.js.map │ ├── server │ │ ├── fileControllers.js │ │ ├── fileControllers.js.map │ │ ├── kuberControllers.js │ │ ├── kuberControllers.js.map │ │ ├── server.js │ │ └── server.js.map │ └── wrappers │ │ ├── MongoClientWrapper.js │ │ ├── MongoClientWrapper.js.map │ │ ├── MongoServerWrapper.js │ │ ├── MongoServerWrapper.js.map │ │ ├── PostgresClientWrapper.js │ │ ├── PostgresClientWrapper.js.map │ │ ├── PostgresServerWrapper.js │ │ └── PostgresServerWrapper.js.map ├── models │ ├── CommunicationModel.ts │ ├── ContainerInfo.ts │ ├── GrafanaAPIKeyModel.ts │ ├── HealthModel.ts │ ├── KafkaModel.ts │ ├── KubernetesModel.ts │ ├── MetricsModel.ts │ ├── ServicesModel.ts │ └── gRPC_CommunicationModel.ts ├── package-lock.json ├── package.json ├── server │ ├── data.csv │ ├── fileControllers.ts │ ├── kuberControllers.ts │ ├── output.csv │ ├── package-lock.json │ ├── package.json │ └── server.ts ├── tsconfig.json └── wrappers │ ├── MongoClientWrapper.js │ ├── MongoClientWrapper.ts │ ├── MongoServerWrapper.js │ ├── MongoServerWrapper.ts │ ├── PostgresClientWrapper.js │ ├── PostgresClientWrapper.ts │ ├── PostgresServerWrapper.js │ └── PostgresServerWrapper.ts ├── client └── stylesheets │ └── constants.scss ├── contributors.md ├── docs └── pull_request_template.md ├── e2e └── seleniumTest.js ├── electron ├── Main.ts ├── databases │ ├── mongo.ts │ └── postgres.ts ├── models │ ├── CommunicationModel.ts │ ├── DockerModel.ts │ ├── GrafanaAPIKeyModel.ts │ ├── HealthModel.ts │ ├── KafkaModel.ts │ ├── MetricsModel.ts │ ├── ServicesModel.ts │ └── UserModel.ts └── routes │ ├── cloudbased.ts │ ├── dashboard.ts │ ├── data.ts │ └── dataHelpers.ts ├── examples ├── AWS │ ├── AWS-EC2 │ │ ├── .babelrc │ │ ├── .dockerignore │ │ ├── .ebextensions │ │ │ └── 00_postgres_client.config │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── Dockerfile-dev │ │ ├── Dockerfile-postgres │ │ ├── README.md │ │ ├── client │ │ │ ├── App.tsx │ │ │ ├── actions │ │ │ │ └── actions.js │ │ │ ├── assets │ │ │ │ └── images │ │ │ │ │ └── mm.ico │ │ │ ├── components │ │ │ │ ├── MarketCreator.jsx │ │ │ │ ├── MarketDisplay.jsx │ │ │ │ ├── MarketsDisplay.jsx │ │ │ │ └── TotalsDisplay.jsx │ │ │ ├── constants │ │ │ │ └── actionTypes.js │ │ │ ├── containers │ │ │ │ ├── MainContainer.jsx │ │ │ │ └── MarketsContainer.jsx │ │ │ ├── index.tsx │ │ │ ├── reducers │ │ │ │ ├── cardsReducer.js │ │ │ │ └── index.js │ │ │ ├── store.js │ │ │ ├── styles.css │ │ │ └── test │ │ │ │ └── reducer.test.js │ │ ├── docker-compose-dev-hot.yml │ │ ├── docker-compose-test.yml │ │ ├── index.html │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── server │ │ │ ├── chronos-config.js │ │ │ ├── controllers │ │ │ │ ├── cardController.js │ │ │ │ └── marketController.js │ │ │ ├── models │ │ │ │ └── mmModel.js │ │ │ └── server.js │ │ └── webpack.config.js │ ├── AWS-ECS │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── app │ │ │ ├── chronos-config.js │ │ │ ├── images │ │ │ │ ├── profile-1.jpg │ │ │ │ └── profile-2.png │ │ │ ├── index.html │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ └── server.js │ │ └── docker-compose.yaml │ └── AWS-EKS │ │ ├── README.md │ │ ├── grafana.yaml │ │ ├── knote │ │ ├── knote.yaml │ │ ├── minio.yaml │ │ └── mongo.yaml │ │ └── opencostGrafana.json ├── docker │ ├── .env.example │ ├── README.md │ ├── auth │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── __test__ │ │ │ │ ├── current-user.test.ts │ │ │ │ ├── login.test.ts │ │ │ │ ├── logout.test.ts │ │ │ │ └── signup.test.ts │ │ │ ├── app.ts │ │ │ ├── chronos-config.ts │ │ │ ├── controllers │ │ │ │ └── auth-controller.ts │ │ │ ├── index.ts │ │ │ ├── models │ │ │ │ └── user.ts │ │ │ ├── routes │ │ │ │ ├── auth-router.ts │ │ │ │ └── event-router.ts │ │ │ ├── test │ │ │ │ └── setup.ts │ │ │ └── util │ │ │ │ └── attachCookie.ts │ │ └── tsconfig.json │ ├── client │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── package-lock.json │ │ ├── package.json │ │ └── src │ │ │ ├── Chronos_C_logo.svg │ │ │ ├── assets │ │ │ ├── index-1-GiMI3f.js │ │ │ ├── index-GXx520xc.css │ │ │ ├── index-Iv1Bjgtf.js │ │ │ └── index-mWDjQwHk.css │ │ │ ├── chronos-config.js │ │ │ ├── index.html │ │ │ └── server.js │ ├── docker-compose.yml │ ├── event-bus │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app.ts │ │ │ ├── chronos-config.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── grafana │ │ └── provisioning │ │ │ ├── dashboards │ │ │ ├── 10619_rev1.json │ │ │ └── dashboard.yml │ │ │ └── datasources │ │ │ └── datasource.yml │ ├── inventory │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── __test__ │ │ │ │ └── inventory.test.ts │ │ │ ├── app.ts │ │ │ ├── chronos-config.ts │ │ │ ├── controllers │ │ │ │ └── inventory-controllers.ts │ │ │ ├── index.ts │ │ │ ├── models │ │ │ │ └── Inventory.ts │ │ │ ├── routes │ │ │ │ ├── event-router.ts │ │ │ │ └── inventory-router.ts │ │ │ └── test │ │ │ │ └── setup.ts │ │ └── tsconfig.json │ ├── items │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── __test__ │ │ │ │ └── createItem.test.ts │ │ │ ├── app.ts │ │ │ ├── chronos-config.ts │ │ │ ├── controllers │ │ │ │ └── itemController.ts │ │ │ ├── index.ts │ │ │ ├── models │ │ │ │ ├── items.ts │ │ │ │ └── users.ts │ │ │ ├── routes │ │ │ │ ├── event-router.ts │ │ │ │ └── item-router.ts │ │ │ └── test │ │ │ │ └── setup.ts │ │ └── tsconfig.json │ ├── orders │ │ ├── .dockerignore │ │ ├── Dockerfile │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── __test__ │ │ │ │ └── Order.test.ts │ │ │ ├── app.ts │ │ │ ├── chronos-config.ts │ │ │ ├── controllers │ │ │ │ └── order-controller.ts │ │ │ ├── index.ts │ │ │ ├── models │ │ │ │ └── Order.ts │ │ │ ├── routes │ │ │ │ ├── event-router.ts │ │ │ │ └── order-router.ts │ │ │ └── test │ │ │ │ └── setup.ts │ │ └── tsconfig.json │ └── prometheus.yml ├── gRPC │ ├── README.md │ ├── books │ │ ├── BookModel.js │ │ ├── book.proto │ │ ├── bookServer.js │ │ ├── chronos-config.js │ │ ├── package-lock.json │ │ └── package.json │ ├── orders │ │ ├── OrderModel.js │ │ ├── bookClient.js │ │ ├── chronos-config.js │ │ ├── order.proto │ │ ├── orderServer.js │ │ ├── package-lock.json │ │ └── package.json │ ├── package.json │ └── reverse_proxy │ │ ├── bookClient.js │ │ ├── chronos-config.js │ │ ├── index.html │ │ ├── index.js │ │ ├── orderClient.js │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── reverseProxy.proto │ │ └── reverseProxyServer.js ├── kubernetes │ ├── README.md │ ├── client │ │ ├── Dockerfile │ │ └── build │ │ │ ├── asset-manifest.json │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ ├── precache-manifest.643d699b3b92420eb83e0a6a66a9267f.js │ │ │ ├── robots.txt │ │ │ ├── service-worker.js │ │ │ └── static │ │ │ └── js │ │ │ ├── 2.3922028e.chunk.js │ │ │ ├── 2.3922028e.chunk.js.LICENSE │ │ │ ├── 2.3922028e.chunk.js.map │ │ │ ├── main.b36f978b.chunk.js │ │ │ ├── main.b36f978b.chunk.js.map │ │ │ ├── runtime-main.1dc66141.js │ │ │ └── runtime-main.1dc66141.js.map │ ├── launch │ │ ├── backend.yml │ │ ├── clusterRole.yml │ │ ├── frontend.yml │ │ ├── grafana-datasource-config.yml │ │ ├── grafana.ini │ │ ├── grafana.yml │ │ ├── grafanaService.yml │ │ ├── promConfig.yml │ │ └── prometheus.yml │ ├── scripts │ │ ├── buildClient.sh │ │ ├── buildServer.sh │ │ ├── setup.sh │ │ ├── startKuber.sh │ │ └── stopKuber.sh │ └── server │ │ ├── .dockerignore │ │ ├── .env.example │ │ ├── Dockerfile │ │ ├── app.js │ │ ├── chronos-config.js │ │ ├── package-lock.json │ │ └── package.json └── microservices │ ├── Makefile │ ├── README.md │ ├── auth │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── __test__ │ │ │ ├── current-user.test.ts │ │ │ ├── login.test.ts │ │ │ ├── logout.test.ts │ │ │ └── signup.test.ts │ │ ├── app.ts │ │ ├── chronos-config.ts │ │ ├── controllers │ │ │ └── auth-controller.ts │ │ ├── index.ts │ │ ├── models │ │ │ └── user.ts │ │ ├── routes │ │ │ ├── auth-router.ts │ │ │ └── event-router.ts │ │ ├── test │ │ │ └── setup.ts │ │ └── util │ │ │ └── attachCookie.ts │ └── tsconfig.json │ ├── client-dev │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── README.md │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ └── Chronos_C_logo.svg │ ├── src │ │ ├── App.tsx │ │ ├── components │ │ │ ├── ClothesIcon.tsx │ │ │ ├── CreateItemForm.tsx │ │ │ ├── CreateOrderForm.tsx │ │ │ ├── FruitIcon.tsx │ │ │ ├── Header.tsx │ │ │ ├── ItemList.tsx │ │ │ ├── Loading.tsx │ │ │ ├── OrderList.tsx │ │ │ └── PageLinks.tsx │ │ ├── context │ │ │ ├── actions.ts │ │ │ ├── appContext.tsx │ │ │ └── reducer.ts │ │ ├── index.css │ │ ├── main.tsx │ │ ├── pages │ │ │ ├── About.tsx │ │ │ ├── Home.tsx │ │ │ ├── Items.tsx │ │ │ ├── Login.tsx │ │ │ ├── NotFound.tsx │ │ │ ├── Orders.tsx │ │ │ ├── Protected.tsx │ │ │ └── SharedLayout.tsx │ │ ├── util │ │ │ ├── customFetch.ts │ │ │ ├── testData.ts │ │ │ └── types.ts │ │ └── vite-env.d.ts │ ├── tailwind.config.js │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts │ ├── client │ ├── dist │ │ └── index.html │ ├── package-lock.json │ ├── package.json │ └── src │ │ ├── Chronos_C_logo.svg │ │ ├── assets │ │ ├── index-1-GiMI3f.js │ │ ├── index-GXx520xc.css │ │ ├── index-Iv1Bjgtf.js │ │ └── index-mWDjQwHk.css │ │ ├── chronos-config.js │ │ ├── index.html │ │ └── server.js │ ├── common │ ├── build │ │ ├── errors │ │ │ ├── bad-request-error.d.ts │ │ │ ├── bad-request-error.js │ │ │ ├── custom-error.d.ts │ │ │ ├── custom-error.js │ │ │ ├── db-connection-error.d.ts │ │ │ ├── db-connection-error.js │ │ │ ├── not-authorized-error.d.ts │ │ │ ├── not-authorized-error.js │ │ │ ├── not-found-error.d.ts │ │ │ └── not-found-error.js │ │ ├── events │ │ │ ├── events.d.ts │ │ │ └── events.js │ │ ├── index.d.ts │ │ ├── index.js │ │ └── middlewares │ │ │ ├── currentUser.d.ts │ │ │ ├── currentUser.js │ │ │ ├── errorHandler.d.ts │ │ │ ├── errorHandler.js │ │ │ ├── requireAuth.d.ts │ │ │ └── requireAuth.js │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── errors │ │ │ ├── bad-request-error.ts │ │ │ ├── custom-error.ts │ │ │ ├── db-connection-error.ts │ │ │ ├── not-authorized-error.ts │ │ │ └── not-found-error.ts │ │ ├── events │ │ │ └── events.ts │ │ ├── index.ts │ │ └── middlewares │ │ │ ├── currentUser.ts │ │ │ ├── errorHandler.ts │ │ │ └── requireAuth.ts │ └── tsconfig.json │ ├── event-bus │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app.ts │ │ ├── chronos-config.ts │ │ └── index.ts │ └── tsconfig.json │ ├── inventory │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── __test__ │ │ │ └── inventory.test.ts │ │ ├── app.ts │ │ ├── chronos-config.ts │ │ ├── controllers │ │ │ └── inventory-controllers.ts │ │ ├── index.ts │ │ ├── models │ │ │ └── Inventory.ts │ │ ├── routes │ │ │ ├── event-router.ts │ │ │ └── inventory-router.ts │ │ └── test │ │ │ └── setup.ts │ └── tsconfig.json │ ├── items │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── __test__ │ │ │ └── createItem.test.ts │ │ ├── app.ts │ │ ├── chronos-config.ts │ │ ├── controllers │ │ │ └── itemController.ts │ │ ├── index.ts │ │ ├── models │ │ │ ├── items.ts │ │ │ └── users.ts │ │ ├── routes │ │ │ ├── event-router.ts │ │ │ └── item-router.ts │ │ └── test │ │ │ └── setup.ts │ └── tsconfig.json │ ├── orders │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── __test__ │ │ │ └── Order.test.ts │ │ ├── app.ts │ │ ├── chronos-config.ts │ │ ├── controllers │ │ │ └── order-controller.ts │ │ ├── index.ts │ │ ├── models │ │ │ └── Order.ts │ │ ├── routes │ │ │ ├── event-router.ts │ │ │ └── order-router.ts │ │ └── test │ │ │ └── setup.ts │ └── tsconfig.json │ ├── package-lock.json │ └── package.json ├── hpropagate.d.ts ├── index.cjs ├── jest.config.ts ├── jest_setup ├── styleMock.js └── windowMock.js ├── jmx_config.yaml ├── package-lock.json ├── package.json ├── settings.json ├── src └── types │ └── hpropagate.d.ts ├── tsconfig.json ├── utilities ├── copyDist.ts └── deleteDist.ts ├── webpack.config.cjs └── webpack.config.js /.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.png' 2 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | # This is an example .env file for you to create in order to insert your private URI for /electron 2 | # Your .env file should live in the root directory for the current configuration used in UserModel.ts 3 | MONGO_URI='' -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/workflows/integrate.yml: -------------------------------------------------------------------------------- 1 | name: Frontend and Backend testing 2 | 3 | on: 4 | pull_request: 5 | branches: [master] 6 | ##Branch name may need to be changed depending on name of your dev branch 7 | jobs: 8 | frontend_testing: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - uses: actions/setup-node@v1 13 | with: 14 | node-version: 18 15 | - run: npm install --package-lock-only 16 | - run: npm ci 17 | - run: npm run build 18 | - run: npm run test 19 | 20 | backend_testing: 21 | runs-on: ubuntu-latest 22 | timeout-minutes: 7 23 | steps: 24 | - uses: actions/checkout@v2 25 | - uses: actions/setup-node@v1 26 | with: 27 | node-version: 18 28 | - run: npm install --package-lock-only 29 | - run: npm ci 30 | - run: npm run build 31 | - run: npx jest --config __backend-tests__/jest.config.js --verbose 32 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish Package to npmjs 2 | on: 3 | release: 4 | types: [published] 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v3 10 | # Setup .npmrc file to publish to npm 11 | - uses: actions/setup-node@v3 12 | with: 13 | node-version: '18.17.1' 14 | registry-url: 'https://registry.npmjs.org' 15 | - run: npm ci 16 | - run: npm publish ./chronos_npm_package --access=public 17 | env: 18 | # need to add NPM token to github secret if not available 19 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # JS Project-Specific # 2 | ####################### 3 | # node_modules 4 | /dist 5 | /build 6 | release-builds 7 | coverage 8 | __tests__/**/__snapshots__ 9 | .env 10 | databases.txt 11 | settings.json 12 | 13 | # Compiled source # 14 | ################### 15 | *.com 16 | *.class 17 | *.dll 18 | *.exe 19 | *.o 20 | *.so 21 | 22 | # Packages # 23 | ############ 24 | # it's better to unpack these files and commit the raw source 25 | # git has its own built in compression methods 26 | *.7z 27 | *.dmg 28 | *.gz 29 | *.iso 30 | *.jar 31 | *.rar 32 | *.tar 33 | *.zip 34 | 35 | # Logs and databases # 36 | ###################### 37 | *.log 38 | *.sql 39 | *.sqlite 40 | .nyc_output 41 | 42 | # OS generated files # 43 | ###################### 44 | .DS_Store 45 | .DS_Store? 46 | ._* 47 | .Spotlight-V100 48 | .Trashes 49 | ehthumbs.db 50 | Thumbs.db 51 | node_modules 52 | 53 | out/ -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "useTabs": false, 4 | "endOfLine": "auto", 5 | "arrowParens": "avoid", 6 | "printWidth": 100 7 | } 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 'stable' 4 | os: osx 5 | jobs: 6 | # allow_failures: 7 | # - os: osx 8 | fast_finish: true 9 | install: 10 | - npm install 11 | script: 12 | npm run test:app 13 | # safelist 14 | # branches: 15 | # only: 16 | # - master 17 | # - middleware 18 | # - chronosWebsite 19 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | } -------------------------------------------------------------------------------- /__backend-tests__/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | roots: [''], // Set the root directory for test files (adjust this path to your test folder) 4 | 5 | testRegex: '(/tests/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$', 6 | 7 | // Code coverage settings 8 | collectCoverage: true, 9 | coverageDirectory: 'coverage', 10 | // Specify the test path files/patterns to ignore 11 | testPathIgnorePatterns: ['/node_modules/', '/__tests__/', '/__backend-tests__/mongo.test.js'], 12 | }; 13 | -------------------------------------------------------------------------------- /__tests__/components/About.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render, screen } from '@testing-library/react'; 3 | import About from '../../app/components/About/About'; 4 | import DashboardContextProvider from '../../app/context/DashboardContext'; 5 | 6 | describe('About Page', () => { 7 | let element; 8 | beforeAll(() => { 9 | render( 10 | 11 | 12 | 13 | ); 14 | element = screen.getByTestId('aboutPage'); 15 | }); 16 | 17 | // it('Should have three p tags', () => { 18 | // expect(element.querySelectorAll('p').length).toBe(6); 19 | // }); 20 | 21 | it('Should have three h3 tags', () => { 22 | expect(element.querySelectorAll('h3').length).toBe(3); 23 | }); 24 | 25 | it('Should have three divs', () => { 26 | expect(element.querySelectorAll('div').length).toBe(3); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /__tests__/components/Settings.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render, fireEvent, screen } from '@testing-library/react'; 3 | import Settings from '../../app/components/Setting/Setting'; 4 | import { DashboardContext } from '../../app/context/DashboardContext'; 5 | import '@testing-library/jest-dom'; 6 | 7 | describe('Settings', () => { 8 | let changeMode = jest.fn(); 9 | 10 | beforeEach(() => { 11 | render( 12 | 13 | 14 | 15 | ); 16 | }); 17 | 18 | test('Should change mode to light mode on light button click', () => { 19 | fireEvent.click(screen.getByRole('button', { name: 'Light' })); 20 | expect(changeMode).toHaveBeenCalledWith('light'); 21 | }); 22 | 23 | test('Should change mode to dark mode on dark button click', () => { 24 | fireEvent.click(screen.getByRole('button', { name: 'Dark' })); 25 | expect(changeMode).toHaveBeenCalledWith('dark'); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /__tests__/mock_data.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "activememory": [12, 13], 3 | "blockedprocesses": [98, 43], 4 | "cpuloadpercent": [12, 1], 5 | "cpuspeed": [43569, 32], 6 | "cputemp": [5, 32], 7 | "freememory": [55648, 76], 8 | "id": [6, 8], 9 | "service": ["chronos-mock","chronos-mock"], 10 | "latency": [41, 51], 11 | "runningprocesses": [12, 153], 12 | "sleepingprocesses": [312, 33], 13 | "time": ["", ""], 14 | "totalmemory": [1, 4], 15 | "usedmemory": [3, 6] 16 | }] 17 | 18 | -------------------------------------------------------------------------------- /__tests__/test_settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "services": [ 3 | [ 4 | "chronosDB", 5 | "MongoDB", 6 | "PUT YOUR MONGO URI HERE", 7 | "", 8 | "Dec 19, 2022 4:50 PM" 9 | ] 10 | ], 11 | "mode": "light", 12 | "splash": true, 13 | "landingPage": "dashBoard" 14 | } 15 | -------------------------------------------------------------------------------- /app/App.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import Splash from './components/Splash/Splash'; 3 | import DashboardContainer from './containers/DashboardContainer/DashboardContainer'; 4 | import './index.scss'; 5 | 6 | 7 | // this is the fitness gram pacer test 8 | // React memo helps with rendering optimization. The components within React memo will only be rerendered if prompt has changed 9 | const App: React.FC = React.memo(() => { 10 | return ( 11 |
12 | 13 | 14 |
15 | ); 16 | }); 17 | 18 | export default App; 19 | -------------------------------------------------------------------------------- /app/assets/C.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/assets/Chronos-Demo-poster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/Chronos-Demo-poster.png -------------------------------------------------------------------------------- /app/assets/Chronos-Demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/Chronos-Demo.gif -------------------------------------------------------------------------------- /app/assets/admin_approval.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/admin_approval.gif -------------------------------------------------------------------------------- /app/assets/animated_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/animated_logo.gif -------------------------------------------------------------------------------- /app/assets/apple-icon-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/apple-icon-black.png -------------------------------------------------------------------------------- /app/assets/aws-icon-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/aws-icon-white.png -------------------------------------------------------------------------------- /app/assets/aws-icon-whitebg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/aws-icon-whitebg.png -------------------------------------------------------------------------------- /app/assets/aws-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/aws-logo-color.png -------------------------------------------------------------------------------- /app/assets/clean-sprout.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/clean-sprout.gif -------------------------------------------------------------------------------- /app/assets/disable_sign_up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/disable_sign_up.gif -------------------------------------------------------------------------------- /app/assets/docker-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/docker-logo-color.png -------------------------------------------------------------------------------- /app/assets/dotenvSetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/dotenvSetup.png -------------------------------------------------------------------------------- /app/assets/dropdown-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/dropdown-arrow.png -------------------------------------------------------------------------------- /app/assets/electron-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/electron-logo-color.png -------------------------------------------------------------------------------- /app/assets/email-icon-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/email-icon-black.png -------------------------------------------------------------------------------- /app/assets/enable_sign_up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/enable_sign_up.gif -------------------------------------------------------------------------------- /app/assets/enzyme-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/enzyme-logo-color.png -------------------------------------------------------------------------------- /app/assets/express-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/express-logo-color.png -------------------------------------------------------------------------------- /app/assets/fire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/fire.png -------------------------------------------------------------------------------- /app/assets/graphql-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/graphql-logo-color.png -------------------------------------------------------------------------------- /app/assets/graphs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/graphs.gif -------------------------------------------------------------------------------- /app/assets/growing-bean-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/growing-bean-1.gif -------------------------------------------------------------------------------- /app/assets/growing-bean-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/growing-bean-2.gif -------------------------------------------------------------------------------- /app/assets/growing-bean-3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/growing-bean-3.gif -------------------------------------------------------------------------------- /app/assets/grpc-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/grpc-logo-color.png -------------------------------------------------------------------------------- /app/assets/http-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/http-logo-color.png -------------------------------------------------------------------------------- /app/assets/important.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/important.png -------------------------------------------------------------------------------- /app/assets/jest-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/jest-logo-color.png -------------------------------------------------------------------------------- /app/assets/js-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/js-logo-color.png -------------------------------------------------------------------------------- /app/assets/macbook-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/macbook-logo-color.png -------------------------------------------------------------------------------- /app/assets/material-ui-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/material-ui-logo-color.png -------------------------------------------------------------------------------- /app/assets/mit-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/mit-logo-color.png -------------------------------------------------------------------------------- /app/assets/mongo-icon-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/mongo-icon-color.png -------------------------------------------------------------------------------- /app/assets/mongo-icon-green-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/mongo-icon-green-light.png -------------------------------------------------------------------------------- /app/assets/mongo-icon-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/mongo-icon-green.png -------------------------------------------------------------------------------- /app/assets/mongo-icon-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/mongo-icon-white.png -------------------------------------------------------------------------------- /app/assets/mongo-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/mongo-logo-color.png -------------------------------------------------------------------------------- /app/assets/mountain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/mountain.png -------------------------------------------------------------------------------- /app/assets/mountain_longer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/mountain_longer.png -------------------------------------------------------------------------------- /app/assets/node-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/node-logo-color.png -------------------------------------------------------------------------------- /app/assets/npm-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/npm-logo-color.png -------------------------------------------------------------------------------- /app/assets/plotly-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/plotly-logo-color.png -------------------------------------------------------------------------------- /app/assets/pngwing.com 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/pngwing.com 2.png -------------------------------------------------------------------------------- /app/assets/pngwing.com.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/pngwing.com.png -------------------------------------------------------------------------------- /app/assets/postgres-icon-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/postgres-icon-white.png -------------------------------------------------------------------------------- /app/assets/postgres-icon-yellow-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/postgres-icon-yellow-light.png -------------------------------------------------------------------------------- /app/assets/postgres-icon-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/postgres-icon-yellow.png -------------------------------------------------------------------------------- /app/assets/postgres-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/postgres-logo-color.png -------------------------------------------------------------------------------- /app/assets/query_tool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/query_tool.gif -------------------------------------------------------------------------------- /app/assets/react-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/react-logo-color.png -------------------------------------------------------------------------------- /app/assets/slack-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/slack-logo-color.png -------------------------------------------------------------------------------- /app/assets/spectron-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/spectron-logo-color.png -------------------------------------------------------------------------------- /app/assets/ts-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/ts-logo-color.png -------------------------------------------------------------------------------- /app/assets/ts-logo-long-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/ts-logo-long-blue.png -------------------------------------------------------------------------------- /app/assets/ts-logo-long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/ts-logo-long.png -------------------------------------------------------------------------------- /app/assets/vis-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/vis-logo-color.png -------------------------------------------------------------------------------- /app/assets/webpack-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/open-source-labs/Chronos/c0790ef0d699a0044cb355c805dd744309fb2134/app/assets/webpack-logo-color.png -------------------------------------------------------------------------------- /app/charts/sizeSwitch.js: -------------------------------------------------------------------------------- 1 | let soloWidth = window.innerWidth > 800 ? 800 : window.innerWidth - 270; 2 | 3 | /** From Version 5.2 Team: 4 | * @solo needs to be mutable, but eslint doesn't like exporting mutable variables 5 | */ 6 | 7 | // eslint-disable-next-line import/no-mutable-exports 8 | export let solo = { 9 | height: 600, 10 | width: soloWidth, 11 | }; 12 | 13 | window.addEventListener('resize', () => { 14 | soloWidth = window.innerWidth > 800 ? 800 : window.innerWidth - 270; 15 | solo = { 16 | ...solo, 17 | width: soloWidth, 18 | }; 19 | }); 20 | 21 | export const all = { 22 | height: 400, 23 | width: 400, 24 | }; 25 | -------------------------------------------------------------------------------- /app/components/About/StylingContext.tsx: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | import { DashboardContext } from '../../context/DashboardContext'; 3 | import lightAndDark from '../Styling'; 4 | 5 | export const useStylingContext = () => { 6 | const { mode } = useContext(DashboardContext); 7 | const currentMode = mode === 'light' ? lightAndDark.lightModeText : lightAndDark.darkModeText; 8 | return currentMode; 9 | }; -------------------------------------------------------------------------------- /app/components/About/TeamMembers.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useStylingContext } from './StylingContext'; 3 | 4 | const names = ['Arnold', 'Ashley', 'Pete', 'Rich']; 5 | 6 | const TeamMembers: React.FC = () => { 7 | const currentMode = useStylingContext(); 8 | 9 | const nameList = names.map(name => ( 10 | 11 |

{name}

12 |
13 | )); 14 | 15 | return ( 16 |
17 |

18 | Current Version Authors 19 |

20 |
21 | {nameList} 22 |
23 |
24 |
25 | ); 26 | }; 27 | 28 | export default TeamMembers; -------------------------------------------------------------------------------- /app/components/AwsEC2Graphs/styles.scss: -------------------------------------------------------------------------------- 1 | .charts { 2 | display: grid; 3 | grid-template-columns: auto auto; 4 | padding: 10px; 5 | } 6 | 7 | .chart { 8 | margin: 10px; 9 | text-align: center; 10 | } -------------------------------------------------------------------------------- /app/components/Copyright.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Typography, Link } from '@mui/material'; 3 | import { makeStyles } from '@mui/styles'; 4 | import '../stylesheets/Applications.scss'; 5 | 6 | export interface CopyrightProps {} 7 | 8 | const Copyright: React.FC = React.memo(() => { 9 | const useStyles = makeStyles(theme => ({ 10 | copyright: { 11 | fontFamily: 'Roboto', 12 | position: 'fixed', 13 | color: '#FAFDF9', 14 | }, 15 | })); 16 | const classes = useStyles(); 17 | return ( 18 | 19 | {'Copyright © '} 20 | 21 | Team Chronos 22 | {' '} 23 | {new Date().getFullYear()} 24 | {'.'} 25 | 26 | ); 27 | }); 28 | export default Copyright; 29 | -------------------------------------------------------------------------------- /app/components/FirstLaunch/FirstLaunch.tsx: -------------------------------------------------------------------------------- 1 | import React, { useContext } from 'react'; 2 | import { DashboardContext } from '../../context/DashboardContext'; 3 | import './styles.scss' 4 | 5 | // THIS FILE IS NOT DOING ANYTHING RIGHT NOW 6 | const FirstLaunch: React.FC = React.memo(() => { 7 | const { updateLandingPage } = useContext(DashboardContext); 8 | 9 | return ( 10 |
11 |
12 |

Welcome to Chronos!

13 |

Would you like authentication?

14 |
15 | 18 | 21 |
22 |
23 |
24 | ); 25 | }); 26 | 27 | export default FirstLaunch; 28 | -------------------------------------------------------------------------------- /app/components/Header/LiveToggle.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const LiveToggle = ({ live, toggleLive }) => { 4 | return ( 5 | 12 | ); 13 | }; 14 | 15 | export default LiveToggle; -------------------------------------------------------------------------------- /app/components/Occupied/types/Occupied.ts: -------------------------------------------------------------------------------- 1 | 2 | export type TModal = { 3 | isOpen:boolean 4 | type:string 5 | } 6 | 7 | export type TModalSetter = { 8 | setModal: React.Dispatch> 12 | } -------------------------------------------------------------------------------- /app/components/SearchBar/styles.scss: -------------------------------------------------------------------------------- 1 | .form { 2 | height: 30px; 3 | font-weight: 100; 4 | font-size: inherit; 5 | color: inherit; 6 | display: flex; 7 | text-align: center; 8 | vertical-align: middle; 9 | justify-items: center; 10 | align-items: center; 11 | 12 | } 13 | 14 | .form :hover{ 15 | cursor: pointer; 16 | } 17 | 18 | .inputContainer { 19 | position: relative; 20 | display: flex; 21 | flex-direction: column; 22 | 23 | .searchIconSvg { 24 | transform: scale(0.1) translate(758.9px, -720px); 25 | position: absolute; 26 | fill: rgb(131, 129, 133); 27 | } 28 | } 29 | 30 | 31 | #textInput { 32 | background-color: transparent; 33 | font-family: 'Roboto'; 34 | font-size: 16px; 35 | outline: none; 36 | border: 0; 37 | padding: 2px; 38 | transition: all 0.25s ease; 39 | pointer-events: none; 40 | text-align: left; 41 | margin-top: 5px; 42 | } -------------------------------------------------------------------------------- /app/components/Setting/Setting.tsx: -------------------------------------------------------------------------------- 1 | import React, { useContext } from 'react'; 2 | import './styles.scss'; 3 | import { DashboardContext } from '../../context/DashboardContext'; 4 | 5 | const Settings: React.FC = React.memo(() => { 6 | const { changeMode } = useContext(DashboardContext); 7 | 8 | const handleClick = (mode: string) => { 9 | changeMode(mode); 10 | }; 11 | 12 | return ( 13 |
14 | 17 | 20 |
21 | ); 22 | }); 23 | 24 | export default Settings; -------------------------------------------------------------------------------- /app/components/Setting/styles.scss: -------------------------------------------------------------------------------- 1 | @use '../../index.scss' as *; 2 | 3 | .settings { 4 | display: flex; 5 | align-content: center; 6 | align-items: center; 7 | justify-content: center; 8 | justify-items: center; 9 | position: absolute; 10 | margin-left: 50px; 11 | top: 0; 12 | left: 0; 13 | width: 100vw; 14 | height: 100vh; 15 | opacity: 1; 16 | } 17 | 18 | .mode { 19 | display: flex; 20 | font-size: 24px; 21 | flex-direction: column; 22 | justify-content: center; 23 | align-items: center; 24 | height: 280px; 25 | width: 280px; 26 | text-align: center; 27 | box-shadow: $boxshadow2; 28 | margin: 20px; 29 | font-weight: 100; 30 | opacity: 0.8; 31 | 32 | &:hover { 33 | opacity: 1; 34 | font-weight: 600; 35 | } 36 | } 37 | 38 | #lightMode { 39 | color: $black; 40 | background-color: $white; 41 | box-shadow: $boxshadow2; 42 | } 43 | 44 | #darkMode { 45 | color: $white; 46 | background-color: $black; 47 | box-shadow: $boxshadow2; 48 | } 49 | -------------------------------------------------------------------------------- /app/components/Splash/Splash.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react'; 2 | import './styles.scss'; // Adjust to import from the new location 3 | 4 | const Splash: React.FC = React.memo(() => { 5 | const [visible, setVisible] = useState(true); 6 | 7 | useEffect(() => { 8 | setTimeout(() => setVisible(false), 2000); // Adjust time as needed 9 | }, []); 10 | 11 | return ( 12 | <> 13 | {visible && ( 14 |
15 | 16 |
17 | )} 18 | 19 | ); 20 | }); 21 | 22 | export default Splash; -------------------------------------------------------------------------------- /app/components/WIP/AwaitingApproval.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useNavigate } from 'react-router-dom'; 3 | 4 | // THIS FILE IS NOT DOING ANYTHING RIGHT NOW 5 | const AwaitingApproval: React.FC = () => { 6 | const navigate = useNavigate(); 7 | const reroute = () => navigate('/'); 8 | return ( 9 |
10 |

11 | Your account is awaiting approval. Please contact your administrator if you have any 12 | questions. 13 |

14 |
15 | 18 |
19 | ); 20 | } 21 | 22 | export default AwaitingApproval; 23 | -------------------------------------------------------------------------------- /app/components/WindowBar/WindowBar.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | // import Close from '@mui/icons-material/Close'; 3 | // import Maximize from '@mui/icons-material/CheckBoxOutlineBlankSharp'; 4 | // import Minimize from '@mui/icons-material/RemoveSharp'; 5 | import './styles.scss'; 6 | 7 | // const { ipcRenderer } = window.require('electron'); 8 | 9 | const WindowBar = () => { 10 | return ( 11 |
12 | {/* ipcRenderer.send('min')} /> 13 | ipcRenderer.send('max')} /> 14 | ipcRenderer.send('close')} /> */} 15 |
16 | ); 17 | } 18 | 19 | export default WindowBar; -------------------------------------------------------------------------------- /app/components/WindowBar/styles.scss: -------------------------------------------------------------------------------- 1 | @use '../../index.scss' as *; 2 | 3 | #titleBar { 4 | position: fixed; 5 | display: flex; 6 | justify-content: flex-end; 7 | background-color: $darkblue; 8 | color: white; 9 | width: calc(100% - #{$sidebarWidth}); 10 | -webkit-app-region: drag; 11 | z-index: 3; 12 | transform: translateX(140px); 13 | height: 40px; 14 | .button { 15 | margin: 9px 7px 0px; 16 | -webkit-app-region: no-drag; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/containers/DashboardContainer/styles.scss: -------------------------------------------------------------------------------- 1 | .dash { 2 | display: flex; 3 | width: 100vw; 4 | } 5 | 6 | .makeStyles-btnStyle-18 { 7 | left: 108px !important; 8 | } 9 | -------------------------------------------------------------------------------- /app/containers/GraphsContainer/helpers/index.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | export const stringToColour = (string: string, recurses = 0) => { 4 | if (recurses > 20) return string; 5 | function hashString(str: string) { 6 | let hash = 0; 7 | for (let i = 0; i < str.length; i++) { 8 | hash = str.charCodeAt(i) + ((hash << 5) - hash); 9 | } 10 | let colour = '#'; 11 | for (let i = 0; i < 3; i++) { 12 | const value = (hash >> (i * 8)) & 0xff; 13 | colour += `00${value.toString(16)}`.substring(-2); 14 | } 15 | return colour; 16 | } 17 | function contrastYiq(color: string) { 18 | const num = parseInt(color.slice(1), 16); 19 | const r = (num >>> 16) & 0xff; 20 | const g = (num >>> 8) & 0xff; 21 | const b = num & 0xff; 22 | const yiq = (r * 299 + g * 587 + b * 114) / 1000; 23 | return yiq <= 50 ? stringToColour(color, recurses + 1) : color; 24 | } 25 | for (let salt = 0; salt < 5; salt++) string = hashString(string); 26 | return contrastYiq(string); 27 | }; -------------------------------------------------------------------------------- /app/containers/Inspect/styles.scss: -------------------------------------------------------------------------------- 1 | h2 { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | opacity: 0.7; 6 | } 7 | 8 | #graph { 9 | display: flex; 10 | justify-content: center; 11 | align-items: center; 12 | } 13 | 14 | .node-label { 15 | font-size: 12px; 16 | padding: 1px 4px; 17 | border-radius: 4px; 18 | background-color: rgba(0, 0, 0, 0.5); 19 | user-select: none; 20 | } -------------------------------------------------------------------------------- /app/containers/LandingPageContainer.tsx: -------------------------------------------------------------------------------- 1 | import React, { useContext } from 'react'; 2 | import { redirect } from 'react-router-dom'; 3 | import CreateAdmin from '../components/CreateAdmin'; 4 | import FirstLaunch from '../components/FirstLaunch/FirstLaunch'; 5 | import Login from '../components/Login'; 6 | import SignUp from '../components/SignUp'; 7 | import { DashboardContext } from '../context/DashboardContext'; 8 | 9 | function LandingPageContainer() { 10 | const { landingPage } = useContext(DashboardContext); 11 | 12 | if (landingPage === 'signUp') return ; 13 | if (landingPage === 'login') return ; 14 | if (landingPage === 'dashBoard') { 15 | 16 | // WE ARENT USING THIS PAGE RIGHT NOW FYI 17 | return

Hello Landing Page

18 | // return redirect("/applications") 19 | }; 20 | if (landingPage === 'createAdmin') return ; 21 | return ; 22 | }; 23 | 24 | export default LandingPageContainer; 25 | -------------------------------------------------------------------------------- /app/containers/MainContainer/styles.scss: -------------------------------------------------------------------------------- 1 | @use '../../index.scss' as *; 2 | 3 | .main-container { 4 | background-color: $grey; 5 | // flex: 1; 6 | min-height: 100vh; 7 | @include centerWithFlex(space-between); 8 | flex-direction: column; 9 | padding-left: $sidebarWidth; 10 | transition: padding-left, 200ms; 11 | max-width: 100%; 12 | 13 | .main-routes { 14 | width: 100%; 15 | max-width: 100%; 16 | height: 100%; 17 | padding-bottom: 20px; 18 | } 19 | 20 | .copyright-container { 21 | @include centerWithFlex(center); 22 | position: fixed; 23 | bottom: 0; 24 | width: 100%; 25 | padding: 10px; 26 | margin: 30px 0px; 27 | color: $background; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/containers/ModifyMetricsContainer/styles.scss: -------------------------------------------------------------------------------- 1 | @use '../../index.scss' as *; 2 | 3 | .metricsSelector { 4 | max-width: 90%; 5 | 6 | h2 { 7 | margin-bottom: 10px; 8 | } 9 | 10 | p { 11 | margin-bottom: 20px; 12 | margin-left: 10px; 13 | } 14 | } 15 | 16 | .metricsSublist { 17 | margin-left: 20px; 18 | } 19 | 20 | .modifyMetric { 21 | display: flex; 22 | gap: 1em; 23 | margin: 10px; 24 | align-items: center; 25 | 26 | label { 27 | display: flex; 28 | font-size: 1em; 29 | 30 | &:hover { 31 | font-weight: 550; 32 | cursor: pointer; 33 | color: royalblue; 34 | } 35 | 36 | &:active { 37 | color: darkblue; 38 | } 39 | } 40 | 41 | input { 42 | height: 20px; 43 | width: 20px; 44 | margin-right: 10px; 45 | } 46 | } 47 | 48 | #changeDatabaseSettingsButton { 49 | margin-bottom: 30px; 50 | } 51 | -------------------------------------------------------------------------------- /app/containers/ProfileContainer.tsx: -------------------------------------------------------------------------------- 1 | import React, { useContext } from 'react'; 2 | import UserModal from '../modals/UserModal/UserModal'; 3 | import SetAuth from '../modals/SetAuth/SetAuth'; 4 | import { DashboardContext } from '../context/DashboardContext'; 5 | import { TModalSetter } from '../components/Occupied/types/Occupied'; 6 | 7 | const ProfileContainer: React.FC = React.memo(({ setModal }) => { 8 | const { landingPage } = useContext(DashboardContext); 9 | 10 | if (landingPage === 'dashBoard') return ; 11 | return ; 12 | }); 13 | 14 | export default ProfileContainer; 15 | -------------------------------------------------------------------------------- /app/containers/QueryContainer.tsx: -------------------------------------------------------------------------------- 1 | import TransferColumns from '../components/TransferColumns'; 2 | import React from 'react'; 3 | 4 | const QueryContainer = React.memo(props => { 5 | return ( 6 |
7 |

Search Your Metrics to Display

8 | 9 |
10 | ); 11 | }); 12 | 13 | export default QueryContainer; 14 | -------------------------------------------------------------------------------- /app/context/QueryContext.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState} from 'react'; 2 | 3 | export const QueryContext = React.createContext(null); 4 | 5 | /** 6 | * MANAGES THE FOLLOWING DATA AND ACTIONS: 7 | * @property {Array} selectedMetrics 8 | * @method setSelectedMetrics 9 | */ 10 | 11 | interface Props { 12 | children: any 13 | } 14 | 15 | const QueryContextProvider: React.FC = React.memo(({ children }) => { 16 | const [selectedMetrics, setSelectedMetrics] = useState([]); 17 | 18 | return ( 19 | 20 | {children} 21 | 22 | ); 23 | }); 24 | 25 | export default QueryContextProvider; 26 | -------------------------------------------------------------------------------- /app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | CHRONOS 9 | 10 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /app/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | // import { adaptV4Theme } from '@mui/styles'; 3 | import { createTheme } from '@mui/material/styles' 4 | import ReactDOM from 'react-dom'; 5 | 6 | // REACT 18 Syntax below 7 | // import { createRoot } from 'react-dom/client'; 8 | 9 | import './index.scss'; 10 | import { ThemeProvider, Theme, StyledEngineProvider } from '@mui/material'; 11 | import App from './App'; 12 | import WindowBar from './components/WindowBar/WindowBar'; 13 | 14 | 15 | const theme = createTheme({ 16 | // v4 theme 17 | typography: { 18 | fontFamily: ['Roboto', 'sans-serif'].join(','), 19 | }, 20 | }); 21 | 22 | // React 17 Syntax below 23 | ReactDOM.render( 24 | 25 | 26 | 27 | 28 | 29 | , 30 | document.getElementById('app') 31 | ); 32 | -------------------------------------------------------------------------------- /app/modals/AwsModal/AwsDescription.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const AwsDescription = (props) => { 4 | const { name, handleChange, description } = props; 5 | return ( 6 | <> 7 |
8 | 11 | handleChange(e)} 17 | placeholder="Add a name for your new service" 18 | required 19 | /> 20 |
21 |
22 | 23 |