Skip to content

taskmate-sprint/taskmate_fe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

718 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

βœ… TaskMate β€” μ˜¬μΈμ› ν•  일 관리 μ„œλΉ„μŠ€


ν”„λ‘œμ νŠΈ μ†Œκ°œ

  • TaskMateλŠ” 개인 ν•  일뢀터 νŒ€ ν˜‘μ—…κΉŒμ§€ ν•˜λ‚˜μ˜ μ„œλΉ„μŠ€μ—μ„œ 관리할 수 μžˆλŠ” μ˜¬μΈμ› νƒœμŠ€ν¬ 관리 ν”Œλž«νΌμž…λ‹ˆλ‹€.
  • λͺ©ν‘œ(Goal) 기반으둜 ν•  일(Todo)을 κ΅¬μ‘°ν™”ν•˜μ—¬ λ§ˆκ°μΌΒ·μ§„μ²™λ₯ μ„ ν•œλˆˆμ— νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • νŒ€μ„ μƒμ„±ν•˜κ³  μ΄ˆλŒ€ 링크λ₯Ό κ³΅μœ ν•΄ νŒ€μ›λ“€κ³Ό λͺ©ν‘œλ₯Ό ν•¨κ»˜ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 즐겨찾기 λͺ©ν‘œ, λŒ€μ‹œλ³΄λ“œ μ§„ν–‰λ₯  μš”μ•½, μ‹€μ‹œκ°„ μ•Œλ¦Ό(SSE)을 톡해 업무 흐름을 λΉ λ₯΄κ²Œ νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚­μ œν•œ ν•  일은 νœ΄μ§€ν†΅μ— λ³΄κ΄€λ˜λ©° λ³΅κ΅¬ν•˜κ±°λ‚˜ 영ꡬ μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

νŒ€μ› ꡬ성

κΉ€μ’…μ§„ ν™©νš¨μ§„ zaenny

@SugarSyrup

@hwanghyojin

@zaenny

1. 개발 ν™˜κ²½

  • Front : Next.js 16, React 19, TypeScript, Tailwind CSS v4, Zustand, React Query
  • 버전 및 μ΄μŠˆκ΄€λ¦¬ : Github, Github Issues, Github Project
  • ν˜‘μ—… 툴 : Discord, Notion, Github Wiki
  • μ„œλΉ„μŠ€ 배포 ν™˜κ²½ : Vercel
  • λ””μžμΈ : Figma

2. μ±„νƒν•œ 개발 기술과 브랜치 μ „λž΅

Next.js (App Router), TypeScript

  • Next.js App Router
    • μ„œλ²„ μ»΄ν¬λ„ŒνŠΈμ™€ ν΄λΌμ΄μ–ΈνŠΈ μ»΄ν¬λ„ŒνŠΈλ₯Ό λͺ…ν™•νžˆ 뢄리해 λΆˆν•„μš”ν•œ λ²ˆλ“€ 크기λ₯Ό μ€„μ˜€μŠ΅λ‹ˆλ‹€.
    • API Route(/api/[...path])λ₯Ό ν”„λ‘μ‹œλ‘œ ν™œμš©ν•΄ λ°±μ—”λ“œ URL λ…ΈμΆœ 없이 인증 토큰을 μ„œλ²„μ—μ„œ μ•ˆμ „ν•˜κ²Œ μ²¨λΆ€ν•©λ‹ˆλ‹€.
    • 401/403 응닡 μ‹œ 토큰을 μžλ™ κ°±μ‹ ν•˜κ³  μ›λž˜ μš”μ²­μ„ μž¬μ‹œλ„ν•΄ μ‚¬μš©μžκ°€ 둜그인 만료λ₯Ό μΈμ‹ν•˜μ§€ λͺ»ν•˜λ„둝 μ²˜λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.
  • TypeScript
    • API Request/Response νƒ€μž…μ„ entities/{domain}/types/에 μ •μ˜ν•΄ λŸ°νƒ€μž„ μ—λŸ¬λ₯Ό 사전에 λ°©μ§€ν–ˆμŠ΅λ‹ˆλ‹€.
    • Zod μŠ€ν‚€λ§ˆλ‘œ 폼 μœ νš¨μ„± 검사 λ‘œμ§μ„ νƒ€μž…κ³Ό ν•¨κ»˜ κ΄€λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

