From 0ac921ac3e59b792e0575f6178bf912a0328ea08 Mon Sep 17 00:00:00 2001 From: Last2014 Date: Tue, 24 Mar 2026 22:56:57 +0900 Subject: [PATCH] =?UTF-8?q?New:=20backend=E3=81=AEtsconfig.json=E3=81=ABes?= =?UTF-8?q?ModuleInterop=E3=82=92=E8=BF=BD=E5=8A=A0=20/=20Fix:=20=E4=B8=80?= =?UTF-8?q?=E9=83=A8=E3=82=A8=E3=83=B3=E3=83=86=E3=82=A3=E3=83=86=E3=82=A3?= =?UTF-8?q?=E3=81=AE=E6=99=82=E5=88=BB=E8=A8=98=E9=8C=B2=E3=82=92date?= =?UTF-8?q?=E3=81=8B=E3=82=89datetime=E3=81=AB=E4=BF=AE=E6=AD=A3=20/=20Fix?= =?UTF-8?q?:=20setup/initialization=E3=82=A8=E3=83=B3=E3=83=89=E3=83=9D?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=88=E3=81=A7=E3=81=AEwebpush=E3=81=AEim?= =?UTF-8?q?port=E6=96=B9=E6=B3=95=E3=81=AE=E5=95=8F=E9=A1=8C=20/=20Chg:=20?= =?UTF-8?q?font-size=E3=82=9216px=E3=81=8B=E3=82=8914px=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=20/=20Chg:=20html,=20body=E3=81=AEwidth=E3=81=A8heigh?= =?UTF-8?q?t=E3=82=92vw/vh=E3=81=8B=E3=82=89dvw/dvh=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=20/=20Feat:=20=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E3=82=92=E4=BD=9C=E6=88=90=20/=20New(frontend):=20/se?= =?UTF-8?q?tup=E3=82=92=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/src/modules/entities/Token.ts | 4 +- packages/backend/src/modules/entities/User.ts | 8 ++- .../src/routes/setup/initialization.ts | 4 +- packages/backend/tsconfig.json | 1 + packages/frontend/src/Layout.vue | 65 ++++++++++++++++--- packages/frontend/src/global.css | 8 ++- packages/frontend/src/main.ts | 4 ++ packages/frontend/src/routes/setup.vue | 18 +++++ 8 files changed, 96 insertions(+), 16 deletions(-) create mode 100644 packages/frontend/src/routes/setup.vue diff --git a/packages/backend/src/modules/entities/Token.ts b/packages/backend/src/modules/entities/Token.ts index d50c3b8..acb9395 100644 --- a/packages/backend/src/modules/entities/Token.ts +++ b/packages/backend/src/modules/entities/Token.ts @@ -27,13 +27,13 @@ export class TokenEntity { isNative!: boolean; @Property({ - type: "date", + type: "datetime", onCreate: () => new Date(), }) createdAt!: Date; @Property({ - type: "date", + type: "datetime", nullable: true, }) lastUsedAt?: Date; diff --git a/packages/backend/src/modules/entities/User.ts b/packages/backend/src/modules/entities/User.ts index c2b367c..140d285 100644 --- a/packages/backend/src/modules/entities/User.ts +++ b/packages/backend/src/modules/entities/User.ts @@ -51,7 +51,7 @@ export class UserEntity { type: "boolean", default: false, }) - isAdmin: boolean = false; + isOwner: boolean = false; @Property({ type: "boolean", @@ -64,4 +64,10 @@ export class UserEntity { onCreate: () => new Date(), }) createdAt!: Date; + + @Property({ + type: "datetime", + nullable: true, + }) + lastUsedAt?: Date; } \ No newline at end of file diff --git a/packages/backend/src/routes/setup/initialization.ts b/packages/backend/src/routes/setup/initialization.ts index 278c6e6..3caeca1 100644 --- a/packages/backend/src/routes/setup/initialization.ts +++ b/packages/backend/src/routes/setup/initialization.ts @@ -2,7 +2,7 @@ import { DatabaseError, ErrorBase, InputError } from "@/errors"; import Logger from "@/lib/logger"; import { ConfigEntity } from "@/modules/entities/Config"; import type { FastifyInstance } from "fastify"; -import { generateVAPIDKeys } from "web-push"; +import webpush from "web-push"; import z from "zod/v3"; export default function SetupInitialization(fastify: FastifyInstance) { @@ -48,7 +48,7 @@ export default function SetupInitialization(fastify: FastifyInstance) { try { const entries = Object.entries(result.data).filter(([key]) => key !== "force"); - const vapid = generateVAPIDKeys(); + const vapid = webpush.generateVAPIDKeys(); entries.push(["VAPID_PUBLIC", vapid.publicKey]); entries.push(["VAPID_PRIVATE", vapid.privateKey]); diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json index 4afd144..a106303 100755 --- a/packages/backend/tsconfig.json +++ b/packages/backend/tsconfig.json @@ -13,6 +13,7 @@ "exactOptionalPropertyTypes": true, "experimentalDecorators": true, "emitDecoratorMetadata": true, + "esModuleInterop": true, "strict": true, "verbatimModuleSyntax": true, "isolatedModules": true, diff --git a/packages/frontend/src/Layout.vue b/packages/frontend/src/Layout.vue index 4e6e138..409a8f8 100755 --- a/packages/frontend/src/Layout.vue +++ b/packages/frontend/src/Layout.vue @@ -5,14 +5,60 @@ :size="6" /> -
- +
+
+
+ ホーム +
+
+ +
+ +
\ No newline at end of file diff --git a/packages/frontend/src/global.css b/packages/frontend/src/global.css index b8e33b8..2344566 100755 --- a/packages/frontend/src/global.css +++ b/packages/frontend/src/global.css @@ -1,12 +1,14 @@ :root { --bg-color: #ffffff; --text-color: #000000; + --border-color: #e0e0e0; } @media (prefers-color-scheme: dark) { :root { --bg-color: #1b1b1b; --text-color: #ffffff; + --border-color: #2c2c2c; } } @@ -16,9 +18,9 @@ } html, body { - width: 100vw; - height: 100vh; - font-size: 16px; + width: 100dvw; + height: 100dvh; + font-size: 14px; background-color: var(--bg-color); color: var(--text-color); } diff --git a/packages/frontend/src/main.ts b/packages/frontend/src/main.ts index fb0b6e9..d393799 100755 --- a/packages/frontend/src/main.ts +++ b/packages/frontend/src/main.ts @@ -14,6 +14,10 @@ const router = createRouter({ path: "/", component: () => import("@/routes/index.vue"), }, + { + path: "/setup", + component: () => import("@/routes/setup.vue"), + } ], }); router.beforeEach(() => { diff --git a/packages/frontend/src/routes/setup.vue b/packages/frontend/src/routes/setup.vue new file mode 100644 index 0000000..fd432bb --- /dev/null +++ b/packages/frontend/src/routes/setup.vue @@ -0,0 +1,18 @@ + + + \ No newline at end of file