Skip to content

Central-MakeUs/Delta-front

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

719 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์„ธ๋ชจ

๋‚˜๋งŒ์˜ ์ˆ˜ํ•™ ์˜ค๋‹ต๋…ธํŠธ


Team Delta Front

ํ•™์ƒ์ด ๋งŒ๋“  ์˜ค๋‹ต์„ ๋ชจ์•„ ํ•™์Šต ํ๋ฆ„์„ ๋Š๊น€ ์—†์ด ์ด์–ด์ฃผ๋Š” ๋‚˜๋งŒ์˜ ์ˆ˜ํ•™ ์˜ค๋‹ต๋…ธํŠธ ํ”Œ๋žซํผ

์„ธ๋ชจ๋Š” ์˜ค๋‹ต์„ ๋‹จ์ˆœํžˆ โ€œ์ €์žฅโ€ํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ์•„๋‹ˆ๋ผ, ์˜ค๋‹ต์„ ๋‹ค์‹œ ํ’€๊ณ  ์ •๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ์Šต๊ด€์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š” ํ•™์Šต ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.
๋“ฑ๋ก โ†’ ํ™•์ธ โ†’ ๋ณต์Šต โ†’ ์‹œ๊ฐํ™”๊นŒ์ง€ ํ•œ ํ๋ฆ„์œผ๋กœ ์—ฐ๊ฒฐํ•ด, ์˜ค๋‹ต ์ •๋ฆฌ๊ฐ€ ์‹ค์ œ ์‹ค๋ ฅ ํ–ฅ์ƒ์œผ๋กœ ์ด์–ด์ง€๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋‹ต์ด ์Œ“์ด๋ฉด, ๋‹ค์‹œ ํ’€๊ณ  ์ •๋ฆฌํ•  ์ด์œ ๊ฐ€ ์ƒ๊ธฐ๊ณ 
๊ทธ ๊ณผ์ •์ด ๋ฐ˜๋ณต๋˜๋ฉด ๊ณต๋ถ€๊ฐ€ โ€œ์ง€์†๋˜๋Š”โ€ ๊ฒฝํ—˜์œผ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.

์„ธ๋ชจ๋กœ ๊ณต๋ถ€ํ•˜๋ฉด, ์„ฑ์ ์ด ๋‹ฌ๋ผ์ง€๋Š” ์ด์œ 

- ์˜ค๋‹ต์„ ์œ ํ˜•์ด ์•„๋‹ˆ๋ผ ์™œ ํ‹€๋ ธ๋Š”์ง€๊นŒ์ง€ ํŒŒํ—ค์ณ์„œ ๋ณด์—ฌ์ค˜์š”.
- ํ•„์š”ํ•œ ์˜ค๋‹ต๋งŒ ์™์™! ์‹œํ—˜์ง€ PDF๋กœ ๋งŒ๋“ค์–ด์š”.
- ์˜ค๋‹ต์ด ์•„๋‹Œ ํ‹€๋ฆฐ ์ด์œ ๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ๋ ค์ค˜์š”.  
- ์œ ์‚ฌ ๋ฌธ์ œ๋กœ ์™„์ „ํžˆ ์ต์ˆ™ํ•ด์งˆ ๋•Œ๊นŒ์ง€ ํ’€์–ด์š”.
- ํ˜„์žฌ ๊ธฐ์ค€ ์˜ˆ์ƒ ์ ์ˆ˜์™€ ๋‹ค์Œ ํ•™์Šต ๋ชฉํ‘œ๋ฅผ ์•Œ๋ ค์ค˜์š”.

ํŒ€์›

๋ฐฅ๋น„ ๋น™๋น™
์œค์†Œ์€ ๊น€์ค€ํœ˜

๐Ÿ›  Tech Stack