Tailwind CSS v4

  • src/app/globals.css의 @theme에 λ””μžμΈ 토큰(μƒ‰μƒΒ·νƒ€μ΄ν¬κ·Έλž˜ν”ΌΒ·λΈŒλ ˆμ΄ν¬ν¬μΈνŠΈ)을 쀑앙 관리해 μΌκ΄€λœ UIλ₯Ό μœ μ§€ν–ˆμŠ΅λ‹ˆλ‹€.
  • typography-{scale} μœ ν‹Έλ¦¬ν‹° 클래슀(typography-body-2, typography-label-1 λ“±)λ₯Ό μ •μ˜ν•΄ λ””μžμΈ μ‹œμŠ€ν…œμ„ μ½”λ“œλ‘œ κ°•μ œν–ˆμŠ΅λ‹ˆλ‹€.
  • μž„μ˜κ°’(text-[14px]) μ‚¬μš©μ„ κΈˆμ§€ν•˜κ³  토큰 기반 μŠ€νƒ€μΌλ§Œ ν—ˆμš©ν•΄ λ””μžμΈ 일관성을 λ†’μ˜€μŠ΅λ‹ˆλ‹€.

Zustand, React Query

  • React Query : μ„œλ²„ μƒνƒœλ₯Ό entities/{domain}/query/의 queryOptions둜 쀑앙 κ΄€λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€. staleTime 60초 κΈ°λ³Έκ°’κ³Ό throwOnError: true둜 μ—λŸ¬λ₯Ό ErrorBoundary에 μœ„μž„ν–ˆμŠ΅λ‹ˆλ‹€.
  • Zustand : μ „μ—­ UI μƒνƒœ(λͺ¨λ‹¬/μ˜€λ²„λ ˆμ΄ μŠ€νƒ, 인증 정보)만 λ‹΄λ‹Ήν•©λ‹ˆλ‹€. 인증 μƒνƒœλŠ” persist + immer λ―Έλ“€μ›¨μ–΄λ‘œ localStorage에 μœ μ§€λ©λ‹ˆλ‹€.

Feature-Sliced Design (FSD)

  • app β†’ widgets β†’ features β†’ entities β†’ shared 단방ν–₯ 의쑴 흐름을 κ°•μ œν•΄ μ½”λ“œ λ³€κ²½ 영ν–₯ λ²”μœ„λ₯Ό 예츑 κ°€λŠ₯ν•˜κ²Œ μœ μ§€ν–ˆμŠ΅λ‹ˆλ‹€.
  • pnpm steiger둜 λ ˆμ΄μ–΄ μœ„λ°˜μ„ μžλ™ κ°μ§€ν•©λ‹ˆλ‹€.
  • 각 sliceλŠ” index.tsλ₯Ό ν†΅ν•΄μ„œλ§Œ 외뢀에 λ…ΈμΆœν•΄ λ‚΄λΆ€ κ΅¬ν˜„ 변경이 외뢀에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šλ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.

MSW (Mock Service Worker)

  • 개발 ν™˜κ²½μ—μ„œ μ‹€μ œ λ°±μ—”λ“œ 없이 API λ™μž‘μ„ ν…ŒμŠ€νŠΈν•  수 μžˆλ„λ‘ MSWλ₯Ό λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€.
  • pnpm dev:full둜 Next.js 개발 μ„œλ²„μ™€ json-server(port 4000)λ₯Ό λ™μ‹œμ— μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

