Skip to content

Latest commit

Β 

History

History
284 lines (196 loc) Β· 12 KB

File metadata and controls

284 lines (196 loc) Β· 12 KB

πŸ—“οΈ Taskify β€” 일정 관리 μ„œλΉ„μŠ€

당신을 μœ„ν•œ μƒˆλ‘œμš΄ 일정관리, Taskify μ›Ήκ³Ό λͺ¨λ°”μΌμ—μ„œ νŒ€κ³Ό ν•¨κ»˜ νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•΄λ³΄μ„Έμš”!

πŸ”— 배포 μ£Όμ†Œ: https://taskify-liard-three.vercel.app/

λžœλ”© νŽ˜μ΄μ§€ PC λžœλ”© νŽ˜μ΄μ§€ Mobile

πŸ“Œ ν”„λ‘œμ νŠΈ κ°œμš”

TaskifyλŠ” νŒ€ ν˜‘μ—…μ„ μœ„ν•œ 칸반 λ³΄λ“œ 기반 ν”„λ‘œμ νŠΈ/일정 관리 λ„κ΅¬μž…λ‹ˆλ‹€. λŒ€μ‹œλ³΄λ“œ λ‹¨μœ„ ν˜‘μ—…, 컬럼/μΉ΄λ“œ(νƒœμŠ€ν¬) 관리, νŒ€μ› μ΄ˆλŒ€, λŒ“κΈ€ μ†Œν†΅μ„ μ§€μ›ν•˜λ©° λ°˜μ‘ν˜• UIλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

μ£Όμš” νŠΉμ§•

  • λŒ€μ‹œλ³΄λ“œ 생성/μˆ˜μ •/μ‚­μ œ + 색상 ν…Œλ§ˆ 선택
  • 칼럼/μΉ΄λ“œ(νƒœμŠ€ν¬) CRUD, νƒœκ·Έ/λ‹΄λ‹Ήμž/마감일/이미지 첨뢀
  • μ΄ˆλŒ€ 수락/거절, ꡬ성원/μ΄ˆλŒ€ λ‚΄μ—­ 관리
  • λŒ“κΈ€ μž‘μ„±/μˆ˜μ •/μ‚­μ œ, (μš”κ΅¬μ‚¬ν•­ κΈ°μ€€) λ¬΄ν•œ 슀크둀 지원 μ˜μ—­

πŸ‘₯ νŒ€μ› μ†Œκ°œ (R&R)

이름 μ—­ν•  μ£Όμš” λ‹΄λ‹Ή
μ΄μž¬μ€€ μœ μ € 파트 λ‘œκ·ΈμΈΒ·νšŒμ›κ°€μž…, 계정관리, 메인 νŽ˜μ΄μ§€/헀더, Auth API, 둜그인 μœ μ§€ 둜직
μ‹¬μ˜ˆμ§„ λŒ€μ‹œλ³΄λ“œ 관리 λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ, λŒ€μ‹œλ³΄λ“œ μˆ˜μ • νŽ˜μ΄μ§€
λ°•μ„œν˜„ λŒ€μ‹œλ³΄λ“œ λŒ€μ‹œλ³΄λ“œ 상세, ν•  일 λͺ¨λ‹¬, DnD, ν•  일 μΉ΄λ“œ CRUD
κΆŒμˆ˜ν˜• 곡톡 μ½”λ“œ CSSΒ·fetch μ„ΈνŒ…, 곡용 μ»΄ν¬λ„ŒνŠΈ(Button/Chip/Input/Header/Sidebar), 곡톡 hooks, 칼럼/μ΄ˆλŒ€ λͺ¨λ‹¬

