From 0551750e923f19d1fa3c862d747b2052f102f784 Mon Sep 17 00:00:00 2001 From: TTOCHIwas <95687307+TTOCHIwas@users.noreply.github.com> Date: Wed, 1 Apr 2026 22:22:17 +0900 Subject: [PATCH 1/8] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EA=B8=B0=EB=B3=B8=20SEO=20=EB=A9=94?= =?UTF-8?q?=ED=83=80=20=ED=83=9C=EA=B7=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index db1fe31..6e5eff4 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,34 @@ - seed + 과제 고민 끝, 대학생 맞춤형 AI 프롬프트 가이드 - SEED + + + + + + + + + + + +
From 22b3f0aeb439fb473924ed357b984cd0a185a616 Mon Sep 17 00:00:00 2001 From: TTOCHIwas <95687307+TTOCHIwas@users.noreply.github.com> Date: Wed, 1 Apr 2026 23:13:15 +0900 Subject: [PATCH 2/8] =?UTF-8?q?refactor:=20=EB=9E=9C=EB=94=A9=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=9D=B4=EB=A9=94=EC=9D=BC=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EC=84=B9=EC=85=98=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/main/MainPage.tsx | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/pages/main/MainPage.tsx b/src/pages/main/MainPage.tsx index 9759b01..a9edb4e 100644 --- a/src/pages/main/MainPage.tsx +++ b/src/pages/main/MainPage.tsx @@ -2,11 +2,7 @@ import { useState } from "react"; import { Box, Button, Flex, HStack, Text, VStack } from "@chakra-ui/react"; -import { - AssignmentHelpSection, - ExecutionOnlySection, - SendEmailSection, -} from "@/features"; +import { AssignmentHelpSection, ExecutionOnlySection } from "@/features"; import { CheckIcon, CopyIcon, SparklesIcon } from "@/shared"; export default function MainPage() { @@ -21,10 +17,10 @@ export default function MainPage() { w="full" > - - Date: Wed, 1 Apr 2026 23:14:20 +0900 Subject: [PATCH 3/8] =?UTF-8?q?refactor:=20=EB=AF=B8=EC=82=AC=EC=9A=A9=20S?= =?UTF-8?q?endEmailSection=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/main/ui/SendEmailSection.tsx | 87 ----------------------- src/features/main/ui/index.ts | 1 - 2 files changed, 88 deletions(-) delete mode 100644 src/features/main/ui/SendEmailSection.tsx diff --git a/src/features/main/ui/SendEmailSection.tsx b/src/features/main/ui/SendEmailSection.tsx deleted file mode 100644 index c1fbc88..0000000 --- a/src/features/main/ui/SendEmailSection.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { Button, Flex, Input, Text, VStack } from "@chakra-ui/react"; - -import { CheckIcon } from "@/shared"; - -import { useSendEmail } from "../hooks"; - -export const SendEmailSection = () => { - const { - email, - setEmail, - submitStatus, - errorMessage, - submitWaitlistEmail, - submitOnEnter, - } = useSendEmail(); - - return ( - - {submitStatus === "success" ? ( - - - - 알림 신청이 완료되었습니다! - - - ) : ( - <> - - - 이메일 - - setEmail(e.target.value)} - onKeyDown={submitOnEnter} - /> - {submitStatus === "error" && ( - - {errorMessage} - - )} - - - - - - - )} - - ); -}; diff --git a/src/features/main/ui/index.ts b/src/features/main/ui/index.ts index 1c17ab9..b4b94f4 100644 --- a/src/features/main/ui/index.ts +++ b/src/features/main/ui/index.ts @@ -1,3 +1,2 @@ export { AssignmentHelpSection } from "./AssignmentHelpSection"; export { ExecutionOnlySection } from "./ExecutionOnlySection"; -export * from "./SendEmailSection"; From a89787a17c762685a1c2ff88dbf48710fc90a07d Mon Sep 17 00:00:00 2001 From: TTOCHIwas <95687307+TTOCHIwas@users.noreply.github.com> Date: Wed, 1 Apr 2026 23:15:38 +0900 Subject: [PATCH 4/8] =?UTF-8?q?refactor:=20=EB=AF=B8=EC=82=AC=EC=9A=A9=20u?= =?UTF-8?q?seSendEmail=20=ED=9B=85=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/main/hooks/index.ts | 1 - src/features/main/hooks/useSendEmail.ts | 54 ------------------------- 2 files changed, 55 deletions(-) delete mode 100644 src/features/main/hooks/useSendEmail.ts diff --git a/src/features/main/hooks/index.ts b/src/features/main/hooks/index.ts index 1644c00..a305f4b 100644 --- a/src/features/main/hooks/index.ts +++ b/src/features/main/hooks/index.ts @@ -5,4 +5,3 @@ export * from "./useExecutionOnlySectionState"; export * from "./useSolutionTimelineProgress"; export * from "./useObservedHeight"; export * from "./useWaitList"; -export * from "./useSendEmail"; diff --git a/src/features/main/hooks/useSendEmail.ts b/src/features/main/hooks/useSendEmail.ts deleted file mode 100644 index f1152d2..0000000 --- a/src/features/main/hooks/useSendEmail.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { useRef, useState } from "react"; -import type React from "react"; - -import { useWaitList } from "./useWaitList"; - -type SubmitStatus = "idle" | "loading" | "success" | "error"; - -export const useSendEmail = () => { - const [email, setEmail] = useState(""); - const [submitStatus, setSubmitStatus] = useState("idle"); - const [errorMessage, setErrorMessage] = useState(""); - - const isSubmittingRef = useRef(false); - - const { submit } = useWaitList(); - - const submitWaitlistEmail = async () => { - const trimmedEmail = email.trim(); - if (!trimmedEmail || isSubmittingRef.current) return; - - isSubmittingRef.current = true; - setSubmitStatus("loading"); - setErrorMessage(""); - - try { - const result = await submit(trimmedEmail); - - if (!result.success) { - setErrorMessage( - result.errorMessage ?? - "오류가 발생했습니다. 잠시 후 다시 시도해주세요.", - ); - setSubmitStatus("error"); - } else { - setSubmitStatus("success"); - } - } finally { - isSubmittingRef.current = false; - } - }; - - const submitOnEnter = (e: React.KeyboardEvent) => { - if (e.key === "Enter") submitWaitlistEmail(); - }; - - return { - email, - setEmail, - submitStatus, - errorMessage, - submitWaitlistEmail, - submitOnEnter, - }; -}; From d3a8582ab89e881af665e6f4af9466321309287a Mon Sep 17 00:00:00 2001 From: TTOCHIwas <95687307+TTOCHIwas@users.noreply.github.com> Date: Wed, 1 Apr 2026 23:17:18 +0900 Subject: [PATCH 5/8] =?UTF-8?q?refactor:=20=EB=AF=B8=EC=82=AC=EC=9A=A9=20u?= =?UTF-8?q?seWaitList=20=ED=9B=85=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/main/hooks/index.ts | 1 - src/features/main/hooks/useWaitList.ts | 41 -------------------------- 2 files changed, 42 deletions(-) delete mode 100644 src/features/main/hooks/useWaitList.ts diff --git a/src/features/main/hooks/index.ts b/src/features/main/hooks/index.ts index a305f4b..bb5fa09 100644 --- a/src/features/main/hooks/index.ts +++ b/src/features/main/hooks/index.ts @@ -4,4 +4,3 @@ export * from "./usePhraseCloudMotion"; export * from "./useExecutionOnlySectionState"; export * from "./useSolutionTimelineProgress"; export * from "./useObservedHeight"; -export * from "./useWaitList"; diff --git a/src/features/main/hooks/useWaitList.ts b/src/features/main/hooks/useWaitList.ts deleted file mode 100644 index f81020f..0000000 --- a/src/features/main/hooks/useWaitList.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { FunctionsHttpError } from "@supabase/supabase-js"; - -import { supabase } from "@/shared"; - -type WaitlistSubmitResult = { - success: boolean; - errorMessage?: string; -}; - -export const useWaitList = () => { - const submit = async (email: string): Promise => { - try { - const { error } = await supabase.functions.invoke("notify-waitlist", { - body: { email }, - }); - - if (error) { - let message = "오류가 발생했습니다. 잠시 후 다시 시도해주세요."; - try { - if (error instanceof FunctionsHttpError) { - const body = await error.context.json(); - if (body?.error) message = body.error; - } - } catch (e) { - console.error("Error parsing error message:", e); - } - return { success: false, errorMessage: message }; - } - - return { success: true }; - } catch (e) { - console.error("useWaitList submit 중 예기치 않은 오류 발생:", e); - return { - success: false, - errorMessage: "오류가 발생했습니다. 잠시 후 다시 시도해주세요.", - }; - } - }; - - return { submit }; -}; From 1c10c683cfedc617bed58f5805e761e3eb5b8fb4 Mon Sep 17 00:00:00 2001 From: TTOCHIwas <95687307+TTOCHIwas@users.noreply.github.com> Date: Wed, 1 Apr 2026 23:26:03 +0900 Subject: [PATCH 6/8] =?UTF-8?q?feat:=20=EB=9E=9C=EB=94=A9=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20CTA=EC=99=80=20=ED=95=98=EB=8B=A8=20?= =?UTF-8?q?=EC=84=B9=EC=85=98=20=EA=B0=84=EA=B2=A9=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/main/MainPage.tsx | 45 ++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/src/pages/main/MainPage.tsx b/src/pages/main/MainPage.tsx index a9edb4e..7827690 100644 --- a/src/pages/main/MainPage.tsx +++ b/src/pages/main/MainPage.tsx @@ -1,12 +1,14 @@ import { useState } from "react"; +import { useNavigate } from "react-router"; import { Box, Button, Flex, HStack, Text, VStack } from "@chakra-ui/react"; import { AssignmentHelpSection, ExecutionOnlySection } from "@/features"; -import { CheckIcon, CopyIcon, SparklesIcon } from "@/shared"; +import { CheckIcon, CopyIcon, ROUTE_PATHS, SparklesIcon } from "@/shared"; export default function MainPage() { const [isSolutionSectionReady, setIsSolutionSectionReady] = useState(false); + const navigate = useNavigate(); return ( @@ -17,10 +19,10 @@ export default function MainPage() { w="full" > + + + + - + @@ -331,7 +356,7 @@ export default function MainPage() { display="flex" h="100dvh" justifyContent="center" - py={11} + py={{ base: 16, md: 20, lg: 24 }} w="full" > From 88db7cd066bc79964c8a36a0295cf0a13f09b8bd Mon Sep 17 00:00:00 2001 From: TTOCHIwas <95687307+TTOCHIwas@users.noreply.github.com> Date: Thu, 2 Apr 2026 18:53:28 +0900 Subject: [PATCH 7/8] =?UTF-8?q?fix:=20=EB=A9=94=EC=9D=B8=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20SEO=20=EB=A9=94=ED=83=80=EC=99=80=20?= =?UTF-8?q?=EB=9E=9C=EB=94=A9=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 10 ++++++++-- src/pages/main/MainPage.tsx | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 6e5eff4..db8151b 100644 --- a/index.html +++ b/index.html @@ -18,7 +18,10 @@ property="og:description" content="수만 개의 성공적인 프롬프트 데이터로 당신의 과제에 딱 맞는 로드맵을 제시합니다. 원클릭 복사로 논문, 레포트 등 완벽한 결과물을 만들어보세요." /> - + @@ -31,7 +34,10 @@ name="twitter:description" content="수만 개의 성공적인 프롬프트 데이터로 당신의 과제에 딱 맞는 로드맵을 제시합니다. 원클릭 복사로 논문, 레포트 등 완벽한 결과물을 만들어보세요." /> - +
diff --git a/src/pages/main/MainPage.tsx b/src/pages/main/MainPage.tsx index 7827690..ce886fd 100644 --- a/src/pages/main/MainPage.tsx +++ b/src/pages/main/MainPage.tsx @@ -87,7 +87,7 @@ export default function MainPage() {
Date: Sat, 4 Apr 2026 09:01:50 +0900 Subject: [PATCH 8/8] =?UTF-8?q?chore:=20=EA=B5=AC=EA=B8=80=20=EC=82=AC?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8=20=EC=86=8C=EC=9C=A0=EA=B6=8C=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/googlefdf77e33a4cf56c6.html | 1 + 1 file changed, 1 insertion(+) create mode 100644 public/googlefdf77e33a4cf56c6.html diff --git a/public/googlefdf77e33a4cf56c6.html b/public/googlefdf77e33a4cf56c6.html new file mode 100644 index 0000000..81d4520 --- /dev/null +++ b/public/googlefdf77e33a4cf56c6.html @@ -0,0 +1 @@ +google-site-verification: googlefdf77e33a4cf56c6.html \ No newline at end of file