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
276 changes: 244 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,42 +2,254 @@

μ½”λ“œμž‡ μŠ€ν”„λ¦°νŠΈ 13κΈ° Part 3 κ³Όμ •μ—μ„œ 5νŒ€μ΄ μ§„ν–‰ν•œ 쀑급 ν”„λ‘œμ νŠΈ **Taskify** λ ˆν¬μ§€ν† λ¦¬μž…λ‹ˆλ‹€.

## πŸš€ 배포 μ£Όμ†Œ
https://taskify-three-pearl.vercel.app

## πŸ“ ν”„λ‘œμ νŠΈ κ°œμš”
**Taskify**λŠ” 일정을 κ³΅μœ ν•˜λ©° 관리할 수 μžˆλŠ” μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.
### λ„€λΉ„κ²Œμ΄μ…˜ λ°”
#### 둜그인 μ „
- 둜고 λ²„νŠΌ 클릭 μ‹œ λžœλ”© νŽ˜μ΄μ§€λ‘œ 이동
- 우츑의 둜그인, νšŒμ›κ°€μž… 클릭 μ‹œ 각각 둜그인 νŽ˜μ΄μ§€, νšŒμ›κ°€μž… νŽ˜μ΄μ§€λ‘œ 이동

#### 둜그인 ν›„
- 우츑의 μœ μ € ν”„λ‘œν•„ 클릭 μ‹œ λ‚΄ 정보와 λ‘œκ·Έμ•„μ›ƒ λ“œλ‘­λ‹€μš΄
- λ‚΄ 정보 클릭 μ‹œ 계정 관리 νŽ˜μ΄μ§€λ‘œ 이동
- λ‘œκ·Έμ•„μ›ƒ 클릭 μ‹œ μ•‘μ„ΈμŠ€ 토큰 μ‚­μ œ ν›„ λžœλ”© νŽ˜μ΄μ§€λ‘œ 이동
**λŒ€μ‹œλ³΄λ“œ 상세 νŽ˜μ΄μ§€**
- ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œλ₯Ό μƒμ„±ν•œ μ‚¬λžŒμ—κ²Œλ§Œ '관리' λ²„νŠΌ ν‘œμ‹œ
- '관리' λ²„νŠΌ 클릭 μ‹œ ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œ μˆ˜μ • νŽ˜μ΄μ§€λ‘œ 이동
- 'μ΄ˆλŒ€ν•˜κΈ°' λ²„νŠΌ 클릭 μ‹œ μ΄ˆλŒ€ν•˜κΈ° λͺ¨λ‹¬ ν‘œμ‹œ
- μš°μΈ‘μ— ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œμ˜ 멀버 ν‘œμ‹œ

### μ‚¬μ΄λ“œ λ°”
- 둜그인 ν›„ νŽ˜μ΄μ§€λ“€μ—μ„œλ§Œ ν‘œμ‹œ
- μƒλ‹¨μ˜ 둜고 클릭 μ‹œ λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€λ‘œ 이동
- '+' λ²„νŠΌ 클릭 μ‹œ λŒ€μ‹œλ³΄λ“œ 생성 λͺ¨λ‹¬ ν‘œμ‹œ
- λŒ€μ‹œλ³΄λ“œ λͺ©λ‘λ“€ 쀑 λ‚΄κ°€ λ§Œλ“  λŒ€μ‹œλ³΄λ“œλŠ” λŒ€μ‹œλ³΄λ“œ 이름 λ’€μ—λŠ” πŸ‘‘λ‘œ ν‘œμ‹œ

### λžœλ”© νŽ˜μ΄μ§€(`/`)
- Taskify의 초기 μ‹œμž‘ νŽ˜μ΄μ§€

### 둜그인 νŽ˜μ΄μ§€(`/login`)
- μœ νš¨ν•œ 이메일과 λΉ„λ°€λ²ˆν˜Έ μž…λ ₯ μ‹œ '둜그인' λ²„νŠΌ ν™œμ„±ν™”
- ν™œμ„±ν™”λœ '둜그인' λ²„νŠΌ 클릭 μ‹œ μ•‘μ„ΈμŠ€ 토큰을 λ°œκΈ‰λ°›κ³  λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€λ‘œ 이동