βœ… 쑰건사항 μΆ©μ‘± λ‚΄μ—­ (μš”μ•½)

  • 곡톡: μ§€μ • 폰트/컬러, λ°˜μ‘ν˜•, 곡용 μ»΄ν¬λ„ŒνŠΈ, 이미지 영문 파일λͺ…
  • λ„€λΉ„/μ‚¬μ΄λ“œλ°”: λ“œλ‘­λ‹€μš΄(λ‘œκ·Έμ•„μ›ƒ/λ‚΄ 정보/λ‚΄ λŒ€μ‹œλ³΄λ“œ), μ‚¬μ΄λ“œλ°” νŽ˜μ΄μ§€λ„€μ΄μ…˜, '+' μ‹œ 생성 λͺ¨λ‹¬
  • 인증: 둜그인/νšŒμ›κ°€μž… μœ νš¨μ„± 및 μ—λŸ¬ 핸듀링, 둜그인 성곡 μ‹œ μ•‘μ„ΈμŠ€ 토큰 λ°œκΈ‰
  • λžœλ”©: 둜고/둜그인/νšŒμ›κ°€μž… λΌμš°νŒ…, 둜그인 μƒνƒœλ©΄ 첫 λŒ€μ‹œλ³΄λ“œλ‘œ 이동
  • λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ: λ‚΄κ°€ λ§Œλ“  λŒ€μ‹œλ³΄λ“œμ— πŸ‘‘, λ‚΄ λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€λ„€μ΄μ…˜, μ΄ˆλŒ€λ°›μ€ λŒ€μ‹œλ³΄λ“œ λ¬΄ν•œ 슀크둀/검색/수락·거절
  • λŒ€μ‹œλ³΄λ“œ 상세: 상단 멀버 ν‘œμ‹œ, 각 컬럼 μΉ΄λ“œ 개수, 관리 λ²„νŠΌ(edit), μ΄ˆλŒ€ν•˜κΈ°/컬럼 μΆ”κ°€/μˆ˜μ • λͺ¨λ‹¬, μΉ΄λ“œ 생성 λͺ¨λ‹¬ 및 상세 λͺ¨λ‹¬
  • λŒ€μ‹œλ³΄λ“œ μƒμ„±Β·μˆ˜μ •Β·κ΄€λ¦¬: 생성/μˆ˜μ •/μ‚­μ œ, ꡬ성원/μ΄ˆλŒ€λ‚΄μ—­ νŽ˜μ΄μ§€λ„€μ΄μ…˜, μ΄ˆλŒ€/μ·¨μ†Œ
  • μΉ΄λ“œ 상세/λŒ“κΈ€: λŒ“κΈ€ CRUD, λ¬΄ν•œ 슀크둀, μΉ΄λ“œ μˆ˜μ •/μ‚­μ œ
  • 계정 관리: ν”„λ‘œν•„ 이미지 μ—…λ‘œλ“œ, λ‹‰λ„€μž„ μˆ˜μ •, λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ μœ νš¨μ„± 및 μ—λŸ¬ 처리

🧭 ν”„λ‘œμ νŠΈ μ§„ν–‰ (ToDo)

1μ£Όμ°¨

  • ν”„λ‘œμ νŠΈ 일정/κ³„νš 수립, 초기 μ—­ν•  λ°°λΆ„
  • ν˜‘μ—… κ·œμΉ™ 및 μ»¨λ²€μ…˜ ν™•μ •
  • ν”„λ‘œμ νŠΈ μ„ΈνŒ… (Next.js, Tailwind, ESLint, Prettier)
  • VSCode/ESLint/Prettier μ„€μ • 곡유
  • 폴더 ꡬ쑰 ν™•μ •, Tailwind κΈ€λ‘œλ²Œ 토큰 적용
  • νŽ˜μ΄μ§€ UI κ΅¬ν˜„: Dashboard, MyDashboard, Dashboard/Edit, MyPage, Login, Signup, Home
  • 곡용 μ»΄ν¬λ„ŒνŠΈ κΈ°λ³Έμ…‹ κ΅¬ν˜„ (Button/Chip/Input/Modal λ“±)
  • 1μ°¨ κΈ°λŠ₯ μ—°κ²°: 둜그인/νšŒμ›κ°€μž…, λŒ€μ‹œλ³΄λ“œ 생성/μˆ˜μ • λ“±

