Skip to content

Commit 933b216

Browse files
authored
Merge pull request #312 from manNomi/feat/home-metadata
feat : 홈페이지 스트럭처 데이터 추가
2 parents 1b0b78e + 443f323 commit 933b216

1 file changed

Lines changed: 110 additions & 63 deletions

File tree

src/app/(home)/page.tsx

Lines changed: 110 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,52 @@ const NewsSectionDynamic = dynamic(() => import("./_ui/NewsSection"), {
1717
loading: () => <NewsSectionSkeleton />,
1818
});
1919

20+
const baseUrl = process.env.NEXT_PUBLIC_WEB_URL || "https://solid-connection.com";
21+
const ogImageUrl = `${baseUrl}/opengraph-image.png`;
22+
2023
export const metadata: Metadata = {
21-
title: "솔리드 커넥션 – 교환학생의 첫 걸음",
22-
description: "교환학생 준비를 위한 모든 정보가 여기에!",
24+
title: "교환학생 사이트 | 솔리드 커넥션 – 교환학생 커뮤니티",
25+
description:
26+
"교환학생 사이트 솔리드커넥션. 교환학생 커뮤니티에서 학교 검색, 성적 입력, 지원 현황 확인까지 한 번에. 교환학생 준비를 위한 모든 정보를 제공합니다.",
2327
alternates: {
24-
canonical: "https://solid-connection.com/",
28+
canonical: `${baseUrl}/`,
29+
},
30+
openGraph: {
31+
title: "교환학생 사이트 | 솔리드 커넥션 – 교환학생 커뮤니티",
32+
description:
33+
"교환학생 사이트 솔리드커넥션. 교환학생 커뮤니티에서 학교 검색, 성적 입력, 지원 현황 확인까지 한 번에. 교환학생 준비를 위한 모든 정보를 제공합니다.",
34+
url: `${baseUrl}/`,
35+
siteName: "솔리드커넥션",
36+
locale: "ko_KR",
37+
type: "website",
38+
images: [
39+
{
40+
url: ogImageUrl,
41+
width: 1200,
42+
height: 630,
43+
alt: "솔리드 커넥션 - 교환학생 커뮤니티",
44+
},
45+
],
46+
},
47+
twitter: {
48+
card: "summary_large_image",
49+
title: "교환학생 사이트 | 솔리드 커넥션 – 교환학생 커뮤니티",
50+
description: "교환학생 사이트 솔리드커넥션. 교환학생 커뮤니티에서 학교 검색, 성적 입력, 지원 현황 확인까지.",
51+
images: [ogImageUrl],
52+
},
53+
};
54+
55+
// Structured Data (JSON-LD) for SEO - 교환학생 사이트, 커뮤니티 키워드 강화
56+
const structuredData = {
57+
"@context": "https://schema.org",
58+
"@type": "WebSite",
59+
name: "솔리드커넥션",
60+
url: `${baseUrl}/`,
61+
description: "교환학생 학교 검색, 성적 입력, 지원 현황 확인까지 가능한 교환학생 플랫폼.",
62+
potentialAction: {
63+
"@type": "SearchAction",
64+
target: `${baseUrl}/university?searchText={search_term_string}`,
65+
"query-input": "required name=search_term_string",
2566
},
2667
};
2768