### νšŒμ›κ°€μž… νŽ˜μ΄μ§€(`/signup`)
- νšŒμ›κ°€μž… 폼이 μœ νš¨ν•œ κ°’μœΌλ‘œ λͺ¨λ‘ μ±„μ›Œμ§€κ³ , μ•½κ΄€ λ™μ˜ 체크 μ‹œ 'κ°€μž…ν•˜κΈ°' λ²„νŠΌ ν™œμ„±ν™”
- ν™œμ„±ν™”λœ 'κ°€μž…ν•˜κΈ°' λ²„νŠΌ 클릭 μ‹œ 둜그인 νŽ˜μ΄μ§€λ‘œ 이동

### λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€(`/mydashboard`)
#### λ‚΄ λŒ€μ‹œλ³΄λ“œ λͺ©λ‘
- 'μƒˆλ‘œμš΄ λŒ€μ‹œλ³΄λ“œ' λ²„νŠΌ 클릭 μ‹œ λŒ€μ‹œλ³΄λ“œ 생성 λͺ¨λ‹¬ ν‘œμ‹œ
- λ‚΄κ°€ λ§Œλ“  λŒ€μ‹œλ³΄λ“œλŠ” λŒ€μ‹œλ³΄λ“œ 이름 λ’€μ—λŠ” πŸ‘‘λ‘œ ν‘œμ‹œ
- μ›ν•˜λŠ” λŒ€μ‹œλ³΄λ“œ 클릭 μ‹œ ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œ 상세 νŽ˜μ΄μ§€λ‘œ 이동

#### μ΄ˆλŒ€λ°›μ€ λŒ€μ‹œλ³΄λ“œ
- μ›ν•˜λŠ” ν‚€μ›Œλ“œλ‘œ μ΄ˆλŒ€λ°›μ€ λŒ€μ‹œλ³΄λ“œ 검색 κ°€λŠ₯
- μ΄ˆλŒ€ 수락 μ‹œ ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œ 상세 νŽ˜μ΄μ§€λ‘œ 이동
- μ΄ˆλŒ€ 거절 μ‹œ μ΄ˆλŒ€λ°›μ€ λŒ€μ‹œλ³΄λ“œ λͺ©λ‘μ—μ„œ ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œ μ‚­μ œ

### λŒ€μ‹œλ³΄λ“œ 상세 νŽ˜μ΄μ§€(`/dashboard/{dashboardid}`)
#### 컬럼
- 'μƒˆλ‘œμš΄ 컬럼 μΆ”κ°€ν•˜κΈ°' λ²„νŠΌ 클릭 μ‹œ 컬럼 생성 λͺ¨λ‹¬ ν‘œμ‹œ
- 각 컬럼의 ν†±λ‹ˆλ°”ν€΄ λͺ¨μ–‘ λ²„νŠΌ 클릭 μ‹œ 컬럼 μˆ˜μ • λͺ¨λ‹¬ ν‘œμ‹œ

#### ν•  일 μΉ΄λ“œ
- 각 컬럼 μƒλ‹¨μ˜ '+' λ²„νŠΌ 클릭 μ‹œ ν•  일 생성 λͺ¨λ‹¬ ν‘œμ‹œ
- 각 ν•  일 μΉ΄λ“œ 클릭 μ‹œ ν•΄λ‹Ή ν•  일 μΉ΄λ“œ 상세 λͺ¨λ‹¬ ν‘œμ‹œ
- ν•  일 μΉ΄λ“œ 상세 λͺ¨λ‹¬μ—μ„œλŠ” ν•΄λ‹Ή ν•  일 μΉ΄λ“œμ— λŒ“κΈ€ 등둝, μˆ˜μ •, μ‚­μ œ κ°€λŠ₯
- ν•  일 μΉ΄λ“œ 상세 λͺ¨λ‹¬μ˜ 우츑 상단 메뉴 λ²„νŠΌ 클릭 μ‹œ ν•  일 μΉ΄λ“œ μˆ˜μ •, μ‚­μ œ κ°€λŠ₯
- ν•  일 μΉ΄λ“œ μˆ˜μ • μ‹œ ν•  일 μˆ˜μ • λͺ¨λ‹¬ ν‘œμ‹œ

