diff --git a/service/app/public/og.png b/service/app/public/og.png new file mode 100644 index 00000000..53514e65 Binary files /dev/null and b/service/app/public/og.png differ diff --git a/service/app/public/og/og-16f89e38-b86f-4cb3-b53d-8f0a6a78b8a9.png b/service/app/public/og/og-16f89e38-b86f-4cb3-b53d-8f0a6a78b8a9.png new file mode 100644 index 00000000..dbec386a Binary files /dev/null and b/service/app/public/og/og-16f89e38-b86f-4cb3-b53d-8f0a6a78b8a9.png differ diff --git a/service/app/public/og/og-25cfc8db-4eb1-4f21-8e5b-f4b77189ec2f.png b/service/app/public/og/og-25cfc8db-4eb1-4f21-8e5b-f4b77189ec2f.png new file mode 100644 index 00000000..d7fcd8b7 Binary files /dev/null and b/service/app/public/og/og-25cfc8db-4eb1-4f21-8e5b-f4b77189ec2f.png differ diff --git a/service/app/public/og/og-7f9b3c8e-98b2-4cb1-909e-10a7ed3dc7a2.png b/service/app/public/og/og-7f9b3c8e-98b2-4cb1-909e-10a7ed3dc7a2.png new file mode 100644 index 00000000..d21d0dee Binary files /dev/null and b/service/app/public/og/og-7f9b3c8e-98b2-4cb1-909e-10a7ed3dc7a2.png differ diff --git a/service/app/public/og/og-d108c47d-df0d-4421-a5f0-513fa3d40b47.png b/service/app/public/og/og-d108c47d-df0d-4421-a5f0-513fa3d40b47.png new file mode 100644 index 00000000..1980857f Binary files /dev/null and b/service/app/public/og/og-d108c47d-df0d-4421-a5f0-513fa3d40b47.png differ diff --git a/service/app/src/app/game/[gameId]/setup/page.tsx b/service/app/src/app/game/[gameId]/setup/page.tsx index 04f2ef46..eabc1fba 100644 --- a/service/app/src/app/game/[gameId]/setup/page.tsx +++ b/service/app/src/app/game/[gameId]/setup/page.tsx @@ -1,7 +1,38 @@ +import { getGameDetail } from "@/entities/game" + import { GameNavigation } from "./components/gameNavigation" import { TeamInputForm } from "./components/teamInputForm" import { TeamSidebar } from "./components/teamSidebar" +export async function generateMetadata({ + params, +}: { + params: { gameId: string } +}) { + const { data: game } = await getGameDetail(params.gameId) + return { + title: `${game.gameTitle} - Re:creation`, + robots: { + index: false, + follow: false, + }, + openGraph: { + title: game.gameTitle, + type: "website", + locale: "ko_KR", + images: [ + { + url: `/og/og-${params.gameId}.png`, + width: 1200, + height: 630, + alt: game.gameTitle, + type: "image/png", + }, + ], + }, + } +} + export default function GameSetupPage() { return ( <> diff --git a/service/app/src/app/layout.tsx b/service/app/src/app/layout.tsx index ffbcf8cb..a1d17a9b 100644 --- a/service/app/src/app/layout.tsx +++ b/service/app/src/app/layout.tsx @@ -9,8 +9,8 @@ import localFont from "next/font/local" import { Providers } from "./providers" export const metadata: Metadata = { - title: "RE:creation", - description: "모두가 가볍게 즐길 수 있는 라이트 레크리에이션", + authors: [{ name: "JECT" }], + metadataBase: new URL("https://re-creation.vercel.app"), icons: { icon: [{ url: "/favicon.svg", type: "image/svg+xml" }], }, diff --git a/service/app/src/app/page.tsx b/service/app/src/app/page.tsx index 5632a0db..64222488 100644 --- a/service/app/src/app/page.tsx +++ b/service/app/src/app/page.tsx @@ -1,7 +1,45 @@ +import { Metadata } from "next" + import { GameSection } from "@/app/_components/GameSection/GameSection" import { HeroSection } from "@/app/_components/HeroSection" import { HomeNavigation } from "@/widgets/HomeNavigation" +export const metadata: Metadata = { + title: "Re:creation - 모두 함께 즐기는 레크레이션", + description: + "MT, 워크샵, 소모임을 위한 인물 퀴즈, 명대사 퀴즈, 줄줄이 말해요 등 다양한 레크레이션 게임을 만들고 즐길 수 있습니다.", + keywords: [ + "레크레이션", + "아이스 브레이킹", + "레크레이션 게임", + "실내 게임 25가지 레크레이션", + "신서유기 게임", + "이름 맞추기", + "퀴즈 사이트", + "엠티 레크레이션", + "기업 레크레이션", + "레크레이션 피피티", + ], + openGraph: { + title: "Re:creation - 모두 함께 즐기는 레크레이션", + description: + "MT, 워크숍, 소모임에서 바로 사용할 수 있는 라이트 레크리에이션. 인물퀴즈, 명대사퀴즈 등 다양한 게임으로 분위기를 띄워보세요.", + url: "https://re-creation.vercel.app", + siteName: "Re:creation", + type: "website", + locale: "ko_KR", + images: [ + { + url: "/og.png", + width: 1200, + height: 630, + alt: "Re:creation - 모두 함께 즐기는 레크레이션", + type: "image/png", + }, + ], + }, +} + export default function Home() { return (
diff --git a/service/app/src/app/robots.ts b/service/app/src/app/robots.ts new file mode 100644 index 00000000..ae4d12a7 --- /dev/null +++ b/service/app/src/app/robots.ts @@ -0,0 +1,13 @@ +import { MetadataRoute } from "next" + +export default function robots(): MetadataRoute.Robots { + return { + rules: [ + { + userAgent: "*", + allow: "/", + disallow: ["/admin"], + }, + ], + } +} diff --git a/service/app/src/app/sitemap.ts b/service/app/src/app/sitemap.ts new file mode 100644 index 00000000..5d43a597 --- /dev/null +++ b/service/app/src/app/sitemap.ts @@ -0,0 +1,10 @@ +import type { MetadataRoute } from "next" + +export default function sitemap(): MetadataRoute.Sitemap { + return [ + { + url: "https://re-creation.vercel.app", + lastModified: new Date(), + }, + ] +}