Skip to content
Merged
Changes from all commits
Commits
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
185 changes: 90 additions & 95 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,72 +25,94 @@

---

# ๐Ÿš„ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ ๋ฐœ์ƒํ–ˆ๋˜ ์ฃผ์š” ์ด์Šˆ์™€ ํ•ด๊ฒฐ ๊ณผ์ •์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

<details>
<summary><strong>์‹ค์‹œ๊ฐ„ ๋งค์นญ ์ค‘ ์ค‘๋ณต ์ ‘์†/๋ถ€์ • ๋กœ๊ทธ์ธ ์ด์Šˆ</strong></summary>
<img width="1857" height="1261" alt="image" src="https://github.com/user-attachments/assets/2ea8a8c5-d877-42b9-8d3b-49bd849472b0" />

- **๋ฌธ์ œ์ :**
๋™์ผ ๊ณ„์ •์˜ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ ๋™์‹œ ์ ‘์† ์‹œ ๊ฑฐ๋ž˜ ์ •๋ณด ๊ผฌ์ž„, ๋ถ€์ • ๋กœ๊ทธ์ธ ์œ„ํ—˜
๋˜, ์‹ค์‹œ๊ฐ„ ๋งค์นญ(match)์—์„œ ๊ฑฐ๋ž˜ ์ง„ํ–‰(match/trading) ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด๋„ ์†Œ์ผ“์ด ๋Š์–ด์ง€์ง€ ์•Š์•„์•ผ ํ•จ.
๋ฐ˜๋Œ€๋กœ match ํŽ˜์ด์ง€๋ฅผ ๋ฒ—์–ด๋‚ฌ๋‹ค ๋Œ์•„์˜ค๋ฉด ์†Œ์ผ“์„ ์ •์ƒ์ ์œผ๋กœ ์ƒˆ๋กœ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ

- **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:**
- **์†Œ์ผ“ ์„ธ์…˜ ๊ด€๋ฆฌ**:
- `useGlobalSocket.ts`์—์„œ ์†Œ์ผ“ ์ƒํƒœ๋ฅผ ์ „์—ญ ๊ด€๋ฆฌ
- ํŽ˜์ด์ง€ ์ด๋™์— ๋”ฐ๋ผ ์†Œ์ผ“ ์—ฐ๊ฒฐ ์œ ์ง€/ํ•ด์ œ ์ œ์–ด
- `sessionStorage`๋ฅผ ํ™œ์šฉ, ์‚ฌ์šฉ์ž๊ฐ€ match โ†’ match/trading ๋“ฑ ๋‚ด๋ถ€ ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์†Œ์ผ“์„ ์œ ์ง€
- match์—์„œ ๋ฒ—์–ด๋‚˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ ์ง„์ž… ์‹œ ์†Œ์ผ“์„ ์ ์ ˆํžˆ ๋ฆฌํ”„๋ ˆ์‹œํ•˜๋„๋ก ์„ค๊ณ„ (์˜ˆ: ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ true/false๋กœ ์ฒดํฌ)

```ts
// ๊ฐ„๋žต ์˜ˆ์‹œ (pseudo)
// useGlobalSocket.ts ๋‚ด๋ถ€
useEffect(() => {
if (sessionStorage.getItem('hasVisited')) {
// ์†Œ์ผ“ ์—ฐ๊ฒฐ ์œ ์ง€
} else {
// ์†Œ์ผ“ ์ƒˆ๋กœ ์—ฐ๊ฒฐ
sessionStorage.setItem('hasVisited', 'true');
}
// ํŽ˜์ด์ง€ ๋ฒ—์–ด๋‚  ๋•Œ
return () => {
sessionStorage.setItem('hasVisited', 'false');
// ์†Œ์ผ“ ์—ฐ๊ฒฐ ํ•ด์ œ
};
}, [pathname]);
```
- **๊ฒฐ๊ณผ:**

์‹ค์ œ ์„œ๋น„์Šค์—์„œ ๋™์‹œ ์ ‘์†/๋ถ€์ • ๋กœ๊ทธ์ธ ์‹œ๋„๊ฐ€ ๋ชจ๋‘ ์ฐจ๋‹จ๋จ

๊ฑฐ๋ž˜ ๋‹จ๊ณ„(match โ†’ match/trading) ํŽ˜์ด์ง€ ์ด๋™ ์‹œ์—๋„ ์†Œ์ผ“์ด ์•ˆ์ „ํ•˜๊ฒŒ ์œ ์ง€