### λŒ€μ‹œλ³΄λ“œ μˆ˜μ • νŽ˜μ΄μ§€(`/dashboard/{dashboardid}/edit`)
#### λŒ€μ‹œλ³΄λ“œ μˆ˜μ •
- λŒ€μ‹œλ³΄λ“œμ˜ 이름 및 색상 μˆ˜μ • ν›„ 'λ³€κ²½' λ²„νŠΌ 클릭 μ‹œ ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œ 상세 νŽ˜μ΄μ§€λ‘œ 이동

#### ꡬ성원
- ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œμ˜ 멀버 λͺ©λ‘ 확인 및 μ‚­μ œ κ°€λŠ₯

#### μ΄ˆλŒ€ λ‚΄μ—­
- ν•΄λ‹Ή λŒ€μ‹œλ³΄λ“œμ— μ΄ˆλŒ€ν•œ μœ μ € 이메일 λͺ©λ‘ 확인 및 μ·¨μ†Œ κ°€λŠ₯
- 우츑 μƒλ‹¨μ˜ 'μ΄ˆλŒ€ν•˜κΈ°' λ²„νŠΌ 클릭 μ‹œ μ΄ˆλŒ€ν•˜κΈ° λͺ¨λ‹¬ ν‘œμ‹œ

#### λŒ€μ‹œλ³΄λ“œ μ‚­μ œ
- λŒ€μ‹œλ³΄λ“œ μ‚­μ œ λ²„νŠΌ 클릭 μ‹œ λŒ€μ‹œλ³΄λ“œ μ‚­μ œ ν›„ λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€λ‘œ 이동

### 계정 관리 νŽ˜μ΄μ§€(/mypage)
- μ‚¬μš©μžμ˜ ν”„λ‘œν•„ 이미지와 λ‹‰λ„€μž„ λ³€κ²½ κ°€λŠ₯
- μ‚¬μš©μžμ˜ 이메일 λ³€κ²½ λΆˆκ°€
- ν˜„μž¬ λΉ„λ°€λ²ˆν˜Έμ™€ λ‹€λ₯Έ λΉ„λ°€λ²ˆν˜Έλ‘œ λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ κ°€λŠ₯

## ⏳ 개발 κΈ°κ°„
2025.03.18 ~ 2025.04.02

## πŸ‘©πŸ»β€πŸ’» νŒ€μ› μ†Œκ°œ
<table>
<tr>
<td align="center"><b>κΉ€κ²½λ―Ό</b></td>
<td align="center"><b>λ…Έν˜„μ§€</b></td>
<td align="center"><b>이아름</b></td>
<td align="center"><b>이재혁</b></td>
<td align="center"><b>μž„μ§€ν˜œ</b></td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/codeit-kkm">
<img width="200px" src="https://github.com/codeit-kkm.png"/>
</a>
</td>
<td align="center">
<a href="https://github.com/hyeonjiroh">
<img width="200px" src="https://github.com/hyeonjiroh.png"/>
</a>
</td>
<td align="center">
<a href="https://github.com/ARON-Y">
<img width="200px" src="https://github.com/ARON-Y.png"/>
</a>
</td>
<td align="center">
<a href="https://github.com/LEEHAEHYUK">
<img width="200px" src="https://github.com/LEEHAEHYUK.png"/>
</a>
</td>
<td align="center">
<a href="https://github.com/jihye5081">
<img width="200px" src="https://github.com/jihye5081.png"/>
</a>
</td>
</tr>
</table>

## 🀝 μ—­ν•  λΆ„λ‹΄
### κΉ€κ²½λ―Ό
- λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€ - λ‚΄ λŒ€μ‹œλ³΄λ“œ λͺ©λ‘
- λŒ€μ‹œλ³΄λ“œ 생성 λͺ¨λ‹¬
- 컬러 νŒ”λ ˆνŠΈ λ²„νŠΌ 리슀트(곡톡)

