From 5146532db680d427d569fbd400149fd769fd063b Mon Sep 17 00:00:00 2001 From: ostiwe Date: Thu, 21 Aug 2025 13:06:27 +0300 Subject: [PATCH] feat: Working on main page --- status-web/app.vue | 47 ++- status-web/assets/global.scss | 17 + status-web/components/Badge/index.vue | 45 ++- status-web/nuxt.config.ts | 57 ++-- status-web/types/response/publicServices.ts | 8 + status-web/types/response/services.ts | 11 + status-web/view/public/ServicesView.vue | 336 ++++---------------- 7 files changed, 204 insertions(+), 317 deletions(-) create mode 100644 status-web/types/response/publicServices.ts create mode 100644 status-web/types/response/services.ts diff --git a/status-web/app.vue b/status-web/app.vue index a925194..833658e 100644 --- a/status-web/app.vue +++ b/status-web/app.vue @@ -1,37 +1,36 @@ diff --git a/status-web/nuxt.config.ts b/status-web/nuxt.config.ts index 3578723..18c57c9 100644 --- a/status-web/nuxt.config.ts +++ b/status-web/nuxt.config.ts @@ -1,42 +1,55 @@ // https://nuxt.com/docs/api/configuration/nuxt-config -import Aura from '@primeuix/themes/aura'; +import Aura from '@primeuix/themes/aura' export default defineNuxtConfig({ - compatibilityDate: '2025-07-15', - devtools: {enabled: true}, modules: [ '@nuxt/eslint', '@nuxt/image', '@nuxt/fonts', '@primevue/nuxt-module', ], - eslint: { - checker: true, + ssr: true, + devtools: { enabled: true }, - config: { - stylistic: true - } + runtimeConfig: { + apiHost: '', }, - primevue: { - autoImport: false, - options: { - ripple: false, - inputVariant: 'filled', - theme: { - preset: Aura, - } - } + routeRules: { + '/api/**': { + proxy: { + to: process.env.NUXT_API_HOST + '/api/**', + }, + }, }, + compatibilityDate: '2025-07-15', vite: { css: { preprocessorOptions: { scss: { additionalData: `@forward '~/assets/global'; - @use '~/assets/variables' as *;` - } - } - } - } + @use '~/assets/variables' as *;`, + }, + }, + }, + }, + eslint: { + checker: true, + + config: { + stylistic: true, + }, + }, + + primevue: { + autoImport: true, + options: { + ripple: false, + inputVariant: 'filled', + theme: { + preset: Aura, + }, + }, + }, }) diff --git a/status-web/types/response/publicServices.ts b/status-web/types/response/publicServices.ts new file mode 100644 index 0000000..42541a8 --- /dev/null +++ b/status-web/types/response/publicServices.ts @@ -0,0 +1,8 @@ +import type { ServiceStatus } from '~/types/response/services' + +export interface PublicService { + name: string + description: string | null + statuses: ServiceStatus[] + uptime: number +} diff --git a/status-web/types/response/services.ts b/status-web/types/response/services.ts new file mode 100644 index 0000000..b0711b2 --- /dev/null +++ b/status-web/types/response/services.ts @@ -0,0 +1,11 @@ +export interface ServiceStatus { + id: number + status: 'ok' | 'warn' | 'failed' | 'unchecked' + description: string | null + createdAt: string +} + +// todo +export interface Service { + +} diff --git a/status-web/view/public/ServicesView.vue b/status-web/view/public/ServicesView.vue index 8aebe45..1f22396 100644 --- a/status-web/view/public/ServicesView.vue +++ b/status-web/view/public/ServicesView.vue @@ -12,7 +12,13 @@
- 313 + + {{ service.uptime }} +
@@ -20,14 +26,14 @@
-