2μ£Όμ°¨

  • λ©”νƒ€νƒœκ·Έ/νŒŒλΉ„μ½˜, 404, λ‘œλ”© μƒνƒœ(μŠ€μΌˆλ ˆν†€/λ‘œλ”© UI), framer-motion
  • Header/SideMenu 데이터 연동, νŽ˜μ΄μ§€λ„€μ΄μ…˜
  • ν…ŒμŠ€νŠΈ κ³„μ •μœΌλ‘œ μ΄ˆλŒ€/ν˜‘μ—… κΈ°λŠ₯ ν…ŒμŠ€νŠΈ (μˆ˜ν˜•)
  • κΈ°λŠ₯ ν™•μž₯
    • Dashboard: 데이터 연동, 칼럼 μΆ”κ°€, λ¬΄ν•œ 슀크둀, DnD, λŒ“κΈ€ μˆ˜μ •/μ‚­μ œ, μΉ΄λ“œ CRUD, 칼럼 μΆ”κ°€/μˆ˜μ • λͺ¨λ‹¬
    • MyDashboard: API 연동, νŽ˜μ΄μ§€λ„€μ΄μ…˜, λ¬΄ν•œ 슀크둀, λŒ€μ‹œλ³΄λ“œ μΆ”κ°€ λͺ¨λ‹¬, μ΄ˆλŒ€ 수락/거절
    • Dashboard/Edit: API 연동, ꡬ성원/μ΄ˆλŒ€λ‚΄μ—­ νŽ˜μ΄μ§€λ„€μ΄μ…˜, μˆ˜μ •/μ‚­μ œ/μ΄ˆλŒ€μˆ˜λ½/거절
    • MyPage: 데이터 연동, ν”„λ‘œν•„/λΉ„λ°€λ²ˆν˜Έ λ³€κ²½
    • Login/Signup: μž…λ ₯ μœ νš¨μ„±, 둜직 λ¦¬νŒ©ν† λ§

🧱 기술 μŠ€νƒ

Tech Stack

Next JS TypeScript TailwindCSS

Development Environment

Visual Studio Code Git GitHub ESLint Prettier Vercel Storybook Vitest

Architecture / State Management

  • Local state & URL 기반
  • Avoided global state libraries (Context API μ§€μ–‘)

Data Layer

  • Shared fetch wrapper
  • Configured with credentials: 'include'

Collaboration Tools

Discord Notion Figma

πŸ”— API & 인증

  • API: RESTful
  • 인증: μ•‘μ„ΈμŠ€ 토큰 λ°œκΈ‰ (μš”κ΅¬μ‚¬ν•­ 기반), μΏ ν‚€/둜컬 μ „λž΅μ€ νŒ€ κ·œμΉ™μ— 맞좰 fetch 래퍼둜 일원화
  • 이미지 μ—…λ‘œλ“œ: ν”„λ‘œν•„/μΉ΄λ“œ 이미지 μ—…λ‘œλ“œ μ—”λ“œν¬μΈνŠΈ 뢄리 μ€€μˆ˜

μ—”λ“œν¬μΈνŠΈ κ°œμš”

  • Auth: POST /auth/signin, POST /auth/signup, PUT /auth/password
  • Users: GET /users/me, PUT /users/me, POST /users/me/image
  • Dashboards: GET/POST /dashboards, PUT/DELETE /dashboards/:id
  • Columns: POST /columns, PUT/DELETE /columns/:id
  • Cards: POST /cards, PUT/DELETE /cards/:id
  • Comments: POST /comments, PUT/DELETE /comments/:id

πŸ—‚οΈ 폴더 ꡬ쑰

src/
β”œβ”€ components/            # μž¬μ‚¬μš© μ»΄ν¬λ„ŒνŠΈ
β”‚  β”œβ”€ auth/               # 인증
β”‚  β”œβ”€ dashboard/          # λŒ€μ‹œλ³΄λ“œ
β”‚  β”œβ”€ home/               # ν™ˆ(λžœλ”©)
β”‚  β”œβ”€ layout/             # λ ˆμ΄μ•„μ›ƒ
β”‚  β”œβ”€ mydashboard/        # λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ
β”‚  └─ ui/                 # UI νŒŒμš΄λ°μ΄μ…˜
β”œβ”€ hooks/                 # μ»€μŠ€ν…€ ν›…
β”œβ”€ lib/                   # μœ ν‹Έ & API
β”œβ”€ pages/                 # Next.js Page Router
β”œβ”€ styles/                # μ „μ—­/λͺ¨λ“ˆ μŠ€νƒ€μΌ
β”œβ”€ stories/               #  Storybook
└─ utils/                 # 헬퍼

🧩 μ£Όμš” μ»΄ν¬λ„ŒνŠΈ

인증

AuthButton, EmailInput, PasswordInput, UnifiedModal

λŒ€μ‹œλ³΄λ“œ

DashboardColumn, ColumnTaskCard, AddColumnButton, AddTaskButton

λͺ¨λ‹¬/폼

TaskDetailModal, CreateTaskForm, EditTaskForm, CreateColumnForm, ManageColumnForm

πŸ–ΌοΈ μ£Όμš” ν™”λ©΄ (μƒ˜ν”Œ)

메인 νŽ˜μ΄μ§€

μ„œλΉ„μŠ€ μ†Œκ°œ, 둜그인/νšŒμ›κ°€μž… λΌμš°νŒ…

메인 νŽ˜μ΄μ§€

둜그인 / νšŒμ›κ°€μž…

μœ νš¨μ„±/μ—λŸ¬ 처리, 성곡 μ‹œ λ¦¬λ‹€μ΄λ ‰νŠΈ

둜그인 νŽ˜μ΄μ§€ νšŒμ›κ°€μž… νŽ˜μ΄μ§€

λ‚˜μ˜ λŒ€μ‹œλ³΄λ“œ

λ‚΄κ°€ λ§Œλ“  λŒ€μ‹œλ³΄λ“œ(πŸ‘‘), μ΄ˆλŒ€λ°›μ€ λŒ€μ‹œλ³΄λ“œ(λ¬΄ν•œ 슀크둀/검색/수락·거절)

λ‚˜μ˜λŒ€μ‹œλ³΄λ“œ νŽ˜μ΄μ§€ ν•  일 μΉ΄λ“œ 상세 λͺ¨λ‹¬

λŒ€μ‹œλ³΄λ“œ 상세 / μˆ˜μ •

컬럼/μΉ΄λ“œ, 멀버, 관리/μ΄ˆλŒ€, μΉ΄λ“œ 상세/λŒ“κΈ€

λŒ€μ‹œλ³΄λ“œ 상세 νŽ˜μ΄μ§€ λŒ€μ‹œλ³΄λ“œ 생성 λŒ€μ‹œλ³΄λ“œ μˆ˜μ •

ν•  일 μΉ΄λ“œ 상세 λͺ¨λ‹¬

ν•  일 μΉ΄λ“œ 상세 λͺ¨λ‹¬ 1 ν•  일 μΉ΄λ“œ 상세 λͺ¨λ‹¬ 2 ν•  일 μΉ΄λ“œ 상세 λͺ¨λ‹¬ 3

컬럼 μΆ”κ°€, 관리 λͺ¨λ‹¬

컬럼 μΆ”κ°€ λͺ¨λ‹¬ 컬럼 관리 λͺ¨λ‹¬

μ΄ˆλŒ€ν•˜κΈ° λͺ¨λ‹¬

μ΄ˆλŒ€ν•˜κΈ° λͺ¨λ‹¬

마이 νŽ˜μ΄μ§€

ν”„λ‘œν•„ νŽΈμ§‘, λΉ„λ°€λ²ˆν˜Έ λ³€κ²½

계정 관리 νŽ˜μ΄μ§€

πŸš€ μ‹œμž‘ν•˜κΈ°

# λ ˆν¬μ§€ν† λ¦¬ 클둠
git clone https://github.com/codeit-team-project/taskify.git

# νŒ¨ν‚€μ§€ μ„€μΉ˜
yarn install   # λ˜λŠ” npm install

# 개발 μ„œλ²„
yarn dev       # λ˜λŠ” npm run dev

λΉŒλ“œ/ν…ŒμŠ€νŠΈ/μŠ€ν† λ¦¬λΆ(선택)

yarn build
yarn test
yarn storybook

ν™˜κ²½ λ³€μˆ˜

NEXT_PUBLIC_API_URL=http://localhost:3000/api

🧭 ν˜‘μ—… κ·œμΉ™ (μš”μ•½)

  • 브랜치: main(배포), develop(톡합), feature/-, hotfix/*
  • λ¨Έμ§€ μ „λž΅: featureβ†’develop = Squash & Merge / developβ†’main = Merge / hotfixβ†’main = Merge
  • 컀밋 μ»¨λ²€μ…˜: type(scope): subject - #이슈번호
    • type: feat fix refactor style docs chore perf build revert
  • 넀이밍: μ»΄ν¬λ„ŒνŠΈ(PascalCase) / νŒŒμΌΒ·ν΄λ”(kebab-case) / λ³€μˆ˜Β·ν•¨μˆ˜(camelCase) / μƒμˆ˜(SNAKE_CASE)
  • μƒνƒœκ΄€λ¦¬: μ „μ—­ 라이브러리 λ―Έμ‚¬μš© (Context μ§€μ–‘) β€” 둜컬 state/URL ν™œμš©
  • μ½”λ“œ 원칙: SRP, λ§€μ§λ„˜λ²„ μƒμˆ˜ν™”, μž„ν¬νŠΈ μˆœμ„œ(μ™ΈλΆ€β†’λ‚΄λΆ€β†’μŠ€νƒ€μΌ), μΆ•μ•½ν˜• κΈˆμ§€
  • ν¬λ§·νŒ…: μ €μž₯ μ‹œ Prettier/ESLint μžλ™μˆ˜μ •, Tailwind IntelliSense

πŸ§ͺ μž…λ ₯ μœ νš¨μ„± & UX(발췌)

둜그인/νšŒμ›κ°€μž…

  • μ΄λ©”μΌΒ·λΉ„λ°€λ²ˆν˜Έ ν˜•μ‹ 검증, 포컀슀 아웃 μ‹œ μ—λŸ¬ λ©”μ‹œμ§€
  • λΉ„λ°€λ²ˆν˜Έ ν† κΈ€(눈 μ•„μ΄μ½˜), 쀑볡 이메일 λͺ¨λ‹¬
  • 성곡 μ‹œ λ¦¬λ‹€μ΄λ ‰νŠΈ(/mydashboard) 및 토큰 λ°œκΈ‰(μš”κ΅¬μ‚¬ν•­)

λ§ˆμ΄νŽ˜μ΄μ§€

  • ν”„λ‘œν•„ 이미지 μ—…λ‘œλ“œ, λ‹‰λ„€μž„ μˆ˜μ •
  • λΉ„λ°€λ²ˆν˜Έ λ³€κ²½: 일치/뢈일치 검증, μ—λŸ¬ 문ꡬ, 성곡 처리

λŒ€μ‹œλ³΄λ“œ/μΉ΄λ“œ/λŒ“κΈ€

  • λͺ¨λ‹¬ 기반 CRUD, λ¬΄ν•œ 슀크둀(μš”κ΅¬ μ˜μ—­), νŽ˜μ΄μ§€λ„€μ΄μ…˜(μš”κ΅¬ μ˜μ—­)

πŸ“š μ£Όμš” 기술

  • next / react / typescript / tailwindcss
  • eslint / prettier
  • @storybook/react, vitest