├── microservices ├── apps │ ├── usi-platform-service │ │ ├── README.adoc │ │ ├── src │ │ │ ├── usi-platform.service.ts │ │ │ ├── auth │ │ │ │ ├── auth.module.ts │ │ │ │ └── auth.controller.ts │ │ │ ├── query-config │ │ │ │ └── query-config.module.ts │ │ │ ├── main.ts │ │ │ ├── usi-platform.module.ts │ │ │ └── usi-platform.controller.ts │ │ └── tsconfig.app.json │ ├── infopin-service │ │ ├── images │ │ │ └── .gitignore │ │ ├── src │ │ │ ├── defect │ │ │ │ ├── test │ │ │ │ │ ├── fulda-high-water.jpg │ │ │ │ │ └── test-data.ts │ │ │ │ └── defect.module.ts │ │ │ ├── report │ │ │ │ ├── test │ │ │ │ │ └── fulda-high-water.jpg │ │ │ │ └── report.module.ts │ │ │ ├── climate-project │ │ │ │ ├── test │ │ │ │ │ └── fulda-high-water.jpg │ │ │ │ └── climate-project.module.ts │ │ │ ├── main.ts │ │ │ ├── multer-config.ts │ │ │ ├── infopin-service.module.ts │ │ │ └── utility │ │ │ │ └── RoleUtil.ts │ │ ├── tsconfig.app.json │ │ └── README.adoc │ ├── report-service │ │ ├── src │ │ │ ├── dto │ │ │ │ └── mail.dto.ts │ │ │ ├── mail │ │ │ │ ├── mail.module.ts │ │ │ │ └── mail.service.ts │ │ │ ├── query │ │ │ │ ├── query.module.ts │ │ │ │ └── query.service.ts │ │ │ ├── config │ │ │ │ └── config.module.ts │ │ │ ├── main.ts │ │ │ ├── scheduler.service.ts │ │ │ └── report.module.ts │ │ └── tsconfig.app.json │ ├── ngsi-service │ │ ├── src │ │ │ ├── auth │ │ │ │ ├── token-data.ts │ │ │ │ └── test │ │ │ │ │ └── jest-e2e.json │ │ │ ├── query │ │ │ │ └── query.module.ts │ │ │ ├── data │ │ │ │ ├── data.module.ts │ │ │ │ └── test │ │ │ │ │ └── jest-e2e.json │ │ │ ├── scheduler.service.ts │ │ │ ├── report │ │ │ │ ├── report.module.ts │ │ │ │ └── test │ │ │ │ │ └── test-data.ts │ │ │ ├── main.ts │ │ │ ├── ngsi.controller.ts │ │ │ ├── fiware-wizard │ │ │ │ └── fiware-wizard.module.ts │ │ │ └── ngsi.module.ts │ │ └── tsconfig.app.json │ ├── mail-service │ │ ├── src │ │ │ ├── dto │ │ │ │ └── mail.dto.ts │ │ │ ├── mail.module.ts │ │ │ └── main.ts │ │ └── tsconfig.app.json │ ├── api-service │ │ ├── src │ │ │ ├── query │ │ │ │ └── query.module.ts │ │ │ ├── auth │ │ │ │ └── auth.module.ts │ │ │ ├── data │ │ │ │ └── data.module.ts │ │ │ ├── organisation-schedule.service.ts │ │ │ ├── report │ │ │ │ └── report.module.ts │ │ │ ├── schedule.service.ts │ │ │ └── main.ts │ │ └── tsconfig.app.json │ ├── orchideo-connect-service │ │ ├── src │ │ │ ├── query │ │ │ │ └── query.module.ts │ │ │ ├── auth │ │ │ │ └── auth.module.ts │ │ │ ├── data │ │ │ │ └── data.module.ts │ │ │ ├── organisation-schedule.service.ts │ │ │ ├── report │ │ │ │ └── report.module.ts │ │ │ ├── schedule.service.ts │ │ │ ├── system-user │ │ │ │ └── test │ │ │ │ │ └── test-data.ts │ │ │ └── main.ts │ │ └── tsconfig.app.json │ ├── dashboard-service │ │ ├── src │ │ │ ├── data-model │ │ │ │ └── fiware-models │ │ │ │ │ ├── fiware-models.enum.ts │ │ │ │ │ ├── interesting-place.model.ts │ │ │ │ │ ├── parking-info.model.ts │ │ │ │ │ └── swimming-info.model.ts │ │ │ ├── logging │ │ │ │ ├── logger.module.ts │ │ │ │ ├── logger.controller.ts │ │ │ │ └── test │ │ │ │ │ └── test-util.ts │ │ │ ├── logo │ │ │ │ ├── logo.module.ts │ │ │ │ └── test │ │ │ │ │ └── test-data.ts │ │ │ ├── query │ │ │ │ └── query.module.ts │ │ │ ├── widget-to-panel │ │ │ │ └── widget-to-panel.module.ts │ │ │ ├── tab │ │ │ │ └── tab.module.ts │ │ │ ├── dashboard │ │ │ │ └── populate │ │ │ │ │ └── fiware.types.ts │ │ │ ├── data-source │ │ │ │ └── data-source.module.ts │ │ │ ├── query-config │ │ │ │ └── query-config.module.ts │ │ │ ├── main.ts │ │ │ ├── corporate-info │ │ │ │ └── corporate-info.module.ts │ │ │ ├── validators │ │ │ │ └── widget-validator.pipe.ts │ │ │ ├── panel │ │ │ │ ├── panel.module.ts │ │ │ │ └── test │ │ │ │ │ └── test-data.ts │ │ │ ├── general-settings │ │ │ │ ├── test │ │ │ │ │ └── test-data.ts │ │ │ │ └── general-settings.module.ts │ │ │ ├── tenant │ │ │ │ └── tenant.module.ts │ │ │ ├── widget-to-tenant │ │ │ │ └── widget-to-tenant.module.ts │ │ │ ├── dashboard-to-tenant │ │ │ │ └── dashboard-to-tenant.module.ts │ │ │ └── auth-data │ │ │ │ └── auth-data.module.ts │ │ ├── tsconfig.app.json │ │ └── README.adoc │ ├── data-translation-service │ │ ├── tsconfig.app.json │ │ └── src │ │ │ ├── populate │ │ │ └── fiware.types.ts │ │ │ ├── scheduler.service.ts │ │ │ ├── main.ts │ │ │ └── data-translation.module.ts │ ├── static-data-service │ │ ├── src │ │ │ ├── transformation │ │ │ │ └── transformation.module.ts │ │ │ ├── data │ │ │ │ └── data.module.ts │ │ │ ├── schedule.service.ts │ │ │ ├── query │ │ │ │ └── query.module.ts │ │ │ ├── main.ts │ │ │ └── static-data.module.ts │ │ └── tsconfig.app.json │ └── test │ │ ├── jest-e2e.json │ │ ├── jwt-token-util.ts │ │ └── index.e2e-spec.ts ├── .dockerignore ├── libs │ ├── auth-helper │ │ ├── src │ │ │ ├── index.ts │ │ │ └── PublicDecorator.ts │ │ └── tsconfig.lib.json │ └── postgres-db │ │ ├── src │ │ ├── index.ts │ │ ├── schemas │ │ │ ├── index.ts │ │ │ ├── data-model.schema.ts │ │ │ ├── tenant.schema.ts │ │ │ ├── tenant.system-user.schema.ts │ │ │ ├── data-source.schema.ts │ │ │ ├── logo.schema.ts │ │ │ ├── general-settings.schema.ts │ │ │ ├── dashboard.schema.ts │ │ │ ├── defect.schema.ts │ │ │ ├── sensor-report.schema.ts │ │ │ ├── widget-to-tenant.schema.ts │ │ │ ├── dashboard.grouping-element.schema.ts │ │ │ ├── query.schema.ts │ │ │ ├── dashboard.widget-to-panel.schema.ts │ │ │ └── dashboard-to-tenant.schema.ts │ │ └── postgres-db.module.ts │ │ └── tsconfig.lib.json ├── tsconfig.build.json ├── .gitignore ├── tsconfig.json ├── Dockerfile.api-service ├── Dockerfile.mail-service ├── Dockerfile.ngsi-service ├── Dockerfile.report-service ├── Dockerfile.infopin-service ├── Dockerfile.dashboard-service ├── Dockerfile.data-translation-service ├── Dockerfile.static-data-service ├── Dockerfile.usi-platform-service └── Dockerfile.orchideo-connect-service ├── k8s └── helm │ ├── charts │ ├── frontend │ │ └── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ ├── api-service │ │ └── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ ├── mail-service │ │ └── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ ├── ngsi-service │ │ └── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ ├── report-service │ │ └── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ ├── dashboard-service │ │ └── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ ├── infopin-service │ │ └── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ ├── static-data-service │ │ └── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ ├── data-translation-service │ │ ├── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ │ ├── Chart.yaml │ │ └── values.yaml │ ├── orchideo-connect-service │ │ └── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ ├── usi-platform-service │ │ └── templates │ │ │ ├── ingress.yaml │ │ │ ├── service.yaml │ │ │ └── deployment.yaml │ ├── migrations │ │ ├── values.yaml │ │ ├── templates │ │ │ └── job.yaml │ │ └── Chart.yaml │ └── common │ │ ├── templates │ │ └── _service.yaml │ │ └── Chart.yaml │ ├── templates │ ├── secrets │ │ ├── postgresql-secrets.yaml │ │ ├── frontend-secrets.yaml │ │ ├── usi-platform-service-secrets.yaml │ │ ├── keycloak-secrets.yaml │ │ └── postgresql-connection-secrets.yaml │ └── configmaps │ │ ├── keycloak-config.yaml │ │ ├── trusted-ca-configmap.yaml │ │ ├── postgresql-init-configmap.yaml │ │ ├── static-data-configmap.yaml │ │ ├── report-service-configmap.yaml │ │ ├── infopin-service-configmap.yaml │ │ ├── ngsi-service-configmap.yaml │ │ ├── mail-service-configmap.yaml │ │ ├── usi-platform-service-configmap.yaml │ │ ├── orchideo-connect-service-configmap.yaml │ │ ├── api-service-configmap.yaml │ │ ├── postgresql-connection-configmap.yaml │ │ └── dashboard-service-configmap.yaml │ ├── ca-issuer-clusterissuer.yaml │ ├── postgresql │ └── initDb │ │ └── init.sql │ ├── .helmignore │ └── values-infrastructure.yaml ├── frontend ├── app │ ├── favicon.ico │ ├── scrollbar.css │ ├── (dashboard) │ │ ├── not-found │ │ │ └── page.tsx │ │ ├── [tenant] │ │ │ └── admin │ │ │ │ └── page.tsx │ │ ├── page.tsx │ │ └── layout.tsx │ ├── custom-hooks │ │ ├── isMobileView.ts │ │ └── useAutoScaleFont.ts │ ├── globals.css │ └── MarkerCluster.css ├── postcss.config.js ├── .dockerignore ├── public │ ├── login_background.jpeg │ └── vercel.svg ├── types │ ├── index.ts │ ├── wizard.ts │ ├── table.ts │ ├── pagination.ts │ ├── snackbar.ts │ ├── queryData.ts │ └── groupingElement.ts ├── ui │ ├── HorizontalDivider.tsx │ ├── VerticalDivider.tsx │ ├── IFrameComponent.tsx │ ├── WizardLabel.tsx │ ├── FullSizedLink.tsx │ ├── Table │ │ └── TableWrapper.tsx │ ├── PageHeadline.tsx │ ├── Tooltip.tsx │ ├── WizardSelectBox.tsx │ ├── WizardFileUpload.tsx │ ├── NoDataWarning.tsx │ ├── Buttons │ │ ├── GenericButton.tsx │ │ ├── CollapseButton.tsx │ │ ├── DeleteButton.tsx │ │ └── RedirectPageButton.tsx │ ├── BlockContainer.tsx │ ├── HeaderLogo.tsx │ ├── MultipleColorPickers.tsx │ ├── VisibilityDisplay.tsx │ └── Icons │ │ └── DashboardIcon.tsx ├── cypress.config.ts ├── cypress │ └── support │ │ ├── index.d.ts │ │ └── e2e.ts ├── utils │ ├── fontUtil.ts │ ├── tabTypeHelper.ts │ ├── gridHelper.ts │ ├── dragDropHelper.ts │ ├── tenantHelper.ts │ └── apiHelper.ts ├── .gitignore ├── next.config.js ├── providers │ ├── TanStackQueryProvider.tsx │ ├── LoginProvider.tsx │ ├── CorporateIdentityProvider.tsx │ └── AuthWrapper.tsx ├── api │ ├── dataSource-service.ts │ ├── wizard-service-usi-platform.ts │ └── mail-service.ts ├── tsconfig.json ├── assets │ ├── icons │ │ ├── ForestFire.tsx │ │ ├── Heat.tsx │ │ ├── HumidityNormal.tsx │ │ ├── Waves.tsx │ │ ├── Snowflake.tsx │ │ └── index.tsx │ └── smartCityLogo.svg ├── components │ └── Map │ │ └── SetViewToBounds.tsx ├── env.example └── Dockerfile.frontend ├── database ├── migrations │ └── generated │ │ ├── 0026_ancient_chat_0.23.0.sql │ │ ├── 0004_lively_tenebrous_0.8.8_to_0.8.10.sql │ │ ├── 0020_cute_peter_parker_0.19.11.sql │ │ ├── 0021_noisy_frightful_four_0.20.0.sql │ │ ├── 0025_fair_crusher_hogan_0.22.3.sql │ │ ├── 0028_bouncy_frightful_four_0.24.0.sql │ │ ├── 0023_long_energizer_0.22.0.sql │ │ ├── 0022_abnormal_dormammu_0.21.1.sql │ │ ├── 0017_thankful_yellowjacket_0.17.5.sql │ │ ├── 0014_thick_warstar_0.15.1.sql │ │ ├── 0024_needy_justice_0.22.1.sql │ │ ├── 0015_sudden_nightmare_0.16.0.sql │ │ ├── 0010_slippery_santa_claus_0.11.2.sql │ │ ├── 0003_light_saracen_0.8.3_to_0.8.8.sql │ │ ├── 0027_fine_terror_0.23.1.sql │ │ ├── 0008_wonderful_omega_red_0.10.1.sql │ │ ├── 0019_needy_energizer_0.18.3.sql │ │ ├── 0005_moaning_betty_ross_0.9.0.sql │ │ ├── 0002_powerful_tarantula_0.8.0_to_0.8.3.sql │ │ ├── 0012_peaceful_galactus_0.12.0b.sql │ │ ├── 0016_nasty_the_renegades_0.17.0.sql │ │ ├── 0006_short_peter_quill_0.9.1.sql │ │ ├── 0018_past_deadpool_0.18.0.sql │ │ └── 0011_bitter_loa_0.12.0a.sql ├── datamodels │ ├── singe_entity_single_attributes.json │ ├── singe_entity_multi_attributes.json │ ├── LD_1e1a.json │ └── map_format.json └── drizzle.config.ts ├── docs ├── technical-documentation.md └── images │ └── SC_Dashboard_Extended.png ├── .prettierrc ├── .editorconfig ├── .husky └── pre-commit ├── tsconfig.json ├── docker-compose.local.yml ├── Dockerfile.migrations ├── .eslintrc.js ├── .eslintrc.json └── .gitignore /microservices/apps/usi-platform-service/README.adoc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /microservices/apps/infopin-service/images/.gitignore: -------------------------------------------------------------------------------- 1 | *.jpeg 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/frontend/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/frontend/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/api-service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/api-service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/frontend/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/mail-service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/mail-service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/ngsi-service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/ngsi-service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/report-service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/report-service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/api-service/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/dashboard-service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/dashboard-service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/infopin-service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/infopin-service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/mail-service/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/ngsi-service/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/static-data-service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/static-data-service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/dashboard-service/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/data-translation-service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/data-translation-service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/infopin-service/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/orchideo-connect-service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/orchideo-connect-service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/report-service/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/usi-platform-service/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.ingress" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/usi-platform-service/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.service" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/static-data-service/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/usi-platform-service/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/data-translation-service/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /k8s/helm/charts/orchideo-connect-service/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- template "common.deployment" . -}} 2 | -------------------------------------------------------------------------------- /frontend/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanashi1526/smartcity-dashboard/HEAD/frontend/app/favicon.ico -------------------------------------------------------------------------------- /database/migrations/generated/0026_ancient_chat_0.23.0.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "auth_data_type" ADD VALUE IF NOT EXISTS 'usi'; 2 | -------------------------------------------------------------------------------- /microservices/.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | .dockerignore 3 | node_modules 4 | npm-debug.log 5 | .git 6 | .gitignore 7 | dist 8 | -------------------------------------------------------------------------------- /docs/technical-documentation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanashi1526/smartcity-dashboard/HEAD/docs/technical-documentation.md -------------------------------------------------------------------------------- /frontend/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /microservices/libs/auth-helper/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth-helper.middleware'; 2 | export * from './auth-helper.utility'; 3 | -------------------------------------------------------------------------------- /microservices/libs/postgres-db/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './postgres-db.module'; 2 | export * from './providers/db.provider'; 3 | -------------------------------------------------------------------------------- /database/migrations/generated/0004_lively_tenebrous_0.8.8_to_0.8.10.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "panel" ADD COLUMN IF NOT EXISTS "info_msg" text; 2 | -------------------------------------------------------------------------------- /database/migrations/generated/0020_cute_peter_parker_0.19.11.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "general_settings" ADD COLUMN IF NOT EXISTS "disclaimer" text; 2 | -------------------------------------------------------------------------------- /database/migrations/generated/0021_noisy_frightful_four_0.20.0.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "tab" ADD COLUMN IF NOT EXISTS "is_layout_vertical" boolean; 2 | -------------------------------------------------------------------------------- /database/migrations/generated/0025_fair_crusher_hogan_0.22.3.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "tab" ADD COLUMN IF NOT EXISTS "chart_pie_radius" smallint; 2 | -------------------------------------------------------------------------------- /database/migrations/generated/0028_bouncy_frightful_four_0.24.0.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "dashboard" ADD COLUMN IF NOT EXISTS "allow_share" boolean; 2 | -------------------------------------------------------------------------------- /docs/images/SC_Dashboard_Extended.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanashi1526/smartcity-dashboard/HEAD/docs/images/SC_Dashboard_Extended.png -------------------------------------------------------------------------------- /frontend/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | .git 4 | .gitignore 5 | .dockerignore 6 | cypress/ 7 | .next/ 8 | .next/cache/ 9 | -------------------------------------------------------------------------------- /frontend/public/login_background.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanashi1526/smartcity-dashboard/HEAD/frontend/public/login_background.jpeg -------------------------------------------------------------------------------- /database/migrations/generated/0023_long_energizer_0.22.0.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "tab" ADD COLUMN IF NOT EXISTS "chart_allow_image_download" boolean; 2 | -------------------------------------------------------------------------------- /microservices/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /database/migrations/generated/0022_abnormal_dormammu_0.21.1.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "corporate_info" ADD COLUMN IF NOT EXISTS "menu_hover_font_color" text; 2 | -------------------------------------------------------------------------------- /microservices/apps/report-service/src/dto/mail.dto.ts: -------------------------------------------------------------------------------- 1 | export class SendMailDto { 2 | to: string; 3 | subject: string; 4 | body: string; 5 | } 6 | -------------------------------------------------------------------------------- /microservices/apps/ngsi-service/src/auth/token-data.ts: -------------------------------------------------------------------------------- 1 | export class TokenData { 2 | refreshToken: string; 3 | accessToken: string; 4 | expiresIn: Date; 5 | } 6 | -------------------------------------------------------------------------------- /database/migrations/generated/0017_thankful_yellowjacket_0.17.5.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "general_settings" ADD COLUMN IF NOT EXISTS "allow_theme_switching" boolean DEFAULT false; 2 | -------------------------------------------------------------------------------- /k8s/helm/templates/secrets/postgresql-secrets.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: postgresql-secrets 5 | data: 6 | postgres-password: cG9zdGdyZXM= 7 | -------------------------------------------------------------------------------- /frontend/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dashboardModels'; 2 | export * from './enums'; 3 | export * from './table'; 4 | export * from './groupingElement'; 5 | export * from './queryData'; 6 | -------------------------------------------------------------------------------- /frontend/types/wizard.ts: -------------------------------------------------------------------------------- 1 | export type DataConfigRequestType = { 2 | collection: string; 3 | source?: string; 4 | attribute?: string; 5 | apiId?: string; 6 | accessToken?: string; 7 | }; 8 | -------------------------------------------------------------------------------- /k8s/helm/templates/configmaps/keycloak-config.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: keycloak-config 5 | data: 6 | {{ (.Files.Glob "keycloak-config/*").AsConfig | indent 2 }} 7 | -------------------------------------------------------------------------------- /microservices/apps/infopin-service/src/defect/test/fulda-high-water.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanashi1526/smartcity-dashboard/HEAD/microservices/apps/infopin-service/src/defect/test/fulda-high-water.jpg -------------------------------------------------------------------------------- /microservices/apps/infopin-service/src/report/test/fulda-high-water.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanashi1526/smartcity-dashboard/HEAD/microservices/apps/infopin-service/src/report/test/fulda-high-water.jpg -------------------------------------------------------------------------------- /k8s/helm/charts/migrations/values.yaml: -------------------------------------------------------------------------------- 1 | image: 2 | repository: smartcity/migrations 3 | tag: latest 4 | pullPolicy: IfNotPresent 5 | restartPolicy: OnFailure 6 | data: 7 | POSTGRES_REJECT_UNAUTHORIZED: 'true' -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all", 4 | "endOfLine": "lf", 5 | "tabWidth": 2, 6 | "parser": "typescript", 7 | "useTabs": false, 8 | "bracketSameLine": false 9 | } 10 | -------------------------------------------------------------------------------- /database/migrations/generated/0014_thick_warstar_0.15.1.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "tab" ADD COLUMN IF NOT EXISTS "map_wms_url" text;--> statement-breakpoint 2 | ALTER TABLE "tab" ADD COLUMN IF NOT EXISTS "map_wms_layer" text; 3 | -------------------------------------------------------------------------------- /frontend/ui/HorizontalDivider.tsx: -------------------------------------------------------------------------------- 1 | import { ReactElement } from 'react'; 2 | 3 | export default function HorizontalDivider(): ReactElement { 4 | return
; 5 | } 6 | -------------------------------------------------------------------------------- /microservices/apps/infopin-service/src/climate-project/test/fulda-high-water.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nanashi1526/smartcity-dashboard/HEAD/microservices/apps/infopin-service/src/climate-project/test/fulda-high-water.jpg -------------------------------------------------------------------------------- /microservices/libs/postgres-db/src/schemas/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dashboard.schema'; 2 | export * from './dashboard.panel.schema'; 3 | export * from './dashboard.tab.schema'; 4 | export * from './dashboard.widget.schema'; 5 | -------------------------------------------------------------------------------- /frontend/ui/VerticalDivider.tsx: -------------------------------------------------------------------------------- 1 | import { ReactElement } from 'react'; 2 | 3 | export default function VerticalDivider(): ReactElement { 4 | return
; 5 | } 6 | -------------------------------------------------------------------------------- /microservices/apps/usi-platform-service/src/usi-platform.service.ts: -------------------------------------------------------------------------------- 1 | /* eslint @typescript-eslint/no-explicit-any: 0 */ 2 | import { Injectable } from '@nestjs/common'; 3 | 4 | @Injectable() 5 | export class UsiPlaformService {} 6 | -------------------------------------------------------------------------------- /database/migrations/generated/0024_needy_justice_0.22.1.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "tab" ADD COLUMN IF NOT EXISTS "map_combined_wms_url" text;--> statement-breakpoint 2 | ALTER TABLE "tab" ADD COLUMN IF NOT EXISTS "map_combined_wms_layer" text; 3 | -------------------------------------------------------------------------------- /k8s/helm/templates/configmaps/trusted-ca-configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: trusted-ca-configmap 5 | data: 6 | TRUSTED_CA: |- 7 | {{ (.Files.Get .Values.trustedCAFile) | nindent 4 }} 8 | -------------------------------------------------------------------------------- /microservices/apps/report-service/src/mail/mail.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { MailService } from './mail.service'; 3 | 4 | @Module({ 5 | providers: [MailService], 6 | }) 7 | export class MailModule {} 8 | -------------------------------------------------------------------------------- /microservices/apps/report-service/src/query/query.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { QueryService } from './query.service'; 3 | 4 | @Module({ 5 | providers: [QueryService], 6 | }) 7 | export class QueryModule {} 8 | -------------------------------------------------------------------------------- /database/migrations/generated/0015_sudden_nightmare_0.16.0.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "corporate_info" ADD COLUMN IF NOT EXISTS "menu_corner_color" text;--> statement-breakpoint 2 | ALTER TABLE "corporate_info" ADD COLUMN IF NOT EXISTS "menu_corner_font_color" text; 3 | -------------------------------------------------------------------------------- /frontend/cypress.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'cypress'; 2 | 3 | export default defineConfig({ 4 | e2e: { 5 | baseUrl: 'http://localhost:3000/admin', 6 | }, 7 | env: { 8 | apiUrl: 'http://localhost:8081', 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /microservices/apps/mail-service/src/dto/mail.dto.ts: -------------------------------------------------------------------------------- 1 | export class SendMailDto { 2 | to: string; 3 | subject: string; 4 | body: string; 5 | } 6 | 7 | export class DefectReportDto { 8 | reporterEmail: string; 9 | defectDetails: string; 10 | } 11 | -------------------------------------------------------------------------------- /frontend/app/scrollbar.css: -------------------------------------------------------------------------------- 1 | .hide-scrollbar::-webkit-scrollbar { 2 | display: none; /* For WebKit browsers */ 3 | } 4 | 5 | .hide-scrollbar { 6 | -ms-overflow-style: none; /* For Internet Explorer and Edge */ 7 | scrollbar-width: none; /* For Firefox */ 8 | } 9 | -------------------------------------------------------------------------------- /frontend/cypress/support/index.d.ts: -------------------------------------------------------------------------------- 1 | declare namespace Cypress { 2 | interface Chainable { 3 | keycloakLogin(username: string, password: string): Cypress.Chainable; 4 | keycloakLogout(): Cypress.Chainable; 5 | clearCache(): Cypress.Chainable; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /microservices/apps/api-service/src/query/query.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { QueryService } from './query.service'; 3 | 4 | @Module({ 5 | providers: [QueryService], 6 | exports: [QueryService], 7 | }) 8 | export class QueryModule {} 9 | -------------------------------------------------------------------------------- /microservices/apps/ngsi-service/src/query/query.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { QueryService } from './query.service'; 3 | 4 | @Module({ 5 | providers: [QueryService], 6 | exports: [QueryService], 7 | }) 8 | export class QueryModule {} 9 | -------------------------------------------------------------------------------- /microservices/apps/orchideo-connect-service/src/query/query.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { QueryService } from './query.service'; 3 | 4 | @Module({ 5 | providers: [QueryService], 6 | exports: [QueryService], 7 | }) 8 | export class QueryModule {} 9 | -------------------------------------------------------------------------------- /microservices/libs/auth-helper/src/PublicDecorator.ts: -------------------------------------------------------------------------------- 1 | import { SetMetadata } from '@nestjs/common'; 2 | 3 | export const IS_PUBLIC_KEY = 'isPublic'; 4 | // eslint-disable-next-line @typescript-eslint/explicit-function-return-type 5 | export const Public = () => SetMetadata(IS_PUBLIC_KEY, true); 6 | -------------------------------------------------------------------------------- /microservices/apps/dashboard-service/src/data-model/fiware-models/fiware-models.enum.ts: -------------------------------------------------------------------------------- 1 | export enum FiwareDataModels { 2 | EV_CHARGING_STATION = 'EVChargingStationExtended', 3 | PARKING = 'OffStreetParking', 4 | POINT_OF_INTEREST = 'PointOfInterestExtended', 5 | SWIMMING = 'OpenAirPool', 6 | } 7 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | charset = utf-8 8 | indent_style = space 9 | indent_size = 2 10 | end_of_line = lf 11 | charset = utf-8 12 | trim_trailing_whitespace = true 13 | insert_final_newline = true -------------------------------------------------------------------------------- /k8s/helm/templates/secrets/frontend-secrets.yaml: -------------------------------------------------------------------------------- 1 | {{- if index .Values.frontend.enabled }} 2 | apiVersion: v1 3 | kind: Secret 4 | metadata: 5 | name: frontend-secrets 6 | type: Opaque 7 | data: 8 | NEXT_PUBLIC_MAPBOX_TOKEN: {{ index .Values.frontend "mapBoxToken" | b64enc | quote }} 9 | {{- end }} 10 | -------------------------------------------------------------------------------- /microservices/apps/api-service/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": false, 5 | "outDir": "../../dist/apps/api-service" 6 | }, 7 | "include": ["src/**/*"], 8 | "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /microservices/apps/mail-service/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": false, 5 | "outDir": "../../dist/apps/mail-service" 6 | }, 7 | "include": ["src/**/*"], 8 | "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /microservices/apps/ngsi-service/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": false, 5 | "outDir": "../../dist/apps/ngsi-service" 6 | }, 7 | "include": ["src/**/*"], 8 | "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /microservices/libs/auth-helper/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": true, 5 | "outDir": "../../dist/libs/auth-helper" 6 | }, 7 | "include": ["src/**/*"], 8 | "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /microservices/libs/postgres-db/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": true, 5 | "outDir": "../../dist/libs/postgres-db" 6 | }, 7 | "include": ["src/**/*"], 8 | "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /microservices/apps/api-service/src/auth/auth.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { AuthService } from './auth.service'; 3 | import { HttpModule } from '@nestjs/axios'; 4 | 5 | @Module({ 6 | imports: [HttpModule], 7 | providers: [AuthService], 8 | }) 9 | export class AuthModule {} 10 | -------------------------------------------------------------------------------- /microservices/apps/dashboard-service/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": false, 5 | "outDir": "../../dist/apps/dashboard-service" 6 | }, 7 | "include": ["src/**/*"], 8 | "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /microservices/apps/orchideo-connect-service/src/auth/auth.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { AuthService } from './auth.service'; 3 | import { HttpModule } from '@nestjs/axios'; 4 | 5 | @Module({ 6 | imports: [HttpModule], 7 | providers: [AuthService], 8 | }) 9 | export class AuthModule {} 10 | -------------------------------------------------------------------------------- /microservices/apps/usi-platform-service/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": false, 5 | "outDir": "../../dist/apps/usi-platform-service" 6 | }, 7 | "include": ["src/**/*"], 8 | "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /database/migrations/generated/0010_slippery_santa_claus_0.11.2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "auth_data" ADD COLUMN IF NOT EXISTS "collections" text[];--> statement-breakpoint 2 | ALTER TABLE "auth_data" ADD COLUMN IF NOT EXISTS "fiware_services" text[];--> statement-breakpoint 3 | ALTER TABLE "data_source" ADD COLUMN IF NOT EXISTS "collections" text[]; 4 | -------------------------------------------------------------------------------- /k8s/helm/charts/data-translation-service/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: data-translation-service 3 | description: Smart City Dashboard Data Translation Service 4 | type: application 5 | version: 0.1.0 6 | appVersion: "1.0.1" 7 | 8 | dependencies: 9 | - name: common 10 | version: 0.1.0 11 | condition: common.enabled 12 | -------------------------------------------------------------------------------- /microservices/apps/data-translation-service/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": false, 5 | "outDir": "../../dist/apps/data-translation-service" 6 | }, 7 | "include": ["src/**/*"], 8 | "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /microservices/apps/orchideo-connect-service/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": false, 5 | "outDir": "../../dist/apps/orchideo-connect-service" 6 | }, 7 | "include": ["src/**/*"], 8 | "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /microservices/apps/static-data-service/src/transformation/transformation.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { TransformationService } from './transformation.service'; 3 | 4 | @Module({ 5 | providers: [TransformationService], 6 | exports: [TransformationService], 7 | }) 8 | export class TransformationModule {} 9 | -------------------------------------------------------------------------------- /microservices/libs/postgres-db/src/postgres-db.module.ts: -------------------------------------------------------------------------------- 1 | import { Global, Module } from '@nestjs/common'; 2 | import { POSTGRES_DB, PostgresDbProvider } from './providers/db.provider'; 3 | 4 | @Global() 5 | @Module({ 6 | providers: [PostgresDbProvider], 7 | exports: [POSTGRES_DB], 8 | }) 9 | export class PostgresDbModule {} 10 | -------------------------------------------------------------------------------- /frontend/types/table.ts: -------------------------------------------------------------------------------- 1 | export type TableConfig = { 2 | columns: Array>; 3 | viewsPerPage: number; 4 | maxPages: number; 5 | }; 6 | 7 | export type TableColumn = { 8 | name: keyof T; 9 | displayName: string; 10 | }; 11 | 12 | export type GenericTableContentItem = { 13 | [P in keyof T]?: T[P]; 14 | }; 15 | -------------------------------------------------------------------------------- /database/migrations/generated/0003_light_saracen_0.8.3_to_0.8.8.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "corporate_info" DROP COLUMN IF EXISTS "menu_active_font_color";--> statement-breakpoint 2 | ALTER TABLE "corporate_info" DROP COLUMN IF EXISTS "use_color_transition_header";--> statement-breakpoint 3 | ALTER TABLE "corporate_info" DROP COLUMN IF EXISTS "use_color_transition_menu"; -------------------------------------------------------------------------------- /microservices/apps/report-service/src/config/config.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { ConfigService } from './config.service'; 3 | import { ConfigController } from './config.controller'; 4 | 5 | @Module({ 6 | providers: [ConfigService], 7 | controllers: [ConfigController], 8 | }) 9 | export class ConfigModule {} 10 | -------------------------------------------------------------------------------- /frontend/ui/IFrameComponent.tsx: -------------------------------------------------------------------------------- 1 | import { ReactElement } from 'react'; 2 | 3 | type IFrameComponentProps = { 4 | src: string; 5 | }; 6 | 7 | export default function IFrameComponent( 8 | props: IFrameComponentProps, 9 | ): ReactElement { 10 | const { src } = props; 11 | return