From fa9413a9307de6add27fdc53437ee1cf4817a32e Mon Sep 17 00:00:00 2001 From: JeongwooSeo Date: Fri, 11 Sep 2026 14:55:28 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B2=80=EC=83=89=20=EB=85=B8=EC=B6=9C?= =?UTF-8?q?=20=EB=A9=94=ED=83=80=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=A0=95?= =?UTF-8?q?=EB=B9=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/AdminLayoutClient.tsx | 22 ++++++++++ app/admin/layout.tsx | 24 +++++----- app/api/portfolio/data.ts | 2 +- app/atelier/layout.tsx | 10 +++-- app/entities/common/NavBar.tsx | 3 +- app/layout.tsx | 68 ++++++++--------------------- app/lib/rss.ts | 31 ++++++------- app/lib/site.ts | 14 ++++++ app/not-found.tsx | 7 +++ app/page.tsx | 62 +++++++++++++++++++++++--- app/portfolio/[slug]/page.tsx | 14 +++--- app/portfolio/layout.tsx | 22 ++++++---- app/posts/[slug]/page.tsx | 38 ++++++++++------ app/robots.ts | 6 +-- app/series/[slug]/layout.tsx | 31 ++++++++----- app/series/[slug]/page.tsx | 8 +++- app/series/layout.tsx | 17 +++++--- app/sitemap.ts | 12 ++--- app/subscribe/error/page.tsx | 2 + app/subscribe/unsubscribed/page.tsx | 2 + app/subscribe/verified/page.tsx | 2 + app/tags/layout.tsx | 17 +++++--- 22 files changed, 263 insertions(+), 151 deletions(-) create mode 100644 app/admin/AdminLayoutClient.tsx create mode 100644 app/lib/site.ts diff --git a/app/admin/AdminLayoutClient.tsx b/app/admin/AdminLayoutClient.tsx new file mode 100644 index 00000000..ddb161d0 --- /dev/null +++ b/app/admin/AdminLayoutClient.tsx @@ -0,0 +1,22 @@ +'use client'; + +import { SessionProvider } from 'next-auth/react'; +import { Suspense } from 'react'; +import ProtectedRoute from '@/app/entities/common/Layout/ProtectedRoute'; +import SVGLoadingSpinner from '@/app/entities/common/Loading/SVGLoadingSpinner'; + +interface AdminLayoutClientProps { + children: React.ReactNode; +} + +const AdminLayoutClient = ({ children }: AdminLayoutClientProps) => { + return ( + + + }>{children} + + + ); +}; + +export default AdminLayoutClient; diff --git a/app/admin/layout.tsx b/app/admin/layout.tsx index d3236e2f..8fea74cb 100644 --- a/app/admin/layout.tsx +++ b/app/admin/layout.tsx @@ -1,21 +1,21 @@ -'use client'; -import { SessionProvider } from 'next-auth/react'; -import { Suspense } from 'react'; -import ProtectedRoute from '@/app/entities/common/Layout/ProtectedRoute'; -import SVGLoadingSpinner from '@/app/entities/common/Loading/SVGLoadingSpinner'; +import type { Metadata } from 'next'; +import AdminLayoutClient from './AdminLayoutClient'; + +export const metadata: Metadata = { + title: '관리자 | ShipFriend TechBlog', + robots: { + index: false, + follow: false, + googleBot: { index: false, follow: false }, + }, +}; interface AdminPageLayoutProps { children: React.ReactNode; } const AdminPageLayout = ({ children }: AdminPageLayoutProps) => { - return ( - - - }>{children} - - - ); + return {children}; }; export default AdminPageLayout; diff --git a/app/api/portfolio/data.ts b/app/api/portfolio/data.ts index 4ab18fac..5ff74fc7 100644 --- a/app/api/portfolio/data.ts +++ b/app/api/portfolio/data.ts @@ -39,7 +39,7 @@ const shipfriend: PortfolioItem = { url: '/posts/%EB%8B%A4%ED%81%AC%EB%AA%A8%EB%93%9C-fouc-%EA%B9%9C%EB%B9%A1%EC%9E%84-%ED%98%84%EC%83%81-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0', }, ], - mainImage: '/plane.png', + mainImage: '/images/projects/shipfriend/main.webp', images: [ '/images/projects/shipfriend/bloglist.webp', '/images/projects/shipfriend/blog-detail.webp', diff --git a/app/atelier/layout.tsx b/app/atelier/layout.tsx index c7b99e43..63af6423 100644 --- a/app/atelier/layout.tsx +++ b/app/atelier/layout.tsx @@ -1,4 +1,5 @@ import { Metadata } from 'next'; +import { SITE_URL } from '@/app/lib/site'; import AtelierClientLayout from './AtelierClientLayout'; export const metadata: Metadata = { @@ -7,12 +8,12 @@ export const metadata: Metadata = { openGraph: { title: 'Atelier - ShipFriend TechBlog', description: '생각들을 던져두는 곳, Atelier 페이지입니다.', - url: 'https://shipfriend.dev/atelier', + url: `${SITE_URL}/atelier`, siteName: 'ShipFriend TechBlog', type: 'website', images: [ { - url: 'https://shipfriend.dev/images/atelier/atelier-og-thumbnail.webp', + url: `${SITE_URL}/images/atelier/atelier-og-thumbnail.webp`, width: 1200, height: 630, alt: 'Atelier', @@ -23,7 +24,10 @@ export const metadata: Metadata = { card: 'summary_large_image', title: 'Atelier - ShipFriend TechBlog', description: '생각들을 던져두는 곳, Atelier 페이지입니다.', - images: ['https://shipfriend.dev/images/atelier/atelier-og-thumbnail.webp'], + images: [`${SITE_URL}/images/atelier/atelier-og-thumbnail.webp`], + }, + alternates: { + canonical: `${SITE_URL}/atelier`, }, }; diff --git a/app/entities/common/NavBar.tsx b/app/entities/common/NavBar.tsx index fac63314..84322ae5 100644 --- a/app/entities/common/NavBar.tsx +++ b/app/entities/common/NavBar.tsx @@ -52,11 +52,12 @@ const NavBar = () => { className={`${fixedStyle} fixed h-16 top-0 px-4 w-screen inline-flex items-center justify-center z-40 backdrop-blur-sm`} >
- + + ShipFriend TechBlog