Skip to content

Latest commit

ย 

History

History
134 lines (109 loc) ยท 4.03 KB

File metadata and controls

134 lines (109 loc) ยท 4.03 KB

๐Ÿค Contributing to ๋‚ด ์ฝ˜์„œํŠธ๋ฅผ ๋ถ€ํƒํ•ด

์ด ๋ฌธ์„œ๋Š” ๋‚ด ์ฝ˜์„œํŠธ๋ฅผ ๋ถ€ํƒํ•ด(๋‚ด์ฝ˜๋ถ€) ํ”„๋ก ํŠธ์—”๋“œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๊ธฐ์—ฌํ•  ๋•Œ ๋”ฐ๋ผ์•ผ ํ•˜๋Š” ํ˜‘์—… ๊ทœ์น™๊ณผ ์ฝ”๋“œ ์ปจ๋ฒค์…˜์„ ์ •๋ฆฌํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.


๐ŸŒฟ ๊ธฐ๋ณธ ์›Œํฌํ”Œ๋กœ์šฐ

  1. Issue ์ƒ์„ฑ (์ž‘์—… ๋ฒ”์œ„์™€ ๋ชฉ์  ์ •์˜)
  2. ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ํ›„ ์ž‘์—…
  3. PR ์ž‘์„ฑ ๋ฐ ๋ฆฌ๋ทฐ ์š”์ฒญ
  4. ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ PR ์Šน์ธ (2์ธ ์ด์ƒ)
  5. dev์— ๋ณ‘ํ•ฉ ํ›„ ์ž‘์—… ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

๐ŸŒฑ ๋ธŒ๋žœ์น˜ ์ „๋žต

๋ธŒ๋žœ์น˜ ์ข…๋ฅ˜

๊ตฌ๋ถ„ ๋ธŒ๋žœ์น˜๋ช…
๋ฐฐํฌ์šฉ main
๊ฐœ๋ฐœ์šฉ dev
๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์šฉ feat
๋ฒ„๊ทธ ์ˆ˜์ •์šฉ fix
๋ฆฌํŒฉํ† ๋ง์šฉ refactor
์Šคํƒ€์ผ์šฉ style
ํ™˜๊ฒฝ ์„ค์ •์šฉ chore
๋ฌธ์„œ์šฉ docs

๋ธŒ๋žœ์น˜ ๋„ค์ด๋ฐ ๊ทœ์น™

ํ˜•์‹: type/#์ด์Šˆ๋ฒˆํ˜ธ/์ž‘์—…๋ช…

  • type: feat / fix / refactor / style / chore / docs
  • #์ด์Šˆ๋ฒˆํ˜ธ: GitHub Issue ๋ฒˆํ˜ธ (์—†๋‹ค๋ฉด ๋จผ์ € ์ด์Šˆ ์ƒ์„ฑ)
  • ์ž‘์—…๋ช…: kebab-case๋กœ ์ž‘์„ฑ

์˜ˆ์‹œ:

feat/#23/concert-detail

๐Ÿ” Pull Request ๊ทœ์น™

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