์—ญํ•  ์ข…๋ฅ˜
Monorepo / Workspace pnpm Workspace
Framework Next.js
Library React
Programming Language TypeScript
Data Fetching / HTTP TanStack Query Axios
Styling Vanilla Extract
UI Docs / Visual Testing Storybook Chromatic
Testing Vitest Playwright
Linting / Formatting ESLint Prettier
CI / Deployment (CD) GitHub Actions Vercel

๐Ÿงญ Workflow & Conventions

ํŒ€ ์ƒ์‚ฐ์„ฑ์„ ์œ„ํ•ด โ€œ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๊ทœ์น™โ€์„ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์€ ์ด์Šˆ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , PR ๋‹จ์œ„๋กœ ๊ณต์œ /๋ฆฌ๋ทฐ/๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค.


๐ŸŒฟ Branch

๐Ÿงญ Branch Strategy (GitHub Flow + develop)

์šฐ๋ฆฌ ๋ธŒ๋žœ์น˜ ์ „๋žต์€ GitHub Flow ๊ธฐ๋ฐ˜ + develop ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  • develop: ๊ฐœ๋ฐœ์šฉ(ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜) โ€” ๋ชจ๋“  ์ž‘์—… ๋ธŒ๋žœ์น˜๋Š” develop๋กœ PR ํ›„ ๋จธ์ง€
  • main: ๋ฐฐํฌ์šฉ(๋ฆด๋ฆฌ์ฆˆ ๋ธŒ๋žœ์น˜) โ€” ๋ฐฐํฌ ์‹œ์ ์—๋งŒ develop โ†’ main ๋จธ์ง€

๐ŸŒฑ Branch Naming Convention

์ด์Šˆ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ๋ธŒ๋žœ์น˜๋ช…์€ ์•„๋ž˜ ๊ทœ์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๋ธŒ๋žœ์น˜ ์šฉ๋„ ๊ทœ์น™ / ์˜ˆ์‹œ
develop ๊ฐœ๋ฐœ์šฉ(ํ†ตํ•ฉ) ๋ชจ๋“  ์ž‘์—… ๋ธŒ๋žœ์น˜๋Š” develop๋กœ PR
main ๋ฐฐํฌ์šฉ(๋ฆด๋ฆฌ์ฆˆ) ๋ฐฐํฌ ์‹œ์ ์—๋งŒ develop โ†’ main
feat/#<issue>/<name> ๊ธฐ๋Šฅ ์ž‘์—… feat/#1/card
fix/#<issue>/<name> ๋ฒ„๊ทธ ์ˆ˜์ • fix/#12/splash-redirect
refactor/#<issue>/<name> ๋ฆฌํŒฉํ† ๋ง refactor/#2/my-page
style/#<issue>/<name> ์Šคํƒ€์ผ/ํฌ๋งท style/#31/import-order
test/#<issue>/<name> ํ…Œ์ŠคํŠธ test/#18/bar-graph-utils
chore/#<issue>/<name> ์„ค์ •/์žก๋ฌด chore/#7/commitlint

๐Ÿงพ Pull Request

๐Ÿงท PR Title Convention

PR ์ œ๋ชฉ ๊ทœ์น™

PR ์ œ๋ชฉ์€ ์•„๋ž˜ ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • Type: ์ž‘์—… ๋‚ด์šฉ
  • Type์€ ์•ž ๊ธ€์ž ๋Œ€๋ฌธ์ž๋กœ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ) Feat: ํ™ˆ ๊ทธ๋ž˜ํ”„ ๋ชจ์…˜ ์ถ”๊ฐ€, Fix: ์Šคํ”Œ๋ž˜์‹œ ์žฌ๋…ธ์ถœ ๋ฌธ์ œ ํ•ด๊ฒฐ

๐Ÿงฉ PR Template Convention

PR์€ ์•„๋ž˜ ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ€๋Šฅํ•œ ์ž์„ธํ•˜๊ฒŒ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