@@ -33,71 +74,77 @@ const HomePage = async () => {
3374
const allRegionsUniversityList = await getCategorizedUniversities();
3475

3576
return (
36-
<div className="w-full">
37-
<FindLastYearScoreBar />
38-
<div className="flex flex-col gap-2.5 px-5 py-3.5">
39-
<div className="flex gap-2">
40-
<Link
41-
className="h-26 bg-bg-accent-blue flex flex-1 flex-col gap-2 rounded-lg p-2.5"
42-
href="/university/search"
43-
>
44-
<div className="flex flex-col">
45-
<span className="typo-bold-5 text-secondary">학교 검색하기</span>
46-
<span className="typo-medium-4 text-k-700">모든 학교 목록을 확인해보세요</span>
47-
</div>
48-
<div className="flex justify-end">
49-
<IconMagnifyingGlass />
50-
</div>
51-
</Link>
52-
<Link className="h-26 bg-bg-accent-sky flex flex-1 flex-col gap-2 rounded-lg p-2.5" href="/university/score">
53-
<div className="flex flex-col">
54-
<span className="typo-bold-5 text-sub-a">성적 입력하기</span>
55-
<span className="typo-medium-4 text-k-700">성적을 입력해보세요</span>
56-
</div>
57-
<div className="flex justify-end">
58-
<IconPaper />
59-
</div>
60-
</Link>
77+
<>
78+
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(structuredData) }} />
79+
<div className="w-full">
80+
<FindLastYearScoreBar />
81+
<div className="flex flex-col gap-2.5 px-5 py-3.5">
82+
<div className="flex gap-2">
83+
<Link
84+
className="h-26 bg-bg-accent-blue flex flex-1 flex-col gap-2 rounded-lg p-2.5"
85+
href="/university/search"
86+
>
87+
<div className="flex flex-col">
88+
<span className="typo-bold-5 text-secondary">학교 검색하기</span>
89+
<span className="typo-medium-4 text-k-700">모든 학교 목록을 확인해보세요</span>
90+
</div>
91+
<div className="flex justify-end">
92+
<IconMagnifyingGlass />
93+
</div>
94+
</Link>
95+
<Link
96+
className="h-26 bg-bg-accent-sky flex flex-1 flex-col gap-2 rounded-lg p-2.5"
97+
href="/university/score"
98+
>
99+
<div className="flex flex-col">
100+
<span className="typo-bold-5 text-sub-a">성적 입력하기</span>
101+
<span className="typo-medium-4 text-k-700">성적을 입력해보세요</span>
102+
</div>
103+
<div className="flex justify-end">
104+
<IconPaper />
105+
</div>
106+
</Link>
107+
</div>
108+
<div className="flex gap-2">
109+
<Link
110+
className="h-26 bg-bg-accent-orange flex flex-1 flex-col gap-2 rounded-lg p-2.5"
111+
href="/university/application/apply"
112+
>
113+
<div className="flex flex-col">
114+
<span className="typo-bold-5 text-accent-custom-orange">학교 지원하기</span>
115+
<span className="typo-medium-4 text-k-700">학교를 지원해주세요</span>
116+
</div>
117+
<div className="flex justify-end">
118+
<IconMuseum />
119+
</div>
120+
</Link>
121+
<Link
122+
className="h-26 bg-bg-accent-green flex flex-1 flex-col gap-2 rounded-lg p-2.5"
123+
href="/university/application"
124+
>
125+
<div className="flex flex-col">
126+
<span className="typo-bold-5 text-accent-custom-green">지원자 현황 확인</span>
127+
<span className="typo-medium-4 text-k-700">경쟁률을 바로 분석해드려요</span>
128+
</div>
129+
<div className="flex justify-end">
130+
<IconIdCard />
131+
</div>
132+
</Link>
133+
</div>
61134
</div>
62-
<div className="flex gap-2">
63-
<Link
64-
className="h-26 bg-bg-accent-orange flex flex-1 flex-col gap-2 rounded-lg p-2.5"
65-
href="/university/application/apply"
66-
>
67-
<div className="flex flex-col">
68-
<span className="typo-bold-5 text-accent-custom-orange">학교 지원하기</span>
69-
<span className="typo-medium-4 text-k-700">학교를 지원해주세요</span>
70-
</div>
71-
<div className="flex justify-end">
72-
<IconMuseum />
73-
</div>
74-
</Link>
75-
<Link
76-
className="h-26 bg-bg-accent-green flex flex-1 flex-col gap-2 rounded-lg p-2.5"
77-
href="/university/application"
78-
>
79-
<div className="flex flex-col">
80-
<span className="typo-bold-5 text-accent-custom-green">지원자 현황 확인</span>
81-
<span className="typo-medium-4 text-k-700">경쟁률을 바로 분석해드려요</span>
82-
</div>
83-
<div className="flex justify-end">
84-
<IconIdCard />
85-
</div>
86-
</Link>
135+
136+
<div className="border-t-[5px] border-k-50 py-5 pl-5">
137+
<div className="typo-sb-7 mb-2 flex items-center gap-1.5 font-serif text-k-700">실시간 인기있는 파견학교</div>
138+
<PopularUniversitySection universities={recommendedUniversities} />
87139
</div>
88-
</div>
89140

90-
<div className="border-t-[5px] border-k-50 py-5 pl-5">
91-
<div className="typo-sb-7 mb-2 flex items-center gap-1.5 font-serif text-k-700">실시간 인기있는 파견학교</div>
92-
<PopularUniversitySection universities={recommendedUniversities} />
93-
</div>
141+
<div className="p-5">
142+
<UniversityList allRegionsUniversityList={allRegionsUniversityList} />
143+
</div>
94144

95-
<div className="p-5">
96-
<UniversityList allRegionsUniversityList={allRegionsUniversityList} />
145+
<NewsSectionDynamic newsList={newsList} />
97146
</div>
98-
99-
<NewsSectionDynamic newsList={newsList} />
100-
</div>
147+
</>
101148
);
102149
};
103150

0 commit comments

Comments
 (0)