ํ˜•์‹: [#์ด์Šˆ๋ฒˆํ˜ธ] ํƒ€์ž…(ํŽ˜์ด์ง€) : ์ž‘์—… ์š”์•ฝ

[#23] feat(login) : ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ž‘์„ฑ

PR ์ „ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • PR ์ œ๋ชฉ์ด ๊ทœ์น™์— ๋งž๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
  • ์ž‘์—… ๋‚ด์šฉ์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
  • console.log, debugger ์ œ๊ฑฐ
  • npm run lint ํ†ต๊ณผ ํ™•์ธ
  • UX์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ณ€๊ฒฝ์ด๋ผ๋ฉด ์Šคํฌ๋ฆฐ์ƒท/์˜์ƒ ์ฒจ๋ถ€
  • ํ•„์š” ์‹œ @garlatonic(๋ฐ•์ƒ์•„) ๋ฉ˜์…˜ํ•˜์—ฌ Copilot ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์š”์ฒญ

๐Ÿช„ ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜

ํ˜•์‹: ํƒ€์ž…(ํŽ˜์ด์ง€) : ์ž‘์—… ์š”์•ฝ

feat(login) : ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ž‘์„ฑ

์ปค๋ฐ‹ ํƒ€์ž…

ํƒ€์ž… ์„ค๋ช…
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix ๋ฒ„๊ทธ ์ˆ˜์ •
perf ์„ฑ๋Šฅ ๊ฐœ์„ 
refactor ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์Œ)
style UI/์Šคํƒ€์ผ, ํฌ๋งทํŒ… ๋ณ€๊ฒฝ (๋กœ์ง ๋ณ€ํ™” X)
chore ๋นŒ๋“œ, ์„ค์ •, ๊ธฐํƒ€ ์žก๋ฌด
docs ๋ฌธ์„œ ์ž‘์—…
test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ/์ˆ˜์ •

๐Ÿ’ป ์ฝ”๋“œ ์ปจ๋ฒค์…˜

ํƒญ ํฌ๊ธฐ: 2
์ปด๋งˆ: es5 ๊ธฐ์ค€
๋ฌธ์ž์—ด: ๋”๋ธ” ์ฟผํ„ฐ `"`
์„ธ๋ฏธ์ฝœ๋ก  `;` ์‚ฌ์šฉ
PR ์ „ `console.log` / `debugger` ์ œ๊ฑฐ

์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ

  • ์ปดํฌ๋„ŒํŠธ๋Š” ํ•จ์ˆ˜ ์„ ์–ธ์‹ ์‚ฌ์šฉ
export default function Component() {};
  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ: handle~ (์˜ˆ: handleDelete)
  • ์ฝœ๋ฐฑ Props: on~ (์˜ˆ: onEdit, onChange, onSubmit)
  • ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ์˜ Props์—๋Š” ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•ด ์‚ฌ์šฉ์„ฑ์„ ๋†’์ž„

ํƒ€์ž… ์ž‘์„ฑ

  • ํƒ€์ž… ํŒŒ์ผ: .ts ํ™•์žฅ์ž ์‚ฌ์šฉ (์˜ˆ: /types/{ํŽ˜์ด์ง€๋ช…}/index.ts)
  • type ์šฐ์„  ์‚ฌ์šฉ (interface๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋งŒ)
  • ํƒ€์ž… ๋ถˆ๋ถ„๋ช… ์‹œ:
    • ์šฐ์„  unknown์œผ๋กœ ์„ ์–ธ
    • TODO ์ฃผ์„์œผ๋กœ ๋ณด์™„ ํ•„์š”์„ฑ์„ ๋ช…์‹œ
  • null๋ณด๋‹ค undefined ์„ ํ˜ธ
    • ์˜ต์…”๋„ ์ฒด์ด๋‹ ?., ๋„ ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ?? ์ ๊ทน ์‚ฌ์šฉ

ํด๋ž˜์Šค/์Šคํƒ€์ผ

  • ํด๋ž˜์Šค ๋ณ‘ํ•ฉ ์‹œ twMerge ์‚ฌ์šฉ
  • ์™ธ๋ถ€์—์„œ ์ „๋‹ฌ๋ฐ›์€ className์€ ํ•ญ์ƒ ๋งˆ์ง€๋ง‰์— ๋ณ‘ํ•ฉํ•˜์—ฌ ์˜ค๋ฒ„๋ผ์ด๋“œ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€
  • ๊ณต์šฉ ์Šคํƒ€์ผ/๋ณ€์ˆ˜๋Š” global.css์— ์ •์˜

๐Ÿ“ ํŒŒ์ผ & ํด๋”

ํŒŒ์ผ & ๋„ค์ด๋ฐ ๊ทœ์น™

๊ตฌ๋ถ„ ์ปจ๋ฒค์…˜
ํŒŒ์ผ/ํด๋” kebab-case
์ปดํฌ๋„ŒํŠธ PascalCase
Hook useName
Boolean isName, hasName, canName, shouldName
Type/Interface Name, NameProps, NameType
Zustand Store useNameStore

๐Ÿงญ Next.js ์ž‘์—… ๊ฐ€์ด๋“œ

  • "use client"๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—๋งŒ ์„ ์–ธ
  • ๋ฐ์ดํ„ฐ ํŒจ์นญ์€ ๊ฐ€๋Šฅํ•œ ํ•œ Server Component์—์„œ ์ˆ˜ํ–‰ ํ›„ Client Component๋กœ ์ „๋‹ฌ
  • <Suspense>๋ฅผ ์ ๊ทน ์‚ฌ์šฉํ•ด ๊ตฌ์—ญ๋ณ„ ๋กœ๋”ฉ ์ƒํƒœ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌ
  • ์ด๋ฏธ์ง€์™€ ๋งํฌ๋Š” Next.js ์ปดํฌ๋„ŒํŠธ(<Image>, <Link>) ์‚ฌ์šฉ (import ๊ฒฝ๋กœ ์ฃผ์˜)
  • page.tsx๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Server Component๋กœ ์œ ์ง€, ํด๋ผ์ด์–ธํŠธ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ "use client" ์„ ์–ธ