<!---- 'Closes #'๋‹ค์Œ์— ์™„๋ฃŒํ•œ ์ด์Šˆ ๋„˜๋ฒ„๋ฅผ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”. ex) Closes #4 !-->

## ๐Ÿ”— ๊ด€๋ จ ์ด์Šˆ

Closes #

## ๐Ÿ’ก ์ž‘์—… ๋‚ด์šฉ

## ๐Ÿ’ฌ ์›ํ•˜๋Š” ๋ฆฌ๋ทฐ ๋ฐฉ์‹(์„ ํƒ)

## ๐Ÿ“ธ Screenshots or Video(์„ ํƒ)
  • UI ๋ณ€๊ฒฝ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์Šคํฌ๋ฆฐ์ƒท ํ•„์ˆ˜
  • ์ธํ„ฐ๋ ‰์…˜/ํ๋ฆ„์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ์˜์ƒ ๋˜๋Š” GIF ๊ถŒ์žฅ
  • ๋ฆฌ๋ทฐ์–ด์—๊ฒŒ ๋ถ€ํƒํ•˜๊ณ  ์‹ถ์€ ์ /ํ™•์ธ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„/๋„์›€์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์€ โ€œ์›ํ•˜๋Š” ๋ฆฌ๋ทฐ ๋ฐฉ์‹โ€์— ์ฃผ์ €ํ•˜์ง€ ๋ง๊ณ  ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿท๏ธ Label Policy

  • ๋ฆฌ๋ทฐ/๋จธ์ง€ ์ „์— ๋ผ๋ฒจ์„ ๊ผญ ๋‹ฌ์•„ ์ฃผ์„ธ์š”.
  • ์ž‘์—… ๋‹ด๋‹น์ž์™€ ์ž‘์—… ์„ฑ๊ฒฉ์„ ์ถ”ํ›„ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์–ด์š”.

โœ… Merge Rule

์ตœ์†Œ 1๋ช… ์Šน์ธ(Approve) ํ›„ merge ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ํ•œ PR ๋‹จ์œ„๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•ด ๋ฆฌ๋ทฐ ๋ถ€๋‹ด์„ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค. merge๋œ ๋ธŒ๋žœ์น˜๋Š” ๋ฐ”๋กœ ์‚ญ์ œํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋ธŒ๋žœ์น˜๊ฐ€ ๋ˆ„์ ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿงพ Commit

๐Ÿงพ Commit Message Format

์•„๋ž˜ ํฌ๋งท์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • type: ์ž‘์—… ๋‚ด์šฉ
  • ์˜ˆ: fix: ~~ ๋ฒ„๊ทธ ์ˆ˜์ •, feat: ~~ ๊ธฐ๋Šฅ ๊ตฌํ˜„

๐Ÿท๏ธ Commit Types

Type ์„ค๋ช… ์˜ˆ์‹œ
โœจ feat ๊ธฐ๋Šฅ ๊ตฌํ˜„ / ์‹ ๊ทœ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ feat: ํ™ˆ ๊ทธ๋ž˜ํ”„ ๋ชจ์…˜ ์ถ”๊ฐ€
๐Ÿ› fix ๋ฒ„๊ทธ ์ˆ˜์ • fix: ์Šคํ”Œ๋ž˜์‹œ๊ฐ€ ๋กœ๊ทธ์ธ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ›„ ๋‹ค์‹œ ๋œจ๋Š” ๋ฌธ์ œ ์ˆ˜์ •
๐Ÿ“ docs ๋ฌธ์„œ ์ˆ˜์ •(README/Wiki/๊ฐ€์ด๋“œ ๋“ฑ) docs: PR ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€
๐ŸŽจ style ํฌ๋งท/์Šคํƒ€์ผ ๋ณ€๊ฒฝ(๋™์ž‘ ๋ณ€ํ™” ์—†์Œ) style: import ์ •๋ ฌ ๋ฐ ํฌ๋งท ์ •๋ฆฌ
๐Ÿงช test ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€/์ˆ˜์ • test: ๊ทธ๋ž˜ํ”„ ์œ ํ‹ธ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
๐Ÿงน chore ์„ค์ •/์žก๋ฌด(๊ธฐ๋Šฅ๊ณผ ์ง์ ‘ ๊ด€๋ จ ์—†์Œ) chore: husky ์„ค์ • ์ถ”๊ฐ€
๐Ÿ—๏ธ build ๋นŒ๋“œ/๋ฒˆ๋“ค/๋ฐฐํฌ ๊ด€๋ จ ๋ณ€๊ฒฝ build: next ๋นŒ๋“œ ์„ค์ • ์ˆ˜์ •
๐Ÿงฉ refactor ๋ฆฌํŒฉํ† ๋ง(๋™์ž‘ ๋ณ€ํ™” ์—†์ด ๊ตฌ์กฐ ๊ฐœ์„ ) refactor: bar graph ๋ชจ์…˜ ๋กœ์ง ํ›…์œผ๋กœ ๋ถ„๋ฆฌ

๐Ÿงฑ Coding Convention

์šฐ๋ฆฌ ํŒ€์˜ ์ฝ”๋“œ ํ’ˆ์งˆ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‹ ๊ทœ/์ˆ˜์ • ์ฝ”๋“œ๋Š” ๋ณธ ๊ทœ์น™์„ ๊ธฐ๋ณธ์œผ๋กœ ๋”ฐ๋ฅด๋ฉฐ, ์˜ˆ์™ธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ PR์—์„œ ๊ทผ๊ฑฐ๋ฅผ ํ•จ๊ป˜ ๋‚จ๊น๋‹ˆ๋‹ค.

๐Ÿงญ ๊ธฐ๋ณธ ์›์น™

TypeScript ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ , ์Šคํƒ€์ผ์€ Vanilla Extract(.css.ts)๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ๊ฒฝ๋กœ import๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, index๋ฅผ key๋กœ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. var ํ‚ค์›Œ๋“œ๋Š” ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ณตํ†ต(shared) ์ฝ”๋“œ๋Š” ํŠน์ • ํŽ˜์ด์ง€/๋„๋ฉ”์ธ์— ๊ฐ•ํ•˜๊ฒŒ ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•˜์—ฌ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ „์—ญ ์ƒํƒœ ์ ‘๊ทผ์ด๋‚˜ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋Š” ์ตœ์†Œํ™”ํ•˜๊ณ , ํ•„์š” ์‹œ props/์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ฃผ์ž…ํ•ด ๊ต์ฒด ๊ฐ€๋Šฅ์„ฑ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.


๐Ÿท๏ธ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜
๋Œ€์ƒ ๊ทœ์น™ ์˜ˆ์‹œ
ํด๋”/ํŒŒ์ผ๋ช… kebab-case bar-graph-01.tsx, use-bar-graph-motion.ts
์ปดํฌ๋„ŒํŠธ/ํƒ€์ž… PascalCase BarGraph01, CardGraph01Props
๋ณ€์ˆ˜/ํ•จ์ˆ˜ camelCase handleClick, isActive
์ƒ์ˆ˜ BIG_SNAKE_CASE GRAPH_TABS, STATE_KEY
Props ํƒ€์ž… ์ปดํฌ๋„ŒํŠธ๋ช… + Props ButtonProps, AnswerSectionProps
API ์‘๋‹ต ํƒ€์ž… XXXResponse GetUserListResponse
ํ•จ์ˆ˜ ์ ‘๋‘์‚ฌ ์˜๋ฏธ์— ๋งž๋Š” ์ ‘๋‘์‚ฌ ์‚ฌ์šฉ get/create/check/handle/is/has/can...
TanStack Query ํ›… use + ํ–‰์œ„ + ๋Œ€์ƒ + Query/Mutation useGetUserListQuery, usePostCommentMutation
โš›๏ธ React ์ปดํฌ๋„ŒํŠธ ๊ทœ์น™

์ปดํฌ๋„ŒํŠธ๋Š” ์ ‘๊ทผ์„ฑ์„ ๊ธฐ๋ณธ์œผ๋กœ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„ํŠผ/ํƒญ/๋‹ค์ด์–ผ๋กœ๊ทธ ๋“ฑ ์ƒํ˜ธ์ž‘์šฉ ์š”์†Œ๋Š” ์ ์ ˆํ•œ role๊ณผ aria ์†์„ฑ์„ ์ œ๊ณตํ•˜๊ณ , ํด๋ฆญ ๊ฐ€๋Šฅํ•œ ์š”์†Œ๋Š” ํ‚ค๋ณด๋“œ ์กฐ์ž‘ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ Œ๋” ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ์žฌ๋ Œ๋”๋ฅผ ํ”ผํ•˜๊ณ , useMemo, useCallback, React.memo๋Š” โ€œํšจ๊ณผ๊ฐ€ ๋ช…ํ™•ํ•œ ๊ฒฝ์šฐ์—๋งŒโ€ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์ŠคํŠธ ๋ Œ๋”๋ง ์‹œ key๋Š” ๋ฐ˜๋“œ์‹œ ์•ˆ์ •์ ์ธ ์‹๋ณ„์ž(id)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. index key๋Š” ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽจ ์Šคํƒ€์ผ๋ง ๊ทœ์น™ (Vanilla Extract)

์Šคํƒ€์ผ์€ ๋ฐ˜๋“œ์‹œ .css.ts์—์„œ ์ •์˜ํ•˜๊ณ , ๋””์ž์ธ ํ† ํฐ์„ ์šฐ์„  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ๋‚˜ ํƒ€์ž… ๋ณ€ํ™”๋Š” recipe์™€ variant๋กœ ํ‘œํ˜„ํ•˜๊ณ , ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ค‘๋ณต๋˜๋Š” style ์„ ์–ธ์€ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•์€ @media, @container ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋˜, ๋™์ผ ํŒจํ„ด์ด ๋ฐ˜๋ณต๋˜๋ฉด ๊ณตํ†ต ์ƒ์ˆ˜/์œ ํ‹ธ๋กœ ์Šน๊ฒฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿช Hooks ๊ทœ์น™

์ปค์Šคํ…€ ํ›…์€ ํŒŒ์ผ๋ช…/ํ•จ์ˆ˜๋ช…์ด ๋ฐ˜๋“œ์‹œ use*๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ›…์ด ๋กœ๋”ฉ/์—๋Ÿฌ ์ƒํƒœ๋ฅผ ๋‹ค๋ฃฌ๋‹ค๋ฉด ํ˜ธ์ถœ๋ถ€์—์„œ ์ƒํƒœ๋ฅผ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

์ œ๋„ค๋ฆญ ํ›…์€ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ธฐ๋ณธ๊ฐ’์ด ์ ์ ˆํ•œ์ง€ ๊ฒ€ํ† ํ•˜๊ณ , TanStack Query ํ›…์€ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜(use + ํ–‰์œ„ + ๋Œ€์ƒ + Query/Mutation)์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๐Ÿ”Œ API ๊ทœ์น™

API ์ฝ”๋“œ๋Š” TanStack Query ํ†ตํ•ฉ์„ ์ „์ œ๋กœ ์ž‘์„ฑํ•˜๋ฉฐ, QueryKey Factory ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ํƒ€์ž…์€ ์ œ๋„ค๋ฆญ/๋ถˆ๋ณ€ ๋ฐ์ดํ„ฐ ๊ธฐ์ค€์œผ๋กœ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•˜๊ณ , ๋„ค์ด๋ฐ์€ HTTP๋ฉ”์„œ๋“œ + ๋ช…์‚ฌ ํ˜•ํƒœ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค(getUserList, postComment ๋“ฑ). async/await ํŒจํ„ด์€ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงญ ๋ผ์šฐํŒ… ๊ทœ์น™

๋ผ์šฐํŒ… ๊ตฌ์กฐ๋Š” ์ค‘์ฒฉ ๋ ˆ์ด์•„์›ƒ๊ณผ ์—๋Ÿฌ ๊ฒฝ๊ณ„๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋™์  import ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…์„ ๊ณ ๋ คํ•ด chunk ๋ถ„๋ฆฌ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ , ๋ผ์šฐํŠธ ์ „ํ™˜ ์‹œ ์ƒํƒœ ๋ณด์กด์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ „๋žต์„ ๋ช…ํ™•ํžˆ ํ•ฉ๋‹ˆ๋‹ค.

๐ŸงŠ ์ƒ์ˆ˜ ๊ทœ์น™

์ƒ์ˆ˜๋Š” BIG_SNAKE_CASE๋กœ ์ž‘์„ฑํ•˜๊ณ  export const๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค. ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฆฌํ„ฐ๋Ÿด์€ as const๋กœ ํƒ€์ž…์„ ์ขํ˜€ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›ก๏ธ ๋ณด์•ˆ/์„ฑ๋Šฅ ์ฒดํฌ

๋ฏผ๊ฐํ•œ ๊ฐ’(API ํ‚ค/์‹œํฌ๋ฆฟ ๋“ฑ)์€ ํ•˜๋“œ์ฝ”๋”ฉํ•˜์ง€ ์•Š๊ณ  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” โ€œ์™œ ํ•„์š”ํ•œ์ง€โ€์™€ โ€œ๋Œ€์ฒด ๊ฐ€๋Šฅ์„ฑ/๊ต์ฒด ์šฉ์ด์„ฑโ€์„ PR์— ๋‚จ๊น๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋„๊ตฌ(memo, useMemo, useCallback)๋Š” ๊ทผ๊ฑฐ๊ฐ€ ์žˆ๋Š” ๊ณณ์—๋งŒ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“š Storybook ๊ทœ์น™

์Šคํ† ๋ฆฌ ํŒŒ์ผ์€ ๊ฐ€๋Šฅํ•œ ํ•œ props ๋ณ€ํ˜•์„ ์ถฉ๋ถ„ํžˆ ์ปค๋ฒ„ํ•˜๋„๋ก ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” variant, disabled/active ์ƒํƒœ, edge case ๊ฐ’(๋นˆ ๊ฐ’/์ตœ๋Œ€์น˜/์ตœ์†Œ์น˜ ๋“ฑ)์„ ํฌํ•จํ•ด ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ ๋ฒ”์œ„๋ฅผ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿค– CI / CD

๐Ÿงช CI (GitHub Actions)

PR์ด develop, main์— ์˜ฌ๋ผ์˜ค๋ฉด ์•„๋ž˜ ์ฒดํฌ๊ฐ€ ์ž๋™ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • lint
  • typecheck
  • test
  • build

๐Ÿš€ CD (Vercel)

๋ฐฐํฌ๋Š” Vercel๋กœ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค. (๋ฐฐํฌ ํ”Œ๋กœ์šฐ๋Š” ํŒ€ ์ •์ฑ…์— ๋งž๊ฒŒ develop/main ๊ธฐ์ค€์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.)


image

Delta-front Wiki ์„ธ๋ชจ ยท ๋‚˜๋งŒ์˜ ์ˆ˜ํ•™ ์˜ค๋‹ต๋…ธํŠธ

Home ยท CI/CD ยท Convention ยท Troubleshooting

About

๐Ÿฅ‡ CMC 18th ๋Œ€์ƒ ๐Ÿฅ‡ ๋‚˜๋งŒ์˜ ์ˆ˜ํ•™ ์˜ค๋‹ต๋…ธํŠธ - ์„ธ๋ชจ

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages