diff --git a/README.md b/README.md index a8ab8865..c8cb44d8 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,56 @@ -# 🎁 WishPool +# 🎁 WishPooL: 마음이 λͺ¨μ—¬, λ„˜μ³ 흐λ₯΄λŠ” κ³³ +
-WishPool은 μ—¬λŸ¬ μ‚¬λžŒμ΄ μ œμ•ˆν•œ μ„ λ¬Ό μ€‘μ—μ„œ μƒμΌμžκ°€ 직접 선택할 수 μžˆλ„λ‘ λ•λŠ” **μ„ λ¬Ό 선택 κ³Όμ • μ€‘μ‹¬μ˜ νλ ˆμ΄μ…˜ μ„œλΉ„μŠ€**μž…λ‹ˆλ‹€. +--- + +## 🎁 WishPooL μ„œλΉ„μŠ€ μ†Œκ°œ -μ„ λ¬Ό 결과보닀 **선물을 κ³ λ₯΄λŠ” κ³Όμ •μ˜ κ²½ν—˜**에 μ§‘μ€‘ν•˜μ—¬, μƒμΌμžμ™€ μ°Έμ—¬μž λͺ¨λ‘κ°€ λ§Œμ‘±ν•  수 μžˆλŠ” μ„ λ¬Ό μ€€λΉ„λ₯Ό λ•μŠ΅λ‹ˆλ‹€. +μΉœκ΅¬λ“€κ³Ό ν•¨κ»˜ λ§Œλ“œλŠ” μœ„μ‹œλ¦¬μŠ€νŠΈλ‘œ, **선물을 μ€€λΉ„ν•˜λŠ” 과정을 νŽΈλ¦¬ν•˜κ³  즐거운 κ²½ν—˜**으둜 λ§Œλ“€μ–΄μ£ΌλŠ” μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.
+**μƒμΌμžμ˜ μ·¨ν–₯에 λ§žλŠ” μ„ λ¬Ό**을 κ³ λ₯΄λŠ” 과정에 μ§‘μ€‘ν•˜μ—¬, μƒμΌμžμ™€ μ°Έμ—¬μž λͺ¨λ‘κ°€ λ§Œμ‘±ν•  수 μžˆλŠ” μ„ λ¬Ό μ€€λΉ„ κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€. --- ## πŸ”— 배포 링크 -- μ„œλΉ„μŠ€ URL: https://wishpool.store -- GitHub Repository: https://github.com/WishPool-dev +| | | +|---|---| +| 🌐 WishpooL μ„œλΉ„μŠ€ | [WishpoooL](https://wishpool.store) | +| **Frontend** Repository | [WishPool-FE](https://github.com/WishPool-dev/WishPool-FE) | +| **Backend** Repository | [WishPool-BE](https://github.com/WishPool-dev/WishPool-BE) | --- -## πŸ’‘ 기획 λ°°κ²½ - -μ—¬λŸ¬ λͺ…이 ν•¨κ»˜ 생일 선물을 μ€€λΉ„ν• μˆ˜λ‘ μƒμΌμžμ˜ μ·¨ν–₯을 μ •ν™•νžˆ λ°˜μ˜ν•˜κΈ° μ–΄λ ΅κ³ , 선택 κ³Όμ •μ—μ„œ 의견이 λΆ„μ‚°λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. - -WishPool은 μ„ λ¬Ό μ œμ•ˆ 과정을 열어두고 μ΅œμ’… 선택 κΆŒν•œμ„ μƒμΌμžμ—κ²Œ λ§‘κΉ€μœΌλ‘œμ¨, μ„ λ¬Ό μ€€λΉ„ κ³Όμ •μ˜ 뢀담을 쀄이고 μ„ λ¬Ό λ§Œμ‘±λ„λ₯Ό λ†’μ΄κ³ μž κΈ°νšλ˜μ—ˆμŠ΅λ‹ˆλ‹€. - ---- ## ✨ μ£Όμš” κΈ°λŠ₯ -### πŸ“ μœ„μ‹œν’€ 생성 +### μœ„μ‹œν’€ 생성 +ν•œ μ‚¬λžŒμ΄ λŒ€ν‘œλ‘œ μœ„μ‹œν’€μ„ μƒμ„±ν•©λ‹ˆλ‹€. +
선물을 ν•¨κ»˜ μ€€λΉ„ν•  μ‚¬λžŒλ“€μ—κ²Œ μΉ΄μΉ΄μ˜€ν†‘ μ΄ˆλŒ€ 링크λ₯Ό κ³΅μœ ν•©λ‹ˆλ‹€. -λŒ€ν‘œμžλŠ” μƒμΌμžμ˜ 생일과 μ„ λ¬Ό 수령 λ‚ μ§œλ₯Ό μ„ νƒν•˜μ—¬ μœ„μ‹œν’€μ„ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. - -μœ„μ‹œν’€ 생성이 μ™„λ£Œλ˜λ©΄ μ°Έμ—¬μžλ₯Ό μ΄ˆλŒ€ν•  수 μžˆλŠ” 링크가 λ°œκΈ‰λ˜λ©°, μΉ΄μΉ΄μ˜€ν†‘ 곡유 κΈ°λŠ₯을 톡해 κ°„νŽΈν•˜κ²Œ 전달할 수 μžˆμŠ΅λ‹ˆλ‹€. +
+ + +
+ --- -### 🎁 μ„ λ¬Ό μ œμ•ˆ - -λŒ€ν‘œμžμ™€ μ°Έμ—¬μžλŠ” μƒμ„±λœ μœ„μ‹œν’€μ— μƒμΌμžμ—κ²Œ μ£Όκ³  싢은 선물을 자유둭게 μ œμ•ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€. - -각 선물은 **이미지, 링크, 이름** 정보λ₯Ό ν¬ν•¨ν•˜μ—¬ λ“±λ‘λ˜λ©°, μ—¬λŸ¬ 개의 선물을 μ œμ•ˆν•˜λŠ” 것도 κ°€λŠ₯ν•©λ‹ˆλ‹€. - -이λ₯Ό 톡해 μ°Έμ—¬μžλ“€μ˜ λ‹€μ–‘ν•œ 아이디어가 μžμ—°μŠ€λŸ½κ²Œ λͺ¨μ΄λ„둝 μ„€κ³„ν–ˆμŠ΅λ‹ˆλ‹€. +### μ„ λ¬Ό μ œμ•ˆ +μœ„μ‹œν’€μ—μ„œλŠ” μƒμΌμžμ—κ²Œ μ£Όκ³  싢은 선물을 자유둭게 μ œμ•ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.
+μƒν’ˆ 이미지, 링크, 이름 정보λ₯Ό ν¬ν•¨ν•˜μ—¬ μ—¬λŸ¬ 개의 선물을 등둝할 수 μžˆμŠ΅λ‹ˆλ‹€. +
+ + +
--- ### 🎯 μƒμΌμž μ„ λ¬Ό 선택 -μƒμΌμžλŠ” μ°Έμ—¬μžλ“€μ΄ μ œμ•ˆν•œ μ„ λ¬Ό λͺ©λ‘μ„ ν™•μΈν•œ λ’€, μ›ν•˜μ§€ μ•ŠλŠ” 선물을 **λ“œλž˜κ·Έ μΈν„°λž™μ…˜μœΌλ‘œ 제거**ν•˜λ©° μ΅œμ’…μ μœΌλ‘œ λ°›κ³  싢은 μ„ λ¬Όλ§Œ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€. - -μ„ λ¬Ό 선택 과정을 λ‹¨μˆœν•œ 결정이 μ•„λ‹Œ, λΆ€λ‹΄ 없이 즐길 수 μžˆλŠ” ν•˜λ‚˜μ˜ κ²½ν—˜μœΌλ‘œ μ œκ³΅ν•©λ‹ˆλ‹€. - ---- - -### πŸ“£ 선택 κ²°κ³Ό 곡유 - -μƒμΌμžμ˜ 선택이 μ™„λ£Œλ˜λ©΄ λŒ€ν‘œμžμ˜ ν™ˆ ν™”λ©΄μ—μ„œ 선택 μ™„λ£Œ μƒνƒœλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. - -μ„ νƒλœ μ„ λ¬Ό λͺ©λ‘μ€ μΉ΄μΉ΄μ˜€ν†‘ 곡유 λ²„νŠΌμ„ 톡해 μ°Έμ—¬μžλ“€κ³Ό κ°„νŽΈν•˜κ²Œ κ³΅μœ ν•  수 μžˆμ–΄, μ„ λ¬Ό μ€€λΉ„ 과정을 μžμ—°μŠ€λŸ½κ²Œ λ§ˆλ¬΄λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. +μƒμΌμžλŠ” μΉœκ΅¬λ“€μ΄ μ œμ•ˆν•œ μ„ λ¬Ό 쀑 μ·¨ν–₯에 λ§žμ§€ μ•ŠλŠ” 선물을 λ“œλž˜κ·Έλ‘œ μ œκ±°ν•˜λ©° λΆ€λ‹΄ 없이 μ›ν•˜λŠ” 선물을 선택할 수 μžˆμŠ΅λ‹ˆλ‹€. +
+ + +
--- diff --git a/src/app/intro/page.tsx b/src/app/intro/page.tsx index e5c663a4..66b9d4be 100644 --- a/src/app/intro/page.tsx +++ b/src/app/intro/page.tsx @@ -1,24 +1,10 @@ -'use client'; - import Image from 'next/image'; -import { useRouter } from 'next/navigation'; import Onboarding1Image from '@/assets/images/onboarding-1.jpg'; -import Button from '@/components/common/Button'; -import { PATH } from '@/constants/common/path'; +import StartButton from '@/components/common/Button/StartButton'; import { ONBOARDING_CONTENT } from '@/constants/intro/onBoardingContent'; const OnBoardingPage = () => { - const router = useRouter(); - - const handleStart = () => { - const token = localStorage.getItem('accessToken'); - if (!token) { - router.push(PATH.LOGIN); - return; - } - router.push(PATH.HOME); - }; return (
@@ -39,7 +25,8 @@ const OnBoardingPage = () => { alt="μ˜¨λ³΄λ”© - μœ„μ‹œν’€ 이미지" fill priority - sizes="100vw" + fetchPriority="high" + sizes="(max-width: 430px) 100vw, 430px" className="object-cover" />
@@ -52,8 +39,7 @@ const OnBoardingPage = () => { src={section.imageSrc} alt={section.imageAlt} fill - priority - sizes="100vw" + sizes="(max-width: 430px) 100vw, 430px" className="object-cover" />
@@ -65,7 +51,7 @@ const OnBoardingPage = () => { ))}
- +
diff --git a/src/app/wishpool/join/[id]/info/page.tsx b/src/app/wishpool/join/[id]/info/page.tsx index efa81f08..d3c32eb7 100644 --- a/src/app/wishpool/join/[id]/info/page.tsx +++ b/src/app/wishpool/join/[id]/info/page.tsx @@ -18,29 +18,39 @@ const InfoPage = () => { const router = useRouter(); const wishpoolId = useGetWishpoolId(); const param = useSearchParams(); - const shareidentifier = param.get('shareIdentifier') ?? ''; - const { data: wishpoolData } = useGetWishpoolGuestInfo( - wishpoolId, - shareidentifier, - ); - const { data: wishpoolImage, isPending } = useGetWishpoolImage( - wishpoolData?.imageKey ?? '', - ); + const shareIdentifier = param.get('shareIdentifier') ?? ''; + + const guestQuery = useGetWishpoolGuestInfo(wishpoolId, shareIdentifier); + const wishpoolData = guestQuery.data; + + const imageQuery = useGetWishpoolImage(wishpoolData?.imageKey ?? ''); + const wishpoolImage = imageQuery.data; + const displayImg = wishpoolImage?.key || WishpoolCardImage; - if (!wishpoolData) return ; - if (isPending) return ; + if (!wishpoolId || !shareIdentifier) { + return
잘λͺ»λœ μ ‘κ·Όμž…λ‹ˆλ‹€.
; + } + + if (guestQuery.isPending) { + return ; + } + + if (guestQuery.isError || !wishpoolData) { + return
μ΄ˆλŒ€ 정보λ₯Ό λΆˆλŸ¬μ˜€μ§€ λͺ»ν–ˆμ–΄μš”.
; + } return ( <>

- {wishpoolData?.owner}λ‹˜μ΄ 보낸
+ {wishpoolData.owner}λ‹˜μ΄ 보낸
μœ„μ‹œν’€ μ΄ˆλŒ€μž₯이 λ„μ°©ν–ˆμ–΄μš”!
- {wishpoolData?.celebrant} + {wishpoolData.celebrant} λ‹˜μ˜ 선물을 ν•¨κ»˜ κ³ λ―Όν•΄ λ³ΌκΉŒμš”?

+
{ height={75} className="absolute -top-5 left-1/2 -translate-x-1/2 -translate-y-1/2" /> +
@@ -61,17 +72,18 @@ const InfoPage = () => { alt="μœ„μ‹œν’€ λŒ€ν‘œ 이미지" />
+
μ†Œκ°œ

- {wishpoolData?.description} + {wishpoolData.description}

- μ°Έμ—¬ 마감일: {getSlashDateFmt(wishpoolData?.endDate)} κΉŒμ§€ + μ°Έμ—¬ 마감일: {getSlashDateFmt(wishpoolData.endDate)} κΉŒμ§€

; +} diff --git a/src/styles/font.ts b/src/styles/font.ts index 87fb04a8..a7909bf7 100644 --- a/src/styles/font.ts +++ b/src/styles/font.ts @@ -2,16 +2,6 @@ import localFont from 'next/font/local'; export const suite = localFont({ src: [ - { - path: '../../public/fonts/suite/SUITE-Light.woff2', - weight: '300', - style: 'normal', - }, - { - path: '../../public/fonts/suite/SUITE-Regular.woff2', - weight: '400', - style: 'normal', - }, { path: '../../public/fonts/suite/SUITE-Medium.woff2', weight: '500', @@ -27,16 +17,6 @@ export const suite = localFont({ weight: '700', style: 'normal', }, - { - path: '../../public/fonts/suite/SUITE-ExtraBold.woff2', - weight: '800', - style: 'normal', - }, - { - path: '../../public/fonts/suite/SUITE-Heavy.woff2', - weight: '900', - style: 'normal', - }, ], variable: '--font-suite', display: 'swap',