### λ…Έν˜„μ§€
- 상단 λ„€λΉ„κ²Œμ΄μ…˜ λ°”
- μ‚¬μ΄λ“œ λ°”
- λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€ - μ΄ˆλŒ€λ°›μ€ λŒ€μ‹œλ³΄λ“œ
- λŒ€μ‹œλ³΄λ“œ 상세 νŽ˜μ΄μ§€
- λŒ€μ‹œλ³΄λ“œ μˆ˜μ • νŽ˜μ΄μ§€ - λŒ€μ‹œλ³΄λ“œ μˆ˜μ •, μ΄ˆλŒ€ λ‚΄μ—­, λŒ€μ‹œλ³΄λ“œ μ‚­μ œ
- 컬럼 μΆ”κ°€ λͺ¨λ‹¬
- 컬럼 μˆ˜μ • λͺ¨λ‹¬
- ν•  일 μΉ΄λ“œ 상세 λͺ¨λ‹¬
- μ΄ˆλŒ€ν•˜κΈ° λͺ¨λ‹¬
- 둜고 λ²„νŠΌ(곡톡)
- νƒœκ·Έ & νƒœκ·Έ Input(곡톡)
- λͺ¨λ‹¬(곡톡)
- alert(곡톡)

### 이아름
- 둜그인 νŽ˜μ΄μ§€
- νšŒμ›κ°€μž… νŽ˜μ΄μ§€
- 계정 관리 νŽ˜μ΄μ§€
- Input(곡톡)
- λ²„νŠΌ(곡톡)
- 이미지 파일 μΆ”κ°€ λ²„νŠΌ(곡톡)

### 이재혁
- λŒ€μ‹œλ³΄λ“œ μˆ˜μ • νŽ˜μ΄μ§€ - ꡬ성원 λͺ©λ‘
- νŽ˜μ΄μ§€λ„€μ΄μ…˜ λ²„νŠΌ(곡톡)
- μœ μ € μ•„μ΄μ½˜(곡톡)

### μž„μ§€ν˜œ
- λžœλ”©νŽ˜μ΄μ§€
- ν•  일 μΉ΄λ“œ μˆ˜μ • λͺ¨λ‹¬
- ν•  일 μΉ΄λ“œ 생성 λͺ¨λ‹¬
- Textarea(곡톡)
- Date Input(곡톡)

## πŸ’» 기술 μŠ€νƒ

### Environment

