Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
8b245ac
style: 와인 λͺ©λ‘νŽ˜μ΄μ§€ μŠ€νƒ€μΌ μˆ˜μ • #218
suuuuya Oct 17, 2025
6e95907
style: GNB 둜고 μ‚¬μ΄μ¦ˆ μˆ˜μ • #218
suuuuya Oct 17, 2025
01f7670
chore: GNB 둜고 h1 μ‹œλ©˜ν‹± νƒœκ·Έ μΆ”κ°€ #218
suuuuya Oct 17, 2025
5497798
style: 와인 상세 νŽ˜μ΄μ§€ μŠ€νƒ€μΌ μˆ˜μ • #218
suuuuya Oct 17, 2025
c9227f0
style: 둜그인/νšŒμ›κ°€μž…, λ§ˆμ΄νŽ˜μ΄μ§€ μŠ€νƒ€μΌ μˆ˜μ • #218
suuuuya Oct 17, 2025
015d416
design: λͺ¨λ‹¬ μž‘μ—… 쀑 (μž„μ‹œμ €μž₯) #218
suuuuya Oct 17, 2025
e20a7ec
Merge branch 'develop' into style/ui-style-check
suuuuya Oct 18, 2025
6cf7542
refactor : ν›„κΈ° μ€„λ°”κΏˆ 속성 μΆ”κ°€ 및 ν”„λ‘œμ νŠΈ μ„ΈνŒ… μŠ€ν† λ¦¬λΆ 파일 생성
junye0l Oct 18, 2025
347ffb4
chore: 이미지 λ“œλž˜κ·Έ 막기 #218
suuuuya Oct 18, 2025
f67b7b3
fix : λ¬΄ν•œμŠ€ν¬λ‘€ 둜직 μˆ˜μ •
junye0l Oct 18, 2025
039756d
style: ν”Œλ‘œνŒ… λ²„νŠΌ 크기 μˆ˜μ • #218
suuuuya Oct 18, 2025
d9c3c38
[#231] μƒμ„ΈνŽ˜μ΄μ§€ μˆ˜μ • 및 ν”„λ‘œμ νŠΈ 기초 μ„ΈνŒ… μŠ€ν† λ¦¬λΆ 파일 μΆ”κ°€
junye0l Oct 18, 2025
44496f2
style: break-words μΆ”κ°€ #218
suuuuya Oct 18, 2025
e3fd4e6
style: 와인 등둝/μˆ˜μ • λͺ¨λ‹¬ μŠ€νƒ€μΌ μˆ˜μ • #218
suuuuya Oct 18, 2025
277297f
style: 리뷰 등둝/μˆ˜μ • λͺ¨λ‹¬ μŠ€νƒ€μΌ μˆ˜μ • #218
suuuuya Oct 18, 2025
bcdd04e
Merge branch 'develop' into style/ui-style-check
suuuuya Oct 18, 2025
e489a3f
fix: 둜고 h1 νƒœκ·Έ μ‚­μ œ #218
suuuuya Oct 19, 2025
362996c
feat: 둜그인 이전 νŽ˜μ΄μ§€λ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈ κΈ°λŠ₯ μΆ”κ°€
huuitae Oct 19, 2025
b365bda
Merge branch 'develop' of https://github.com/Team-3-2/Wine into develop
huuitae Oct 19, 2025
2ef998f
Merge branch 'develop' into feature/QA
huuitae Oct 19, 2025
333fa7e
Merge pull request #233 from Team-3-2/style/ui-style-check
suuuuya Oct 20, 2025
fe19d82
Merge branch 'develop' of https://github.com/Team-3-2/Wine into develop
huuitae Oct 20, 2025
ba56894
Merge branch 'develop' into feature/QA
huuitae Oct 20, 2025
bc77ae4
Merge pull request #235 from Team-3-2/feature/QA
huuitae Oct 20, 2025
e9e3df8
style: λͺ¨λ‹¬ νŽ˜μ΄μ§€ κ°€μš΄λ° μ •λ ¬ 및 리뷰 μˆ˜μ • νŽ˜μ΄μ§€ λˆ„λ½λœ μŠ€νƒ€μΌ μΆ”κ°€ #218
suuuuya Oct 20, 2025
8de9630
Merge branch 'develop' into style/ui-style-check
suuuuya Oct 20, 2025
81ff7c1
Merge pull request #236 from Team-3-2/style/ui-style-check
wlrnjs Oct 20, 2025
152ad0e
Update team responsibilities in README
wlrnjs Oct 20, 2025
b3185c1
✨ Feat: README νŽ˜μ΄μ§€ μž‘μ„±(μž„μ‹œμ €μž₯)
suuuuya Oct 20, 2025
6674d16
docs: λ¦¬λ“œλ―Έ μž‘μ„±μ€‘ μž„μ‹œμ €μž₯
suuuuya Oct 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 59 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,64 @@
# Wine
(ν”„λ‘œμ νŠΈ μ„€λͺ…)

## λͺ©ν‘œ
- λͺ©ν‘œ: ν”„λ‘œμ νŠΈ μ™„μ„±

## νŒ€μ› 정보 및 μ—­ν• 
- μ€€μ—΄: νŒ€ 리딩, λžœλ”© νŽ˜μ΄μ§€, 와인 상세 νŽ˜μ΄μ§€
- νœ˜νƒœ: 둜그인, νšŒμ›κ°€μž…, 리뷰 남기기/와인 λ“±λ‘ν•˜κΈ° λͺ¨λ‹¬
- μ—°μˆ˜: λ§ˆμ΄νŽ˜μ΄μ§€(λ‚΄κ°€ λ“±λ‘ν•œ 와인), notion λ¬Έμ„œν™”
- μ§€κΆŒ: λ§ˆμ΄νŽ˜μ΄μ§€(λ‚΄κ°€ μ“΄ ν›„κΈ°)
- μ •ν›ˆ: 와인 λͺ©λ‘ νŽ˜μ΄μ§€

> [Wiki λ°”λ‘œκ°€κΈ°](https://github.com/Team-3-2/Wine/wiki)

## Core Time
- 데일리 슀크럼
- μ›”μš”μΌ: μ˜€ν›„ 3μ‹œ
- ν™”μš”μΌ μΌμš”μΌ: μ˜€ν›„ 1μ‹œ 30λΆ„ (20~30λΆ„ μ§„ν–‰)
- 집쀑 μ½”λ”© (λͺ¨κ°μ½”)
- 9:00 ~ 18:00 (zep ν™œμš©)

> [Wiki λ°”λ‘œκ°€κΈ°](https://github.com/Team-3-2/Wine/wiki)
# 🍷 WHYNE

### WHYNE은 μ‚¬μš©μžκ°€ λ‹€μ–‘ν•œ 와인 리뷰λ₯Ό ν™•μΈν•˜κ³ , ꡬ맀 μ—¬λΆ€λ₯Ό μ‰½κ²Œ νŒλ‹¨ν•  수 μžˆλŠ” 와인 리뷰 ν”Œλž«νΌμž…λ‹ˆλ‹€.

<img width="1800" height="600" alt="image" src="https://github.com/user-attachments/assets/cd2abace-5bfc-4243-ad41-b7944bbd4f45" />

<br>

## 🎯 λͺ©ν‘œ

> #### μ£Όμ–΄μ§„ μš”κ΅¬μ‚¬ν•­μ„ μΆ©μ‘±ν•˜λŠ” 것을 λ„˜μ–΄, 경쟁λ ₯ μžˆλŠ” νŠΉλ³„ν•œ UI / UXλ₯Ό λ„μž…ν•˜κ³ , μ‚¬μš©μžμ—κ²Œ 졜적의 와인 선택 κ²½ν—˜μ„ μ œκ³΅ν•˜λŠ” 것

<br>

## πŸ‘₯ νŒ€ μ†Œκ°œ

<span align="right">

πŸ”— [Wiki λ°”λ‘œκ°€κΈ°](https://github.com/Team-3-2/Wine/wiki)

</span>

<div align="center">

|νŒ€μž₯ |νŒ€μ› |νŒ€μ› |νŒ€μ› |
|:---:|:---:|:---:|:---:|
| <div style="border: 1px solid #ddd; border-radius: 10px; padding: 20px; background: white;"><img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Animals/Dove.png" width="80" height="80" alt="πŸ•ŠοΈ"/><br><b><a href="https://github.com/junye0l">κΉ€μ€€μ—΄</a></b><br><img src="https://img.shields.io/badge/ISTJ-50C878?style=for-the-badge&logoColor=white" alt="ISTJ"/><br><code>FE</code></div> | <div style="border: 1px solid #ddd; border-radius: 10px; padding: 20px; background: white;"><img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Animals/Bat.png" width="80" height="80" alt="πŸ¦‡"/><br><b><a href="https://github.com/wlrnjs">μ„œμ§€κΆŒ</a></b><br><img src="https://img.shields.io/badge/INTJ-5C0091?style=for-the-badge&logoColor=white" alt="INTJ"/><br><code>FE</code></div> | <div style="border: 1px solid #ddd; border-radius: 10px; padding: 20px; background: white;"><img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Animals/Baby%20Chick.png" width="80" height="80" alt="🐣"/><br><b><a href="https://github.com/suuuuya">μ΄μ—°μˆ˜</a></b><br><img src="https://img.shields.io/badge/INFP-9B59B6?style=for-the-badge&logoColor=white" alt="INFP"/><br><code>FE</code></div> | <div style="border: 1px solid #ddd; border-radius: 10px; padding: 20px; background: white;"><img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Animals/Black%20Cat.png" width="80" height="80" alt="πŸˆβ€β¬›"/><br><b><a href="https://github.com/Imhwitae">ν™©νœ˜νƒœ</a></b><br><img src="https://img.shields.io/badge/ISTJ-E74C3C?style=for-the-badge&logoColor=white" alt="ISTJ"/><br><code>FE</code></div> |

</div>

<br>

## ⏰ Core Time

<span align="right">

πŸ”— [Wiki λ°”λ‘œκ°€κΈ°](https://github.com/Team-3-2/Wine/wiki)

</span>

> μ›ν™œν•œ μ†Œν†΅μ„ μœ„ν•΄ 맀일 μ§„ν–‰ν•˜λ©°, 의미 μ—†λŠ” μ‹œκ°„μ΄ λ˜μ§€ μ•Šλ„λ‘ **λ…Έμ…˜ λ¬Έμ„œν™”**둜 κΈ°λ‘ν•©λ‹ˆλ‹€.

#### πŸ—“οΈ μ‹œκ°„ν‘œ

| μš”μΌ | μ‹œκ°„ |
| :-------------: | :-------: |
| μ›”μš”μΌ | **15:00** |
| ν™”μš”μΌ ~ μΌμš”μΌ | **13:30** |

<br>

## Branch μ „λž΅

- `main` β†’ 배포
- `develop` β†’ 톡합 브랜치
- `feature/*`, `design/*`, `chore/*` β†’ μž‘μ—… 브랜치 β†’ PR β†’ develop β†’ main

> [Wiki λ°”λ‘œκ°€κΈ°](https://github.com/Team-3-2/Wine/wiki/%EB%B8%8C%EB%9E%9C%EC%B9%98-%EC%BB%A8%EB%B2%A4%EC%85%98)

## 기술 μŠ€νƒ

- Next.js, React, TypeScript
- Tailwind CSS
- Storybook
Expand All @@ -39,12 +68,14 @@
> [Wiki λ°”λ‘œκ°€κΈ°](https://github.com/Team-3-2/Wine/wiki/%EA%B8%B0%EC%88%A0-%EC%8A%A4%ED%83%9D)

## κΉƒν—ˆλΈŒ μ•‘μ…˜
- Vercel 배포
- Chromatic으둜 Storybook 배포 (develop κΈ°μ€€)

- Vercel 배포
- Chromatic으둜 Storybook 배포 (develop κΈ°μ€€)

> [Wiki λ°”λ‘œκ°€κΈ°](https://github.com/Team-3-2/Wine/wiki/%EA%B9%83%ED%97%88%EB%B8%8C-%EC%95%A1%EC%85%98)

## ν”„λ‘œμ νŠΈ 관리

- README: ν”„λ‘œμ νŠΈ κ°œμš” / 기술 μŠ€νƒ / μ‹€ν–‰ 방법
- Wiki: μ„ΈλΆ€ κ·œμΉ™, κ°€μ΄λ“œ λ¬Έμ„œ, 브랜치 λ£°
- Notion: 회의둝, λ©˜ν† λ§ ν”Όλ“œλ°±, μ°Έκ³  자료
Expand All @@ -53,6 +84,7 @@
> [Wiki λ°”λ‘œκ°€κΈ°](https://github.com/Team-3-2/Wine/wiki/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EA%B4%80%EB%A6%AC)

## μ‹€ν–‰ 방법

```bash
# νŒ¨ν‚€μ§€ μ„€μΉ˜
npm install
Expand Down Expand Up @@ -81,9 +113,11 @@ src
┣ types # μ „μ—­ νƒ€μž… μ •μ˜ (TypeScript μΈν„°νŽ˜μ΄μŠ€, νƒ€μž…)
β”— utils # 곡톡 μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜
```

> [Wiki λ°”λ‘œκ°€κΈ°](https://github.com/Team-3-2/Wine/wiki/%ED%8F%B4%EB%8D%94-%EA%B5%AC%EC%A1%B0)

## λ°”λ‘œκ°€κΈ°

- [배포 λ°”λ‘œκ°€κΈ°](https://google.com/)
- [μŠ€ν† λ¦¬λΆ λ°”λ‘œκ°€κΈ°](https://68d3998e0b054d1207706cbb-tzevsxkvcq.chromatic.com/?path=/docs/my-profile-accountitem--docs)
- [Wiki λ°”λ‘œκ°€κΈ°](https://github.com/Team-3-2/Wine/wiki)
6 changes: 4 additions & 2 deletions src/api/auth/login.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use server";

import { cookies } from "next/headers";
import { redirect } from "next/navigation";

const opts = {
maxAge: 60 * 60 * 24 * 30,
Expand All @@ -12,6 +13,7 @@ const opts = {
const login = async (prevState: any, formData: FormData) => {
const email = formData.get("email");
const password = formData.get("password");
const redirectUrl = formData.get("redirect");

if (!email || !password)
return { isError: true, message: "이메일 λ˜λŠ” λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ„Έμš”." };
Expand All @@ -36,9 +38,9 @@ const login = async (prevState: any, formData: FormData) => {
cookieStore.set("refreshToken", `${data.refreshToken}`);
cookieStore.set("login_type", "basic", opts);

return { isError: false, data: data };
redirect(redirectUrl as string);
} catch (error) {
console.error(error);
throw error;
}
};

Expand Down
2 changes: 1 addition & 1 deletion src/api/my-profile/get-user-review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ export default async function getUserReview({
const res = await instance.get(url);
return {
...res.data,
list: [...res.data.list].reverse(),
list: [...res.data.list],
};
}
2 changes: 1 addition & 1 deletion src/api/user/get-user-wines.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const getUserWines = async ({ cursor, limit }: GetUserWinesData) => {

return {
...res.data,
list: [...res.data.list].reverse(),
list: [...res.data.list],
};
};

Expand Down
7 changes: 5 additions & 2 deletions src/app/(auth)/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ import { ReactNode } from "react";

const Layout = ({ children }: { children: Readonly<ReactNode> }) => {
return (
<main aria-labelledby="νšŒμ›κ°€μž… μ˜μ—­">
<div className="flex-center min-h-screen bg-gray-200">{children}</div>
<main
aria-labelledby="νšŒμ›κ°€μž… μ˜μ—­"
className="bg-gray-200 bg-[url('/images/common/bg-main.png')] bg-cover bg-no-repeat"
>
<div className="flex-center min-h-screen py-[50px]">{children}</div>
</main>
);
};
Expand Down
8 changes: 8 additions & 0 deletions src/app/(auth)/login/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { useToast } from "@/hooks/use-toast";
import { useRememberId } from "../_hooks/use-remember-id";
import { getCookie, setCookie } from "cookies-next";
import RecentLoginBadge from "../_components/recent-login-badge/recent-login-badge";
import { useSearchParams } from "next/navigation";

interface LoginFormData {
email: string;
Expand All @@ -36,6 +37,7 @@ const Page = () => {
const [loginType, setLoginType] = useState<string | null>(null);
const [state, formAction, isPending] = useActionState(login, null);
const { checked, setChecked, initialId, opts } = useRememberId();
const searchParams = useSearchParams();

const email = watch("email");

Expand Down Expand Up @@ -119,6 +121,12 @@ const Page = () => {
},
})}
/>
<input
className="hidden"
type="hidden"
name="redirect"
value={searchParams.get("redirect") || "/"}
/>
<RememberId checked={checked} setChecked={setChecked} />
</div>
<div className="relative w-full">
Expand Down
Loading