Skip to content

Commit ccc0161

Browse files
committed
imp: improve seo
1 parent 1f2801d commit ccc0161

File tree

9 files changed

+147
-73
lines changed

9 files changed

+147
-73
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import Head from "next/head";
2+
3+
type ComponentProps = {
4+
path?: string;
5+
};
6+
export default function MetaOgTwitterUrlTsx({ path = "" }: ComponentProps) {
7+
return (
8+
<Head>
9+
<meta
10+
property="og:url"
11+
content={`${process.env.NEXT_PUBLIC_DOMAIN_URL}${path}`}
12+
/>
13+
<meta
14+
property="twitter:url"
15+
content={`${process.env.NEXT_PUBLIC_DOMAIN_URL}${path}`}
16+
/>
17+
</Head>
18+
);
19+
}

components/common/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export { default as ErrorText } from "./ErrorText";
44
export { default as EventInfo } from "./EventInfo";
55
export { default as GenericInput } from "./GenericInput";
66
export { default as InputTemplate } from "./InputTemplate";
7+
export { default as MetaOgTwitterUrlTsx } from "./MetaOgTwitterUrl";
78
export { default as Modal } from "./Modal";
89
export { default as Portal } from "./Portal";
910
export { default as Retention } from "./Retention";

pages/_app.tsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,34 @@ export default function App({ Component, pageProps }: AppPropsWithLayout) {
1818
return (
1919
<>
2020
<Head>
21-
<title>타임투밋</title>
21+
<title>타임투밋 - 빠짐없는 모임 시간 맞추기</title>
2222
<link rel="icon" href="/favicon.png" />
23-
<meta name="description" content="타임투밋, 카톡으로 약속잡기" />
23+
<meta
24+
name="description"
25+
content="팀플,회의,모임 시간 매번 카톡 투표 만들지말고 링크 하나만 올려보세요. 사이드프로젝트 필수앱 타임투밋!"
26+
/>
27+
{/* og url과 twitter url은 동적으로 */}
2428
<meta property="og:title" content="타임투밋" />
25-
<meta property="og:url" content="https://www.time2meet.xyz/" />
2629
<meta property="og:type" content="website" />
2730
<meta
2831
property="og:image"
2932
content="https://www.time2meet.xyz/og_image.png"
3033
/>
31-
<meta property="og:title" content="타임투밋" />
34+
<meta
35+
property="og:title"
36+
content="타임투밋 - 빠짐없는 모임 시간 맞추기"
37+
/>
3238
<meta property="og:description" content="타임투밋, 카톡으로 약속잡기" />
3339
<meta property="og:image:width" content="400" />
3440
<meta property="og:image:height" content="339" />
41+
<meta
42+
property="twitter:title"
43+
content="타임투밋 - 빠짐없는 모임 시간 맞추기"
44+
/>
45+
<meta
46+
property="twitter:image"
47+
content="https://www.time2meet.xyz/og_image.png/"
48+
></meta>
3549
<link rel="preconnect" href="https://fonts.googleapis.com" />
3650
<link
3751
rel="preconnect"

pages/events/[id].tsx

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
import { Button, ErrorBox, Modal, Toast } from "@components/common";
1+
import {
2+
Button,
3+
ErrorBox,
4+
MetaOgTwitterUrlTsx,
5+
Modal,
6+
Toast,
7+
} from "@components/common";
28
import {
39
EntranceInput,
410
TimetableInfo,
@@ -102,34 +108,37 @@ const Events: NextPageWithLayout = () => {
102108
}
103109

104110
return (
105-
<ContainerWrapper height={windowHeight}>
106-
{!currentAttendee && (
107-
<Modal>
108-
<EntranceInput onClickEntrance={handleClickEntrance} />
109-
</Modal>
110-
)}
111-
{isToastOpen && (
112-
<Toast message={`${currentAttendee}님이 입장하셨습니다.`} />
113-
)}
114-
<Container>
115-
<Header>
116-
<Text>가능한 시간을 입력하세요!</Text>
117-
<StyledLink href="/">모임 만들기</StyledLink>
118-
</Header>
119-
<TimetableInfo
120-
eventName={eventName}
111+
<>
112+
<MetaOgTwitterUrlTsx path={`/events/${id}`} />
113+
<ContainerWrapper height={windowHeight}>
114+
{!currentAttendee && (
115+
<Modal>
116+
<EntranceInput onClickEntrance={handleClickEntrance} />
117+
</Modal>
118+
)}
119+
{isToastOpen && (
120+
<Toast message={`${currentAttendee}님이 입장하셨습니다.`} />
121+
)}
122+
<Container>
123+
<Header>
124+
<Text>가능한 시간을 입력하세요!</Text>
125+
<StyledLink href="/">모임 만들기</StyledLink>
126+
</Header>
127+
<TimetableInfo
128+
eventName={eventName}
129+
attendees={attendees}
130+
currentAttendee={currentAttendee}
131+
setAttendees={setAttendees}
132+
/>
133+
</Container>
134+
<TimetableTemplate
135+
startDate={startDate?.toDate() || new Date()}
136+
endDate={endDate?.toDate() || new Date()}
121137
attendees={attendees}
122138
currentAttendee={currentAttendee}
123-
setAttendees={setAttendees}
124139
/>
125-
</Container>
126-
<TimetableTemplate
127-
startDate={startDate?.toDate() || new Date()}
128-
endDate={endDate?.toDate() || new Date()}
129-
attendees={attendees}
130-
currentAttendee={currentAttendee}
131-
/>
132-
</ContainerWrapper>
140+
</ContainerWrapper>
141+
</>
133142
);
134143
};
135144

pages/index.tsx

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import landingImage from "@assets/images/landing_image.png";
2-
import { Button } from "@components/common";
2+
import { Button, MetaOgTwitterUrlTsx } from "@components/common";
33
import { Thumbnail } from "@components/icons";
44
import styled from "@emotion/styled";
55
import Image from "next/image";
@@ -9,18 +9,21 @@ export default function Home() {
99
const router = useRouter();
1010
return (
1111
<>
12+
<MetaOgTwitterUrlTsx />
1213
<Layout>
1314
<LogoWrapper>
1415
<Thumbnail width={20} height={20} />
15-
<LogoName>타임투밋</LogoName>
16+
<LogoName as="h1">타임투밋</LogoName>
1617
</LogoWrapper>
1718
<Text>매번 날짜 투표 만들지 말고!</Text>
18-
<Header>
19-
카톡으로 하는 <br /> 모임시간 자동 매칭
20-
</Header>
19+
<header>
20+
<HeaderText as="h2">
21+
카톡으로 하는 <br /> 모임시간 자동 매칭
22+
</HeaderText>
23+
</header>
2124
<LogoBiggerWrapper>
2225
<Thumbnail />
23-
<p>타임투밋</p>
26+
<BiggerLogoText as="h2">타임투밋</BiggerLogoText>
2427
</LogoBiggerWrapper>
2528
<Button
2629
size="lg"
@@ -39,7 +42,9 @@ export default function Home() {
3942
<Footer>
4043
<FooterLogoWrapper>
4144
<Thumbnail width={20} height={20} />
42-
<LogoName style={{ color: "white" }}>타임투밋</LogoName>
45+
<LogoName style={{ color: "white" }} as="h3">
46+
타임투밋
47+
</LogoName>
4348
</FooterLogoWrapper>
4449
<Wrapper>
4550
<p>ver 1.0</p>
@@ -84,18 +89,19 @@ const LogoWrapper = styled.div`
8489
margin-left: 3rem;
8590
`;
8691

87-
const Header = styled.header`
92+
const HeaderText = styled.header`
8893
font-size: 2.6rem;
8994
color: ${(props) => props.theme.colors.primary};
9095
line-height: 1.2;
9196
text-align: center;
9297
font-weight: 700;
98+
`;
9399

94-
& > p {
95-
font-weight: 400;
96-
font-size: 2rem;
97-
margin-bottom: 0.5rem;
98-
}
100+
const BiggerLogoText = styled.h1`
101+
text-align: center;
102+
margin: 2rem 0rem;
103+
font-weight: 700;
104+
margin-left: 1rem;
99105
`;
100106

101107
const LogoBiggerWrapper = styled(LogoWrapper)`

pages/new.tsx

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Button } from "@components/common";
1+
import { Button, MetaOgTwitterUrlTsx } from "@components/common";
22
import {
33
DateInputs,
44
MaxCapacityInput,
@@ -56,32 +56,39 @@ const New: NextPageWithLayout = () => {
5656
};
5757

5858
return (
59-
<Layout>
60-
{modalOpen && (
61-
<NewEventConfirmModal
62-
control={control}
63-
onSubmitData={handleSubmitData}
64-
onCloseModal={handleCloseModal}
65-
isLoading={isLoading}
66-
/>
67-
)}
68-
<Header>새로운 모임 생성하기</Header>
69-
<form onSubmit={handleSubmit(onSubmit)}>
70-
<NameInput control={control} register={register} />
71-
<MaxCapacityInput control={control} />
72-
<DateInputs control={control} setValue={setValue} register={register} />
73-
{/* TODO 나중에 시간범위 설정 가능하게 할 예정 */}
74-
<ButtonWrapper>
75-
<Wrapper>
76-
<TextP>
77-
생성하고 나면 <br />
78-
수정이 불가능해요
79-
</TextP>
80-
<Button type="submit">생성하기</Button>
81-
</Wrapper>
82-
</ButtonWrapper>
83-
</form>
84-
</Layout>
59+
<>
60+
<MetaOgTwitterUrlTsx path="/new" />
61+
<Layout>
62+
{modalOpen && (
63+
<NewEventConfirmModal
64+
control={control}
65+
onSubmitData={handleSubmitData}
66+
onCloseModal={handleCloseModal}
67+
isLoading={isLoading}
68+
/>
69+
)}
70+
<Header>새로운 모임 생성하기</Header>
71+
<form onSubmit={handleSubmit(onSubmit)}>
72+
<NameInput control={control} register={register} />
73+
<MaxCapacityInput control={control} />
74+
<DateInputs
75+
control={control}
76+
setValue={setValue}
77+
register={register}
78+
/>
79+
{/* TODO 나중에 시간범위 설정 가능하게 할 예정 */}
80+
<ButtonWrapper>
81+
<Wrapper>
82+
<TextP>
83+
생성하고 나면 <br />
84+
수정이 불가능해요
85+
</TextP>
86+
<Button type="submit">생성하기</Button>
87+
</Wrapper>
88+
</ButtonWrapper>
89+
</form>
90+
</Layout>
91+
</>
8592
);
8693
};
8794

pages/share.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
import { Button } from "@components/common";
2-
import { EventInfo } from "@components/common";
3-
import { Toast } from "@components/common";
1+
import {
2+
Button,
3+
EventInfo,
4+
MetaOgTwitterUrlTsx,
5+
Toast,
6+
} from "@components/common";
47
import Retention from "@components/common/Retention";
58
import styled from "@emotion/styled";
69
import { getEventDocRef } from "@firebase/clientApp";
@@ -39,6 +42,7 @@ export default function Home({
3942

4043
return (
4144
<>
45+
<MetaOgTwitterUrlTsx path={`/events/${id}`} />
4246
<Script
4347
src="https://developers.kakao.com/sdk/js/kakao.js"
4448
onLoad={() => {

public/robot.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
User-agent: *
2+
Allow: /
3+
Disallow: /events
4+
Disallow: /share

public/sitemap.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<urlset
2+
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemalocation="http://www.sitemaps.org/schemas/sitemap/0.9
5+
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
6+
>
7+
<url>
8+
<loc>https://www.time2meet.xyz/</loc>
9+
</url>
10+
</urlset>

0 commit comments

Comments
 (0)