![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=for-the-badge&logo=visual-studio-code&logoColor=white)
![Git](https://img.shields.io/badge/git-%23F05033.svg?style=for-the-badge&logo=git&logoColor=white)
![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white)

### Linters

![js](https://img.shields.io/badge/eslint-3A33D1?style=for-the-badge&logo=eslint&logoColor=white)
![js](https://img.shields.io/badge/prettier-1A2C34?style=for-the-badge&logo=prettier&logoColor=F7BA3E)

### Development

![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)
![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white)
![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB)
![Next JS](https://img.shields.io/badge/Next.js-%23000000.svg?style=for-the-badge&logo=next.js&logoColor=white)
![TailwindCSS](https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white)


### communication

![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&logo=discord&logoColor=white)
![Notion](https://img.shields.io/badge/Notion-%23000000.svg?style=for-the-badge&logo=notion&logoColor=white)

### Deployment

![Vercel](https://img.shields.io/badge/vercel-%23000000.svg?style=for-the-badge&logo=vercel&logoColor=white)

## πŸ—‚οΈ 폴더 ꡬ쑰

```
πŸ“‚ public # 곡개 정적 파일 디렉토리
β”‚
β”œβ”€β”€ πŸ“‚ logo # 둜고 이미지
β”‚
β”œβ”€β”€ πŸ“‚ icon # μ•„μ΄μ½˜ 이미지
β”‚
β”œβ”€β”€ πŸ“‚ page-modal # 각 νŽ˜μ΄μ§€ λ˜λŠ” λͺ¨λ‹¬μ— ν•„μš”ν•œ 이미지
β”‚
β”‚
πŸ“‚ src # μ†ŒμŠ€ μ½”λ“œ 루트 디렉토리
β”‚
β”œβ”€β”€ πŸ“‚ actions # μ„œλ²„ μ•‘μ…˜ 관리
β”‚
β”œβ”€β”€ πŸ“‚ app # Next.js app 디렉토리
β”‚ β”‚
β”‚ β”œβ”€β”€ πŸ“‚ page-path # 각 νŽ˜μ΄μ§€ κ²½λ‘œμ— ν•΄λ‹Ήν•˜λŠ” μ»΄ν¬λ„ŒνŠΈ
β”‚
β”œβ”€β”€ πŸ“‚ components # μ»΄ν¬λ„ŒνŠΈ 관리
β”‚ β”‚
β”‚ β”œβ”€β”€ πŸ“‚ common # 곡톡 μ»΄ν¬λ„ŒνŠΈ 관리
β”‚ β”‚ β”‚
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ common-name # 각 곡톡 μ»΄ν¬λ„ŒνŠΈ μ»΄ν¬λ„ŒνŠΈ
β”‚ β”‚
β”‚ β”œβ”€β”€ πŸ“‚ page-modal # 각 νŽ˜μ΄μ§€ λ˜λŠ” λͺ¨λ‹¬μ— μ‚¬μš©ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈ
β”‚
β”œβ”€β”€ πŸ“‚ constants # μƒμˆ˜ κ°’ 관리
β”‚
β”œβ”€β”€ πŸ“‚ hooks # μ»€μŠ€ν…€ ν›… 관리
β”‚
β”œβ”€β”€ πŸ“‚ utils # μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ 관리
β”‚
β”œβ”€β”€ πŸ“„ types.tsx # νƒ€μž… μ •μ˜
πŸ“‚ public
β”œβ”€β”€ πŸ“‚ icon
β”œβ”€β”€ πŸ“‚ logo
└── πŸ“‚ page-modal

πŸ“‚ src
β”œβ”€β”€ πŸ“‚ app
β”‚ β”œβ”€β”€ πŸ“‚ (after-login)
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ dashboard
β”‚ β”‚ β”‚ └── πŸ“‚ [dashboardid]
β”‚ β”‚ β”‚ β”œβ”€β”€ πŸ“‚ _components
β”‚ β”‚ β”‚ └── πŸ“‚ edit
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ mydashboard
β”‚ β”‚ β”‚ └── πŸ“‚ _components
β”‚ β”‚ └── πŸ“‚ mypage
β”‚ β”‚ └── πŸ“‚ _components
β”‚ └── πŸ“‚ (before-login)
β”‚ β”œβ”€β”€ πŸ“‚ (with-navbar)
β”‚ └── πŸ“‚ (without-navbar)
β”‚ β”œβ”€β”€ πŸ“‚ login
β”‚ └── πŸ“‚ signup

β”œβ”€β”€ πŸ“‚ components
β”‚ β”œβ”€β”€ πŸ“‚ commont
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ alert
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ button
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ color-palette
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ input
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ logo-button
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ modal
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ pagination-button
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ tag
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ textarea
β”‚ β”‚ └── πŸ“‚ user-icon
β”‚ β”œβ”€β”€ πŸ“‚ layout
β”‚ β”‚ β”œβ”€β”€ πŸ“‚ navbar
β”‚ β”‚ └── πŸ“‚ sidebar
β”‚ └── πŸ“‚ modal
β”‚ β”œβ”€β”€ πŸ“‚ add-column
β”‚ β”œβ”€β”€ πŸ“‚ create-dashboard
β”‚ β”œβ”€β”€ πŸ“‚ create-task
β”‚ β”œβ”€β”€ πŸ“‚ edit-task
β”‚ β”œβ”€β”€ πŸ“‚ edit-column
β”‚ β”œβ”€β”€ πŸ“‚ invite
β”‚ └── πŸ“‚ task-detail

β”œβ”€β”€ πŸ“‚ lib
β”‚ β”œβ”€β”€ πŸ“‚ apis
β”‚ β”œβ”€β”€ πŸ“‚ constants
β”‚ β”œβ”€β”€ πŸ“‚ hooks
β”‚ β”œβ”€β”€ πŸ“‚ store
β”‚ β”œβ”€β”€ πŸ“‚ utils
β”‚ └── πŸ“„ types.ts
```

## βœ… μ»¨λ²€μ…˜
Expand Down