๋ถˆํ•„์š”ํ•œ ์žฌ์—ฐ๊ฒฐ/๋Š๊น€ ์—†์ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ตฌํ˜„๋จ

</details>






</details> <details> <summary><strong>API ํ˜ธ์ถœ ๋”๋ธ”๋ง ํ˜„์ƒ</strong></summary>

- **๋ฌธ์ œ์ :**
useEffect์˜ ๊ฒฝ์šฐ Dev ํ™˜๊ฒฝ์—์„œ๋Š” ๋‘๋ฒˆ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋‚˜ useEffect๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€์•Š์€ ์ƒํ™ฉ์ด๋ผ ์›์ธ์„ ํŒŒ์•…ํ•ด๋ณด๋‹ˆ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์—ฌ๋Ÿฌ ์ƒํ™ฉ์— ๋“ฑ๋กํ•ด๋‘์–ด ์ด๋ฒคํŠธ๊ฐ€ ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ๋ฐœ๋™๋œ ์ƒํ™ฉ

- **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:**
ํ•œ ํ™”๋ฉด์—์„œ ์ด๋ฏธ ๋ฐœ์†ก๋œ ์ „์ ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จ์„ ํ•˜๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋ฐœ์ƒ๋˜์ž๋งˆ์ž ์ง€์šฐ๋Š” ๋“ฑ์˜ ์กฐ์น˜๋กœ ํ•ด๊ฒฐ

</details>

</details> <details> <summary><strong>Oauth ๋กœ๊ทธ์ธ ์„œ๋น„์Šค ๊ตฌ์ถ•</strong></summary>

[+Oauth ๋กœ๊ทธ์ธ ์„œ๋น„์Šค ๊ตฌ์ถ•](https://www.notion.so/2224a475c7f78024ad24ebbf67ed515d?v=2224a475c7f780bf8a45000c850aa9b3&p=23c4a475c7f7807b87b0fa031cc11a3a&pm=s)

</details>

</details> <details> <summary><strong> ๋ชจ๋ฐ”์ผ ๋ฉ”๋‰ด ๋‚ด Link ํด๋ฆญ ๋ถˆ๊ฐ€ ์ด์Šˆ (Next.js + Headless UI)</strong></summary>
Comment on lines +80 to +96

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์„น์…˜์˜ HTML ๊ตฌ์กฐ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ <details> ์š”์†Œ ์•ž์— ๋ถˆํ•„์š”ํ•œ </details> ๋‹ซ๋Š” ํƒœ๊ทธ๊ฐ€ ์žˆ์–ด ๋งˆํฌ๋‹ค์šด ๋ Œ๋”๋ง์ด ๊นจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ํ•ญ๋ชฉ์ด ๋…๋ฆฝ์ ์ธ <details> ๋ธ”๋ก์œผ๋กœ ๊ฐ์‹ธ์ง€๋„๋ก ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Suggested change
</details> <details> <summary><strong>API ํ˜ธ์ถœ ๋”๋ธ”๋ง ํ˜„์ƒ</strong></summary>
- **๋ฌธ์ œ์ :**
useEffect์˜ ๊ฒฝ์šฐ Dev ํ™˜๊ฒฝ์—์„œ๋Š” ๋‘๋ฒˆ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋‚˜ useEffect๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€์•Š์€ ์ƒํ™ฉ์ด๋ผ ์›์ธ์„ ํŒŒ์•…ํ•ด๋ณด๋‹ˆ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์—ฌ๋Ÿฌ ์ƒํ™ฉ์— ๋“ฑ๋กํ•ด๋‘์–ด ์ด๋ฒคํŠธ๊ฐ€ ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ๋ฐœ๋™๋œ ์ƒํ™ฉ
- **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:**
ํ•œ ํ™”๋ฉด์—์„œ ์ด๋ฏธ ๋ฐœ์†ก๋œ ์ „์ ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จ์„ ํ•˜๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋ฐœ์ƒ๋˜์ž๋งˆ์ž ์ง€์šฐ๋Š” ๋“ฑ์˜ ์กฐ์น˜๋กœ ํ•ด๊ฒฐ
</details>
</details> <details> <summary><strong>Oauth ๋กœ๊ทธ์ธ ์„œ๋น„์Šค ๊ตฌ์ถ•</strong></summary>
[+Oauth ๋กœ๊ทธ์ธ ์„œ๋น„์Šค ๊ตฌ์ถ•](https://www.notion.so/2224a475c7f78024ad24ebbf67ed515d?v=2224a475c7f780bf8a45000c850aa9b3&p=23c4a475c7f7807b87b0fa031cc11a3a&pm=s)
</details>
</details> <details> <summary><strong> ๋ชจ๋ฐ”์ผ ๋ฉ”๋‰ด ๋‚ด Link ํด๋ฆญ ๋ถˆ๊ฐ€ ์ด์Šˆ (Next.js + Headless UI)</strong></summary>
<details> <summary><strong>API ํ˜ธ์ถœ ๋”๋ธ”๋ง ํ˜„์ƒ</strong></summary>
- **๋ฌธ์ œ์ :**
useEffect์˜ ๊ฒฝ์šฐ Dev ํ™˜๊ฒฝ์—์„œ๋Š” ๋‘๋ฒˆ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋‚˜ useEffect๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€์•Š์€ ์ƒํ™ฉ์ด๋ผ ์›์ธ์„ ํŒŒ์•…ํ•ด๋ณด๋‹ˆ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์—ฌ๋Ÿฌ ์ƒํ™ฉ์— ๋“ฑ๋กํ•ด๋‘์–ด ์ด๋ฒคํŠธ๊ฐ€ ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ๋ฐœ๋™๋œ ์ƒํ™ฉ
- **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:**
ํ•œ ํ™”๋ฉด์—์„œ ์ด๋ฏธ ๋ฐœ์†ก๋œ ์ „์ ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จ์„ ํ•˜๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋ฐœ์ƒ๋˜์ž๋งˆ์ž ์ง€์šฐ๋Š” ๋“ฑ์˜ ์กฐ์น˜๋กœ ํ•ด๊ฒฐ
</details>
<details> <summary><strong>Oauth ๋กœ๊ทธ์ธ ์„œ๋น„์Šค ๊ตฌ์ถ•</strong></summary>
[+Oauth ๋กœ๊ทธ์ธ ์„œ๋น„์Šค ๊ตฌ์ถ•](https://www.notion.so/2224a475c7f78024ad24ebbf67ed515d?v=2224a475c7f780bf8a45000c850aa9b3&p=23c4a475c7f7807b87b0fa031cc11a3a&pm=s)
</details>
<details> <summary><strong> ๋ชจ๋ฐ”์ผ ๋ฉ”๋‰ด ๋‚ด Link ํด๋ฆญ ๋ถˆ๊ฐ€ ์ด์Šˆ (Next.js + Headless UI)</strong></summary>


- **๋ฌธ์ œ ๋ฐœ์ƒ**: ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ `<Dialog>`๋กœ ๊ตฌํ˜„ํ•œ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด ๋‚ด `<Link>` ์ปดํฌ๋„ŒํŠธ๊ฐ€ **๋ Œ๋”๋ง์€ ๋˜์ง€๋งŒ ํด๋ฆญ์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ**๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
- **๋ถ„์„ ๊ณผ์ •**:
- z-index ๋ฐ stacking context ์กฐ์ • โ†’ ์‹คํŒจ
- ์˜ค๋ฒ„๋ ˆ์ด ๋ ˆ์ด์–ด ์ถฉ๋Œ ํ™•์ธ โ†’ ์‹คํŒจ
- `<Link>` ๋Œ€์‹  `<button>`์œผ๋กœ ๋Œ€์ฒด ํ…Œ์ŠคํŠธ โ†’ ์„ฑ๊ณต
- **์›์ธ ํŒŒ์•…**:
- Headless UI์˜ `<Dialog>`์˜ **ํฌ์ปค์Šค ํŠธ๋ž˜ํ•‘(Focus Trap)** ๊ธฐ๋Šฅ์ด Next.js์˜ `<Link>` ๋‚ด๋น„๊ฒŒ์ด์…˜์„ **๊ฐ€๋กœ๋ง‰๋Š” ์ถฉ๋Œ**์ด ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.
- **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•**:
- `<Link>` ๋Œ€์‹  `button` ํƒœ๊ทธ ์‚ฌ์šฉ
- `onClick` ํ•ธ๋“ค๋Ÿฌ ๋‚ด๋ถ€์—์„œ `router.push()`๋กœ **ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌ**
- **์˜ˆ์‹œ ์ฝ”๋“œ**:
```tsx
๊ธฐ์กด ์ฝ”๋“œ: <Link href="/mypage">๋งˆ์ดํŽ˜์ด์ง€</Link>
โ†“
์ˆ˜์ • ์ฝ”๋“œ: <button onClick={() => router.push('/mypage')}>๋งˆ์ดํŽ˜์ด์ง€</button>
```


# ๐Ÿš„ ์ฃผ์š” ๊ธฐ๋Šฅ

## ํ™ˆ ํ™”๋ฉด

![2025-08-0714-53-14-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/9ef81647-4677-4267-9436-361011f8dc25)



## ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…
### ๋กœ๊ทธ์ธ

<img width="1644" height="1346" alt="image" src="https://github.com/user-attachments/assets/7dda8806-947e-4f7a-94b0-20335ce34c19" />

### ํšŒ์›๊ฐ€์ž…

<img width="3572" height="1880" alt="image" src="https://github.com/user-attachments/assets/21a15f25-74ac-4372-b652-bf44cd369fef" />

## ๊ตฌ๋งค๊ธ€/ํŒ๋งค๊ธ€


![12d12d1zx23](https://github.com/user-attachments/assets/1a02a759-205d-497f-9db5-323c9b686453)


## ๊ตฌ๋งค๊ธ€/ํŒ๋งค๊ธ€ ๊ฑฐ๋ž˜

![ezgif com-video-to-gif-converter (6)](https://github.com/user-attachments/assets/718a5c2f-fb5f-414f-9151-6b9b2a6580c6)

## ๋งˆ์ดํŽ˜์ด์ง€

<img width="2459" height="1252" alt="image" src="https://github.com/user-attachments/assets/9072c23b-6a62-4286-86a7-73a00111e271" />


<img width="2458" height="1137" alt="image" src="https://github.com/user-attachments/assets/47122926-3914-4ef8-86a2-a6e5ac50d690" />


## ์†Œ์…œ ๋กœ๊ทธ์ธ ์—ฐ๋™

![2025-08-0700-13-20-ezgif com-censor](https://github.com/user-attachments/assets/d30ee0ac-762c-4b2b-a462-888b01e5d97f)

## ๊ฑฐ๋ž˜ ๋‚ด์—ญ

![ff1123-ezgif com-video-to-gif-converter](https://github.com/user-attachments/assets/8bfb3c24-d595-4cb8-913c-9b0aede3f632)


## ์‹ค์‹œ๊ฐ„ ๋งค์นญ

![2025-08-0715-38-31-ezgif com-optimize](https://github.com/user-attachments/assets/c9b43660-a638-45a2-9efd-88696b34515e)

![2025-08-0716-24-30-ezgif com-optimize](https://github.com/user-attachments/assets/42dfce22-349a-4c7e-a6d6-96a1da17b147)

## ๋ธ”๋กœ๊ทธ (์ฝ์„๊ฑฐ๋ฆฌ)

![ezgif com-video-to-gif-converter (9)](https://github.com/user-attachments/assets/a65bf58e-79cf-4965-82a8-9495637323a2)


## ์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€ ๋Œ€์‰ฌ๋ณด๋“œ ๋ฐ ์‹ ๊ณ ๊ด€๋ฆฌ
![ezgif com-video-to-gif-converter (7)](https://github.com/user-attachments/assets/750f4282-1575-4678-bcff-bc965557eb04)


## ์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€ ๋ธ”๋กœ๊ทธ๊ธ€ ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ

![ezgif com-speed (1)](https://github.com/user-attachments/assets/b1f06775-84b7-4c9f-a637-68631ee6c57a)


</details>


# ๐Ÿ—‚๏ธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ
Expand Down Expand Up @@ -142,9 +164,6 @@ NEXT_PUBLIC_API_URL={๋ฐฑ์—”๋“œ ์„œ๋ฒ„ URL}

## ๐Ÿ“š Tech Stack

ํ˜‘์—… ํˆด๋„ ์ ์–ด๋ณด๊ธฐ (์ง€๋ผ,ํ”ผ๊ทธ๋งˆ ๋“ฑ๋“ฑ)


### ๐Ÿ’ป FE Development

[![My Skills](https://skillicons.dev/icons?i=nextjs,ts,tailwind,react)](https://skillicons.dev)
Expand All @@ -153,18 +172,6 @@ NEXT_PUBLIC_API_URL={๋ฐฑ์—”๋“œ ์„œ๋ฒ„ URL}
์—์ž์ผ ๋ฐฉ๋ฒ•๋ก  ๋„์ž…

#### ์ด๊ธฐ๊ฐ„ 2025.6.30 ~ 2025.8.8 (39 days)
## ๐Ÿ“… ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

| ๊ธฐ๊ฐ„ | ์ฃผ์ฐจ | ์ง„ํ–‰ ๋‚ด์šฉ |
|---------------------|--------------|------------------------|
| 2025.6.30 ~ 2025.8.8 | ์ „์ฒด (39์ผ) | ํ”„๋กœ์ ํŠธ ์ „์ฒด ๊ธฐ๊ฐ„ |
| 2025.6.30 ~ 2025.7.6 | 1์ฃผ์ฐจ | |
| 2025.7.7 ~ 2025.7.13 | 2์ฃผ์ฐจ | |
| 2025.7.14 ~ 2025.7.20 | 3์ฃผ์ฐจ | |
| 2025.7.21 ~ 2025.7.27 | 4์ฃผ์ฐจ | |
| 2025.7.28 ~ 2025.8.4 | 5์ฃผ์ฐจ | |
| 2025.8.5 ~ 2025.8.7 | 6์ฃผ์ฐจ | |



# ๐Ÿ‘ฉโ€๐Ÿ’ป ํŒ€์›
Expand All @@ -173,25 +180,13 @@ NEXT_PUBLIC_API_URL={๋ฐฑ์—”๋“œ ์„œ๋ฒ„ URL}
<table>
<tbody>
<tr>
<td align="center"><a href="https://github.com/hyonun321"><img src="https://avatars.githubusercontent.com/u/196058650?v=4" width="120px;" alt=""/><br /><b>๊น€ํ˜„ํ›ˆ</b></a><br /><p>๐Ÿ‘‘ํŒ€์žฅ</p></td>
<td align="center"><a href="https://github.com/yshls"><img src="https://avatars.githubusercontent.com/u/97035336?v=4" width="120px;" alt=""/><br /><b>์–‘์„ธํ˜„</b></a><br /><p>๊ฐœ๋ฐœ</p></td>
<td align="center"><a href="https://github.com/seungwoo505"><img src="https://avatars.githubusercontent.com/u/51819005?v=4" width="120px;" alt=""/><br /><b>์ด์Šน์šฐ</b></a><br /><p>๊ฐœ๋ฐœ</p></td>
<td align="center"><a href="https://github.com/hyonun321"><img src="https://avatars.githubusercontent.com/u/196058650?v=4" width="120px;" alt=""/><br /><b>๊น€ํ˜„ํ›ˆ</b></a><br /><p>๐Ÿ‘‘๊ฑฐ๋ž˜(์ผ๋ฐ˜ ๊ฑฐ๋ž˜, ์‹ค์‹œ๊ฐ„ ๊ฑฐ๋ž˜), ๋ธ”๋กœ๊ทธ</p></td>
<td align="center"><a href="https://github.com/yshls"><img src="https://avatars.githubusercontent.com/u/97035336?v=4" width="120px;" alt=""/><br /><b>์–‘์„ธํ˜„</b></a><br /><p>๋ฉ”์ธ ํŽ˜์ด์ง€, ๋ธ”๋กœ๊ทธ, ๊ด€๋ฆฌ์ž</p></td>
<td align="center"><a href="https://github.com/seungwoo505"><img src="https://avatars.githubusercontent.com/u/51819005?v=4" width="120px;" alt=""/><br /><b>์ด์Šน์šฐ</b></a><br /><p>๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…, ๋งˆ์ดํŽ˜์ด์ง€, ๊ฒฐ์ œ, SEO, ์ตœ์ ํ™”</p></td>
</tr>
</tbody>
</table>

## BE
<table>
<tbody>
<tr>
<td align="center"><a href="https://github.com/iju42829"><img src="https://avatars.githubusercontent.com/u/116072376?v=4" width="120px;" alt=""/><br /><b>์ด์žฌ์œค</b></a><br /><p>๊ฐœ๋ฐœ</p></td>
<td align="center"><a href="https://github.com/Iamcalmdown"><img src="https://avatars.githubusercontent.com/u/144317474?v=4" width="120px;" alt=""/><br /><b>์ •๋™ํ˜„</b></a><br /><p>๊ฐœ๋ฐœ</p></td>
<td align="center"><a href="https://github.com/mike7643"><img src="https://avatars.githubusercontent.com/u/121170730?v=4" width="120px;" alt=""/><br /><b>์ •์œ ๋ฏผ</b></a><br /><p>๊ฐœ๋ฐœ</p></td>
<td align="center"><a href="https://github.com/seokjuun"><img src="https://avatars.githubusercontent.com/u/45346977?v=4" width="120px;" alt=""/><br /><b>ํ™์„์ค€</b></a><br /><p>๊ฐœ๋ฐœ</p></td>
</tr>
</tbody>
</table>


# ๐ŸŽฏ ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜

Expand Down