브랜치 μ „λž΅

  • Git-flow μ „λž΅μ„ 기반으둜 main, develop, feat 보쑰 브랜치λ₯Ό μš΄μš©ν–ˆμŠ΅λ‹ˆλ‹€.
    • main λΈŒλžœμΉ˜λŠ” 배포 λ‹¨κ³„μ—μ„œλ§Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
    • develop λΈŒλžœμΉ˜λŠ” 개발 λ‹¨κ³„μ˜ 톡합 λΈŒλžœμΉ˜μž…λ‹ˆλ‹€.
    • feat λΈŒλžœμΉ˜λŠ” κΈ°λŠ₯ λ‹¨μœ„(feat/#이슈번호)둜 독립 κ°œλ°œν•˜κ³  merge ν›„ μ‚­μ œν•©λ‹ˆλ‹€.

3. ν”„λ‘œμ νŠΈ ꡬ쑰

β”œβ”€β”€ docs/
└── src/
     β”œβ”€β”€ app/
     β”‚    β”œβ”€β”€ api/
     β”‚    β”‚    β”œβ”€β”€ [...path]/route.ts     # API ν”„λ‘μ‹œ (토큰 첨뢀·갱신)
     β”‚    β”‚    └── auth/                 # OAuth 콜백 (Google, Kakao)
     β”‚    β”œβ”€β”€ (auth)/
     β”‚    β”‚    β”œβ”€β”€ login/
     β”‚    β”‚    └── signup/
     β”‚    β”œβ”€β”€ taskmate/
     β”‚    β”‚    β”œβ”€β”€ page.tsx              # λŒ€μ‹œλ³΄λ“œ
     β”‚    β”‚    β”œβ”€β”€ personal/goal/        # 개인 λͺ©ν‘œ
     β”‚    β”‚    β”œβ”€β”€ team/                 # νŒ€ λͺ©λ‘Β·μƒμ„ΈΒ·κ΄€λ¦¬
     β”‚    β”‚    β”œβ”€β”€ my/                   # λ‚΄ ν”„λ‘œν•„
     β”‚    β”‚    β”œβ”€β”€ trash/                # νœ΄μ§€ν†΅
     β”‚    β”‚    └── invitations/          # νŒ€ μ΄ˆλŒ€
     β”‚    β”œβ”€β”€ layout.tsx
     β”‚    β”œβ”€β”€ page.tsx                   # λžœλ”© νŽ˜μ΄μ§€
     β”‚    └── globals.css
     β”œβ”€β”€ widgets/
     β”‚    β”œβ”€β”€ auth/
     β”‚    β”œβ”€β”€ home/
     β”‚    β”œβ”€β”€ landing/
     β”‚    β”œβ”€β”€ goal/
     β”‚    β”œβ”€β”€ team/
     β”‚    β”œβ”€β”€ todo/
     β”‚    β”œβ”€β”€ trash/
     β”‚    β”œβ”€β”€ management/
     β”‚    β”œβ”€β”€ my/
     β”‚    └── NavigationBar/
     β”œβ”€β”€ features/
     β”‚    β”œβ”€β”€ auth/
     β”‚    β”œβ”€β”€ todo/
     β”‚    β”œβ”€β”€ goal/
     β”‚    β”œβ”€β”€ team/
     β”‚    β”œβ”€β”€ user/
     β”‚    β”œβ”€β”€ management/
     β”‚    β”œβ”€β”€ trash/
     β”‚    └── notification/
     β”œβ”€β”€ entities/
     β”‚    β”œβ”€β”€ auth/
     β”‚    β”œβ”€β”€ todo/
     β”‚    β”œβ”€β”€ goal/
     β”‚    β”œβ”€β”€ team/
     β”‚    β”œβ”€β”€ user/
     β”‚    β”œβ”€β”€ dashboard/
     β”‚    β”œβ”€β”€ notification/
     β”‚    └── trash/
     └── shared/
          β”œβ”€β”€ ui/
          β”‚    β”œβ”€β”€ Button/
          β”‚    β”œβ”€β”€ Input/
          β”‚    β”œβ”€β”€ Modal/
          β”‚    β”œβ”€β”€ Icon/
          β”‚    β”œβ”€β”€ AsyncBoundary/
          β”‚    β”œβ”€β”€ Toast/
          β”‚    └── ...
          β”œβ”€β”€ hooks/
          β”‚    β”œβ”€β”€ useOverlay/
          β”‚    β”œβ”€β”€ useInfiniteScroll/
          β”‚    └── ...
          β”œβ”€β”€ lib/
          β”‚    └── api/client.ts
          β”œβ”€β”€ store/
          β”‚    └── overlay/
          β”œβ”€β”€ mock/
          β”‚    β”œβ”€β”€ server.ts
          β”‚    └── browser.ts
          └── utils/

4. μ—­ν•  λΆ„λ‹΄

κΉ€μ’…μ§„

  • UI
    • νŽ˜μ΄μ§€ : λŒ€μ‹œλ³΄λ“œ, 개인 λͺ©ν‘œ 상세, λžœλ”© νŽ˜μ΄μ§€, νŒ€ λͺ©λ‘, νŒ€ 상세, νŒ€ 생성
    • 곡톡 μ»΄ν¬λ„ŒνŠΈ : NavigationBar, AsyncBoundary, Overlay μ‹œμŠ€ν…œ
  • κΈ°λŠ₯
    • API ν”„λ‘μ‹œ 및 토큰 μžλ™ κ°±μ‹ , FSD μ•„ν‚€ν…μ²˜ 섀계, MSW λͺ© ν•Έλ“€λŸ¬
    • νŒ€ μƒμ„±Β·μ‘°νšŒΒ·νŒ€μ› 관리, νŒ€ μ΄ˆλŒ€ 링크
    • ν•  일 CRUD, λ¬΄ν•œ 슀크둀,

ν™©νš¨μ§„

  • UI
    • νŽ˜μ΄μ§€ : 둜그인, νšŒμ›κ°€μž…, λ‚΄ ν”„λ‘œν•„
    • 곡톡 μ»΄ν¬λ„ŒνŠΈ : 인증 폼, InputBox
  • κΈ°λŠ₯
    • νŒ€ 관리
    • μ•Œλ¦Ό

zaenny

  • UI
    • νŽ˜μ΄μ§€ : ν•  일 상세 λͺ¨λ‹¬, νœ΄μ§€ν†΅
    • 곡톡 μ»΄ν¬λ„ŒνŠΈ : TodoDetailModal, ν•„ν„°Β·μ •λ ¬ UI
  • κΈ°λŠ₯
    • Auth, 둜그인 인증/인가
    • OAuth(Google, Kakao) 둜그인, νšŒμ›κ°€μž… μœ νš¨μ„± 검사, ν”„λ‘œν•„ μˆ˜μ •
    • νœ΄μ§€ν†΅ λ³΅κ΅¬Β·μ‚­μ œ

5. 개발 κΈ°κ°„ 및 μž‘μ—… 관리

개발 κΈ°κ°„

  • 전체 개발 κΈ°κ°„ : 2026-03-12 ~ μ§„ν–‰ 쀑
  • 기획 및 섀계 : 2026-03-12 ~ 2026-03-18
  • UI κ΅¬ν˜„ : 2026-03-19 ~ 2026-04-06
  • κΈ°λŠ₯ κ΅¬ν˜„ : 2026-04-07 ~ ν˜„μž¬

μž‘μ—… 관리

  • GitHub Projects와 Issuesλ₯Ό μ‚¬μš©ν•˜μ—¬ κΈ°λŠ₯ λ‹¨μœ„λ‘œ μž‘μ—…μ„ λΆ„λ°°ν•˜κ³  μ§„ν–‰ 상황을 κ³΅μœ ν–ˆμŠ΅λ‹ˆλ‹€.
  • μ •κΈ° 회의λ₯Ό 톡해 μž‘μ—… μˆœμ„œμ™€ FSD λ ˆμ΄μ–΄ 경계에 λŒ€ν•œ λ…Όμ˜λ₯Ό μ§„ν–‰ν•˜κ³  Notion에 κΈ°λ‘ν–ˆμŠ΅λ‹ˆλ‹€.

6. μ‹ κ²½ μ“΄ λΆ€λΆ„

[API ν”„λ‘μ‹œ μ•„ν‚€ν…μ²˜μ™€ 토큰 μžλ™ κ°±μ‹ ]

  • λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ΄ src/app/api/[...path]/route.tsλ₯Ό κ²½μœ ν•˜λ„λ‘ μ„€κ³„ν–ˆμŠ΅λ‹ˆλ‹€.
  • μΏ ν‚€μ—μ„œ accessToken을 읽어 Authorization 헀더λ₯Ό μ„œλ²„μ—μ„œ μ²¨λΆ€ν•˜λ―€λ‘œ 토큰이 ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œμ— λ…ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 401/403 응닡 μ‹œ 토큰을 μžλ™ κ°±μ‹ ν•˜κ³  μ›λž˜ μš”μ²­μ„ μž¬μ‹œλ„ν•΄ μ‚¬μš©μžκ°€ 둜그인 만료λ₯Ό μΈμ‹ν•˜μ§€ λͺ»ν•˜λ„둝 μ²˜λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

[Overlay / Modal μ‹œμŠ€ν…œ]

  • Zustand λ ˆμ΄μ–΄ μŠ€νƒμœΌλ‘œ λͺ¨λ‹¬Β·λ°”ν…€μ‹œνŠΈλ₯Ό μ „μ—­μ—μ„œ κ΄€λ¦¬ν•©λ‹ˆλ‹€.
  • useOverlay().open("id", <Component />) ν•œ μ€„λ‘œ μ–΄λŠ λ ˆμ΄μ–΄μ—μ„œλ“  λͺ¨λ‹¬μ„ μ—΄ 수 μžˆλ„λ‘ μΆ”μƒν™”ν–ˆμŠ΅λ‹ˆλ‹€.
  • exitOnUnmount: true(κΈ°λ³Έκ°’)둜 νŽ˜μ΄μ§€ 이동 μ‹œ 남은 λͺ¨λ‹¬μ΄ μžλ™μœΌλ‘œ λ‹«νž™λ‹ˆλ‹€.

[FSD μ•„ν‚€ν…μ²˜ μ€€μˆ˜]

  • pnpm steiger둜 λ ˆμ΄μ–΄ μœ„λ°˜μ„ μžλ™ κ°μ§€ν•©λ‹ˆλ‹€.
  • entities λ ˆμ΄μ–΄λŠ” 순수 HTTP 호좜만 λ‹΄λ‹Ήν•˜κ³ , μΊμ‹œ λ¬΄νš¨ν™”Β·λ„€λΉ„κ²Œμ΄μ…˜ λ“± μ‚¬μ΄λ“œ μ΄νŽ™νŠΈλŠ” λ°˜λ“œμ‹œ features/mutation ν›…μ˜ onSuccessμ—μ„œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

7. νŽ˜μ΄μ§€λ³„ κΈ°λŠ₯

[λžœλ”© νŽ˜μ΄μ§€]

  • μ„œλΉ„μŠ€ μ†Œκ°œ, μ£Όμš” κΈ°λŠ₯ μ•ˆλ‚΄, νŒ€μ› μ˜¨λ³΄λ”© 단계λ₯Ό μ‹œκ°μ μœΌλ‘œ μ „λ‹¬ν•©λ‹ˆλ‹€.
  • 둜그인 μƒνƒœμ— 따라 λŒ€μ‹œλ³΄λ“œ λ˜λŠ” 둜그인 νŽ˜μ΄μ§€λ‘œ μžλ™ μ΄λ™ν•©λ‹ˆλ‹€.
λžœλ”© νŽ˜μ΄μ§€

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

  • μ΄λ©”μΌΒ·λΉ„λ°€λ²ˆν˜Έ μž…λ ₯ μ‹œ μ‹€μ‹œκ°„ μœ νš¨μ„± 검사가 μ§„ν–‰λ˜κ³  ν†΅κ³Όν•˜μ§€ λͺ»ν•œ 경우 κ²½κ³  문ꡬ가 ν‘œμ‹œλ©λ‹ˆλ‹€.
  • Google, Kakao OAuth μ†Œμ…œ λ‘œκ·ΈμΈμ„ μ§€μ›ν•©λ‹ˆλ‹€.
  • 인증 μƒνƒœλŠ” Zustand persist λ―Έλ“€μ›¨μ–΄λ‘œ localStorage에 μœ μ§€λ©λ‹ˆλ‹€.
둜그인 νšŒμ›κ°€μž…

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

  • 둜그인 ν›„ 첫 ν™”λ©΄μœΌλ‘œ, 개인 μ§„ν–‰λ₯  μš”μ•½, 즐겨찾기 λͺ©ν‘œ, 였늘의 ν•  일 ν˜„ν™©μ„ ν•œλˆˆμ— 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 즐겨찾기 λͺ©ν‘œλŠ” λ¬΄ν•œ 슀크둀둜 탐색할 수 μžˆμŠ΅λ‹ˆλ‹€.
λŒ€μ‹œλ³΄λ“œ

[개인 λͺ©ν‘œ]

  • λͺ©ν‘œλ³„λ‘œ ν•  일(Todo)을 μƒμ„±Β·μˆ˜μ •Β·μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ§ˆκ°μΌΒ·μƒμ„±μΌ κΈ°μ€€ μ •λ ¬, To Do / Done ν•„ν„°λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.
  • μ»€μ„œ 기반 λ¬΄ν•œ 슀크둀둜 λŒ€λŸ‰μ˜ ν•  일을 μ„±λŠ₯ μ €ν•˜ 없이 νƒμƒ‰ν•©λ‹ˆλ‹€.
  • ν•  일 상세 λͺ¨λ‹¬μ—μ„œ λͺ©ν‘œ μ—°κ²°, 마감일, λ©”λͺ¨, 파일 첨뢀λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
개인 λͺ©ν‘œ 상세 ν•  일 생성

[νŒ€ 관리]

  • νŒ€μ„ μƒμ„±ν•˜κ³  μ΄ˆλŒ€ 링크λ₯Ό κ³΅μœ ν•΄ νŒ€μ›μ„ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • νŒ€ λͺ©ν‘œλ₯Ό μƒμ„±ν•˜κ³  νŒ€μ›μ—κ²Œ ν•  일을 ν• λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • νŒ€ 관리 νŽ˜μ΄μ§€μ—μ„œ 멀버 λͺ©λ‘ 쑰회 및 좔방이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
νŒ€ λͺ©λ‘ νŒ€ 상세

[λ‚΄ ν”„λ‘œν•„]

  • ν”„λ‘œν•„ 이미지, 이름, 이메일 정보λ₯Ό ν™•μΈν•˜κ³  μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ‘œκ·Έμ•„μ›ƒ μ‹œ μ €μž₯된 인증 정보가 μ΄ˆκΈ°ν™”λ˜κ³  λžœλ”© νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
λ‚΄ ν”„λ‘œν•„

[νœ΄μ§€ν†΅]

  • μ‚­μ œν•œ ν•  일이 λ³΄κ΄€λ˜λ©° λ³΅κ΅¬ν•˜κ±°λ‚˜ 영ꡬ μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
νœ΄μ§€ν†΅

[μ‹€μ‹œκ°„ μ•Œλ¦Ό]

  • SSE(Server-Sent Events)λ₯Ό 톡해 νŒ€ μ΄ˆλŒ€, ν•  일 λ³€κ²½ λ“±μ˜ μ•Œλ¦Όμ„ μ‹€μ‹œκ°„μœΌλ‘œ μˆ˜μ‹ ν•©λ‹ˆλ‹€.
  • μ•Œλ¦Ό λ“œλ‘œμ–΄μ—μ„œ 읽음 처리 및 λͺ©λ‘ 확인이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
μ•Œλ¦Ό

8. νŠΈλŸ¬λΈ” μŠˆνŒ…


9. κ°œμ„  λͺ©ν‘œ

  • μ ‘κ·Όμ„± κ°œμ„  : ν‚€λ³΄λ“œ λ„€λΉ„κ²Œμ΄μ…˜, ARIA 속성 μΆ”κ°€λ‘œ 슀크린 리더 ν˜Έν™˜μ„± ν–₯상
  • μ„±λŠ₯ μ΅œμ ν™”
    • 이미지 μ»΄ν¬λ„ŒνŠΈ next/image μ „ν™˜ 및 lazy loading 적용
    • λ²ˆλ“€ 크기 뢄석 ν›„ heavy dependency κ²½λŸ‰ν™”
  • ν…ŒμŠ€νŠΈ 컀버리지 ν™•λŒ€ : 핡심 mutation ν›…κ³Ό μ£Όμš” μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„ ν…ŒμŠ€νŠΈ μΆ”κ°€
  • μ—λŸ¬ 처리 고도화 : λ„€νŠΈμ›Œν¬ μ—λŸ¬Β·νƒ€μž„μ•„μ›ƒ 상황에 λŒ€ν•œ μ‚¬μš©μž ν”Όλ“œλ°± κ°œμ„ 

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors