Skip to content
Merged
Show file tree
Hide file tree
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
122 changes: 60 additions & 62 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,62 @@
# Thejulge

λ…Έμ…˜ ν˜‘μ—… λ¬Έμ„œλ₯Ό λ°”νƒ•μœΌλ‘œ μ •λ¦¬ν•œ **쀑급 ν”„λ‘œμ νŠΈ README**μž…λ‹ˆλ‹€.
**사μž₯λ‹˜κ³Ό μ•Œλ°”μƒ κ°„ 단기 일자리 λ§€μΉ­ ν”Œλž«νΌ πŸ’° [더 μ€„κ²Œ](https://thejulge-zeta.vercel.app/) πŸ’°**

- **ν”„λ‘œμ νŠΈ κΈ°κ°„**: 2025-09-29 ~ 2025-10-22 (제좜 마감 23:50)
- **λͺ©ν‘œ**
- μ•Œλ°” 곡고와 κ°€κ²Œ/μ§€μ›μžλ₯Ό μž‡λŠ” μ„œλΉ„μŠ€μ˜ 핡심 ν”Œλ‘œμš°(**νšŒμ›κ°€μž… β†’ ν”„λ‘œν•„ β†’ 곡고 λ“±λ‘Β·μ‘°νšŒ β†’
상세**) μ™„μ„±
- 곡톡 UI μ»΄ν¬λ„ŒνŠΈ(λ²„νŠΌ/인풋/λͺ¨λ‹¬ λ“±) 정리 및 **Storybook λ¬Έμ„œν™”**
- **배포 νŒŒμ΄ν”„λΌμΈ(Vercel)**κ³Ό νŒ€ ν˜‘μ—… νŒŒμ΄ν”„λΌμΈ μ •μ°©
## πŸͺ§ ν”„λ‘œμ νŠΈ μ†Œκ°œ

---
λ”μ€„κ²ŒλŠ” **사μž₯λ‹˜κ³Ό μ•Œλ°”μƒ κ°„μ˜ 단기 일자리 λ§€μΉ­ ν”Œλž«νΌ**μž…λ‹ˆλ‹€. <br> 쑰건에 따라 맞좀 곡고λ₯Ό
μΆ”μ²œν•˜κ³ , 지원뢀터 승인·거절, μ•Œλ¦ΌκΉŒμ§€μ˜ μ „ 과정을 κ²½ν—˜ν•  수 μžˆλŠ” μ›Ήμ„œλΉ„μŠ€μž…λ‹ˆλ‹€.

## πŸ‘₯ νŒ€ & μ—­ν•  (RnR)
## πŸ§‘β€πŸ€β€πŸ§‘ νŒ€μ› μ†Œκ°œ

| <img src="https://avatars.githubusercontent.com/u/59330818" width="150" height="150"/> | <img src="https://avatars.githubusercontent.com/u/213905938" width="150" height="150"/> | <img src="https://avatars.githubusercontent.com/u/214846243" width="150" height="150"/> | <img src="https://avatars.githubusercontent.com/u/214230956" width="150" height="150"/> |
| :------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------: |
| μœ„μ†Œν˜„(νŒ€μž₯)<br/>[@sohyun0](https://github.com/sohyun0) | λ°•μ‹ μ²œ<br/>[@jeschun](https://github.com/jeschun) | μ–‘μž¬μ˜<br/>[@BaeZzi813](https://github.com/BaeZzi813) | μœ μΈν™”<br/>[@gummmmmy0v0](https://github.com/gummmmmy0v0) |

<br>
## πŸƒΒ μ—­ν•  λΆ„λ‹΄

| ꡬ성원 | μ—­ν•  | 곡톡 μž‘μ—… | UI μ»΄ν¬λ„ŒνŠΈ | νŽ˜μ΄μ§€ |
| :---------------: | :----------------: | :----------------------------------------------------: | :-------------------------------------------------------------------: | :-------------------------------------------: |
| **μœ„μ†Œν˜„ (νŒ€μž₯)** | ν”„λ‘œμ νŠΈ 관리/λ°œν‘œ | 초기 ν”„λ‘œμ νŠΈ μ…‹νŒ…, 곡용 λ¬Έμ„œ μž‘μ„± 및 관리(λ…Έμ…˜) | 헀더, ν•„ν„°, λ“œλ‘­λ‹€μš΄, Post, μ»¨ν…Œμ΄λ„ˆ, μŠ€μΌˆλ ˆν†€ UI, 컬러, 폰트, μ•„μ΄μ½˜ | 곡고 리슀트, 곡고 상세 |
| **λ°•μ‹ μ²œ** | FE | λ””μžμΈ 및 κΈ°λŠ₯ QA, 본인 μž‘μ—… κ΄€λ ¨ λ¬Έμ„œ | 인풋, λͺ¨λ‹¬, λ²„νŠΌ | 둜그인, νšŒμ›κ°€μž…, λ‚΄ ν”„λ‘œν•„ 등둝, ν”„λ‘œν•„ 상세 |
| **μ–‘μž¬μ˜** | FE | μ‹œμ—° μ˜μƒ μ€€λΉ„, λ””μžμΈ 및 κΈ°λŠ₯ QA, 본인 μž‘μ—… κ΄€λ ¨ λ¬Έμ„œ | 곡톡 ν”„λ ˆμž„, ν‘Έν„°, ν† μŠ€νŠΈ, νŽ˜μ΄μ§€λ„€μ΄μ…˜ | κ°€κ²Œ 정보 등둝, κ°€κ²Œ 상세 |
| **μœ μΈν™”** | FE | λ°œν‘œ 자료 μ€€λΉ„, λ””μžμΈ 및 κΈ°λŠ₯ QA, 본인 μž‘μ—… κ΄€λ ¨ λ¬Έμ„œ | ν…Œμ΄λΈ”, μ•Œλ¦Ό, μΊ˜λ¦°λ” | κ°€κ²Œ 곡고 등둝, 곡고 상세 |
| ꡬ성원 | μ—­ν•  | μ£Όμš” μž‘μ—… | UI μ»΄ν¬λ„ŒνŠΈ | νŽ˜μ΄μ§€ |
| :--------: | :-------: | :--------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------ |
| **μœ„μ†Œν˜„** | ✨PL / FE | β€’ 초기 ν”„λ‘œμ νŠΈ μ…‹νŒ…<br>β€’ 곡용 λ¬Έμ„œ μž‘μ„± 및 관리(λ…Έμ…˜)<br>β€’ λ°œν‘œμžλ£Œ μž‘μ„± 및 μ˜μƒ μ€€λΉ„ <br>β€’ λ°œν‘œ <br>β€’ μ½”λ“œλ¦¬λ·° | β€’ 컬러, 폰트, μ•„μ΄μ½˜<br>β€’ μŠ€μΌˆλ ˆν†€ UI, Container<br>β€’ ν•„ν„°, λ“œλ‘­λ‹€μš΄<br>β€’ post, notice, 헀더 | β€’ λ©”μΈνŽ˜μ΄μ§€(곡고 리슀트)<br>β€’ 곡고 상세 리슀트<br>β€’ 검색 κ²°κ³Ό νŽ˜μ΄μ§€<br>β€’ 404 νŽ˜μ΄μ§€ |
| **λ°•μ‹ μ²œ** | FE | β€’ README μ΄ˆμ•ˆ μž‘μ„± | β€’ 인풋, λͺ¨λ‹¬, λ²„νŠΌ | β€’ 둜그인<br>β€’ νšŒμ›κ°€μž…<br>β€’ λ‚΄ ν”„λ‘œν•„ 등둝<br>β€’ λ‚΄ ν”„λ‘œν•„ 상세 |
| **μ–‘μž¬μ˜** | FE | β€’ μ‹œμ—° μ˜μƒ μ€€λΉ„<br>β€’ User Flow 섀계<br>β€’ README 정리 | β€’ 곡톡 ν”„λ ˆμž„<br>β€’ ν‘Έν„°, ν† μŠ€νŠΈ<br>β€’ νŽ˜μ΄μ§€λ„€μ΄μ…˜ | β€’ κ°€κ²Œ 정보 등둝<br>β€’ κ°€κ²Œ 정보 상세 |
| **μœ μΈν™”** | FE | β€’ λ°œν‘œ 자료 μ€€λΉ„ | β€’ ν…Œμ΄λΈ”, ν…Œμ΄λΈ” 뱃지<br>β€’ μ•Œλ¦Ό, μΊ˜λ¦°λ”(Datepicker/Timepicker) | β€’ κ°€κ²Œ 곡고 등둝<br>β€’ 곡고 상세 |

---
## πŸ› οΈ 기술 μŠ€νƒ

## 🧰 기술 μŠ€νƒ
### **Frontend**

- **Next.js (React) + TypeScript**
- **Tailwind CSS** (곡톡 컬러/폰트/μœ ν‹Έ)
- **Storybook** (컬러/폰트/μ•„μ΄μ½˜ κ°€μ΄λ“œ)
- **ESLint Β· Prettier**
- **Vercel 배포**
- **GitHub Issues/Projects** Β· 브랜치 μ „λž΅ Β· ν…œν”Œλ¦Ώ
- **Discord/GitHub μ›Ήν›…**
![React](https://img.shields.io/badge/React-61DAFB?style=for-the-badge&logo=react&logoColor=white)
![Next.js](https://img.shields.io/badge/Next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white)
![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge&logo=typescript&logoColor=white)
![TailwindCSS](https://img.shields.io/badge/TailwindCSS-06B6D4?style=for-the-badge&logo=tailwindcss&logoColor=white)
![Axios](https://img.shields.io/badge/Axios-5A29E4?style=for-the-badge&logo=axios&logoColor=white)
![NPM](https://img.shields.io/badge/NPM-CB3837?style=for-the-badge&logo=npm&logoColor=white)

---
### **ν’ˆμ§ˆ 및 λ¬Έμ„œν™”**

![ESLint](https://img.shields.io/badge/ESLint-4B32C3?style=for-the-badge&logo=eslint&logoColor=white)
![Prettier](https://img.shields.io/badge/Prettier-F7B93E?style=for-the-badge&logo=prettier&logoColor=white)
![Storybook](https://img.shields.io/badge/Storybook-FF4785?style=for-the-badge&logo=storybook&logoColor=white)

### **ν˜‘μ—… 및 관리**

![Git](https://img.shields.io/badge/Git-F05032?style=for-the-badge&logo=git&logoColor=white)
![GitHub](https://img.shields.io/badge/GitHub-181717?style=for-the-badge&logo=github&logoColor=white)
![Vercel](https://img.shields.io/badge/Vercel-000000?style=for-the-badge&logo=vercel&logoColor=white)
![Discord](https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white)
![Notion](https://img.shields.io/badge/Notion-000000?style=for-the-badge&logo=notion&logoColor=white)
![Figma](https://img.shields.io/badge/Figma-FF7262?style=for-the-badge&logo=figma&logoColor=white)

## 🧭 ν˜‘μ—… 및 μ½”λ“œ 관리 방식

- GitHub Flow + Fork μ „λž΅μ„ μ‚¬μš©ν•˜μ—¬, develop 브랜치λ₯Ό μ€‘μ‹¬μœΌλ‘œ μ•ˆμ „ν•˜κ²Œ 병합
- Issue / PR ν…œν”Œλ¦Ώ μžλ™ν™”λ‘œ μž‘μ—… λͺ©μ κ³Ό λ³€κ²½ 사항을 λͺ…ν™•νžˆ 기둝
- Gitmoji 컀밋 μ»¨λ²€μ…˜μœΌλ‘œ 컀밋 μ˜λ„λ₯Ό μ‹œκ°μ μœΌλ‘œ ꡬ뢄 (✨ κΈ°λŠ₯ μΆ”κ°€ / πŸ› 버그 μˆ˜μ • / ♻️ λ¦¬νŒ©ν† λ§)
- μ½”λ“œ 리뷰 승인 ν›„ 병합 μ›μΉ™μœΌλ‘œ ν’ˆμ§ˆ 관리
- ESLint / Prettierλ₯Ό ν†΅ν•œ μ½”λ“œ μŠ€νƒ€μΌ 톡일
- Storybook으둜 UI μ»΄ν¬λ„ŒνŠΈ ν…ŒμŠ€νŠΈ 및 λ¬Έμ„œν™”
- κ·Έ μ™Έ ν”„λ‘œμ νŠΈ 관리 λ¬Έμ„œλŠ” [λ…Έμ…˜](https://www.notion.so/26f46d4d7ef780dab24cf1d09dcb611e) μ°Έκ³ 

## ✨ μ£Όμš” κΈ°λŠ₯

Expand All @@ -49,25 +67,11 @@
- **곡톡 UI**: λ²„νŠΌ, 인풋, λͺ¨λ‹¬, 헀더, ν•„ν„°, λ“œλ‘­λ‹€μš΄, ν† μŠ€νŠΈ, νŽ˜μ΄μ§€λ„€μ΄μ…˜, μŠ€μΌˆλ ˆν†€, ν…Œμ΄λΈ”, μ•Œλ¦Ό,
μΊ˜λ¦°λ”

---

## πŸš€ μ›Œν¬ν”Œλ‘œμš° κ°œμš”
## πŸš€ μ›Œν¬ν”Œλ‘œμš°

![μ›Œν¬ν”Œλ‘œμš° λ‹€μ΄μ–΄κ·Έλž¨](src/assets/images/workflow.png)

---

### β–Έ μ„ΈλΆ€ κ³„νš

- 상기 일정과 λ™μΌν•œ λ§ˆμΌμŠ€ν†€ κΈ°μ€€μœΌλ‘œ 각 μž‘μ—…μ„ μ„ΈλΆ„ν™”ν•˜μ—¬ μ§„ν–‰ (퍼블리싱, API 연동, λ¦¬νŒ©ν† λ§,
ν…ŒμŠ€νŠΈ/QA, μ‚°μΆœλ¬Ό μ œμž‘ λ“±)

---

## πŸ—‚οΈ 폴더 ꡬ쑰 (μ΅œμ’… μ»¨λ²€μ…˜ 반영)

> Next.jsλŠ” **Pages Router** 기쀀이며, API λ””λ ‰ν„°λ¦¬λŠ” **λ°±μ—”λ“œ 톡신 헬퍼 μ „μš©**(ν”„λ‘ νŠΈμ—μ„œ μ‚¬μš©)으둜
> μ·¨κΈ‰ν•©λ‹ˆλ‹€.
## πŸ“‚ 폴더 ꡬ쑰

```
src
Expand All @@ -78,35 +82,29 @@ src
β”‚ └── images
β”œβ”€β”€ components
β”‚ β”œβ”€β”€ features
β”‚ β”‚ β”œβ”€β”€ notice
β”‚ β”‚ β”‚ β”œβ”€β”€ components
β”‚ β”‚ β”‚ β”œβ”€β”€ hooks
β”‚ β”‚ β”‚ └── index.ts
β”‚ β”œβ”€β”€ layout
β”‚ └── ui
β”‚ β”œβ”€β”€ dropdown
β”‚ β”‚ β”œβ”€β”€ components
β”‚ β”‚ β”œβ”€β”€ hooks
β”‚ β”‚ └── index.ts
β”œβ”€β”€ constants
β”œβ”€β”€ context
β”œβ”€β”€ hooks
β”œβ”€β”€ lib
β”œβ”€β”€ pages
β”‚ β”œβ”€β”€ employer
β”‚ β”œβ”€β”€ my-profile
β”‚ β”œβ”€β”€ my-shop
β”‚ β”œβ”€β”€ notices
β”‚ β”œβ”€β”€ search.tsx
β”‚ β”œβ”€β”€ login.tsx
β”‚ β”œβ”€β”€ signup.tsx
β”‚ β”œβ”€β”€ index.tsx
β”‚ └── 404.tsx
β”œβ”€β”€ stories
β”œβ”€β”€ styles
└── types
```

> κ΅¬ν˜„ 팁
>
> - `components/features/`λŠ” **도메인 λ‹¨μœ„ UI**(예: `PostForm`, `PostList`) 쀑심.
> - `pages/`μ—μ„œλŠ” **λΌμš°νŒ…κ³Ό 데이터 μ£Όμž…**만 λ‹΄λ‹Ήν•˜λ„λ‘ 뢄리.
> - `constants/`에 라우트/ν‚€/μ—λŸ¬ λ©”μ‹œμ§€ μƒμˆ˜ν™” β†’ ν•˜λ“œμ½”λ”© λ°©μ§€.

---

## πŸ“ λ¬Έμ„œ 좜처

- λ…Έμ…˜: [μ—¬κΈ°μ„œ 확인](https://www.notion.so/26f46d4d7ef780dab24cf1d09dcb611e)
> - Next.jsλŠ” **Pages Router** 기쀀이며, API λ””λ ‰ν„°λ¦¬λŠ” **λ°±μ—”λ“œ 톡신 헬퍼 μ „μš©**(ν”„λ‘ νŠΈμ—μ„œ
> μ‚¬μš©)으둜 μ·¨κΈ‰ν•©λ‹ˆλ‹€.
> - κΈ°λŠ₯ λ‹¨μœ„ 폴더 ꡬ쑰 예: notice, post, auth λ“± 각 κΈ°λŠ₯별 components, hooksλ₯Ό 포함해 κΈ°λŠ₯ λ‹¨μœ„λ‘œ
> μ‘μ§‘λœ ꡬ쑰 μœ μ§€
> - 곡용 μ»΄ν¬λ„ŒνŠΈ 폴더 예: button, dropdown, modal λ“± λ‹€μ–‘ν•œ νŽ˜μ΄μ§€μ—μ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•˜λ„λ‘ 섀계 λ‚΄λΆ€
> 둜직(hooks)κ³Ό UI(components) 뢄리
2 changes: 1 addition & 1 deletion src/components/features/noticeList/noticeList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const NoticeList = ({ notices, q, isLoading, isInitialized, reset, error }: Noti
<SkeletonUI count={6} className='min-h-[270px] target:min-h-[276px] desktop:min-h-[344px]' />;
}

if (notices.length === 0) {
if (!isLoading && notices.length === 0) {
return <NoticeEmpty q={q} onReset={() => reset()} />;
}

Expand Down
17 changes: 9 additions & 8 deletions src/components/features/noticeList/noticeListSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,15 @@ const NoticeListSection = ({ q, initialFilters }: NoticeListSectionProps) => {
reset={reset}
/>
<div className='mt-8 tablet:mt-10 min-h-[40px]'>
{!isLoading && (
<Pagination
total={pagination.count}
limit={pagination.limit}
offset={pagination.offset}
onPageChange={next => fetchNotices({ offset: next })}
/>
)}
<Pagination
total={pagination.count}
limit={pagination.limit}
offset={pagination.offset}
onPageChange={next => {
if (isLoading) return; // λ‘œλ”© 쀑이면 νŽ˜μ΄μ§€ μ „ν™˜ λ¬΄μ‹œ (κΉœλΉ‘μž„ λ°©μ§€)
fetchNotices({ offset: next });
}}
/>
</div>
</Container>
);
Expand Down
2 changes: 1 addition & 1 deletion src/components/ui/table/Table.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export default function Table({
))}
</tr>
</thead>
<tbody>
<tbody className='[&>tr:last-child>td]:border-b-0'>
{tableData.map(row => (
<TableRow
key={row.id}
Expand Down
Loading