Skip to content

Team Rule

anniemon edited this page Nov 10, 2021 · 35 revisions

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๊ทœ์น™ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ง‘๋‹ˆ๋‹ค. ํ•œ ์ค„๋งŒ ์ž‘์„ฑํ•ด๋„ ์„ค๋ช…์ด ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด ์ œ๋ชฉ๋งŒ์œผ๋กœ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋–ค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ๋งฅ๋ฝ๊ณผ ์„ค๋ช…์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๋ณธ๋ฌธ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ทœ์น™์ž…๋‹ˆ๋‹ค.

์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์„ ํ•œ ์ค„ ๋„์›Œ ๋ถ„๋ฆฌํ•ด ์ฃผ์„ธ์š”. ์ œ๋ชฉ์€ ์˜๋ฌธ ๊ธฐ์ค€ 50์ž ์ด๋‚ด๋กœ ์ ์–ด์ฃผ์„ธ์š”. ์ œ๋ชฉ ์ฒซ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ ์–ด์ฃผ์„ธ์š”. ์ œ๋ชฉ ๋์— . ๋Š” ๊ธˆ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ œ๋ชฉ์€ ๋ช…๋ น์–ด๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์€ 50์ž๋งˆ๋‹ค ์ค„์„ ๋ฐ”๊ฟ”์ฃผ์„ธ์š”. ๋ณธ๋ฌธ์€ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝํ–ˆ๋Š”์ง€ ๋ณด๋‹ค ๋ฌด์—‡์„ ๋ณ€๊ฒฝํ–ˆ๋Š”์ง€, ์™œ ๋ณ€๊ฒฝํ–ˆ๋Š”์ง€ ์— ๋งž์ถ”์–ด ์ž‘์„ฑํ•˜์„ธ์š”.

์˜ˆ์‹œ

Feat: Add get data api function
!BREAKING CHANGE: change API arguments
  1. ์‚ฌ์šฉํ•  ๋‹จ์–ด์˜ ๋ชฉ๋ก
    • ADD(๊ธฐ๋Šฅ์˜ ์ถ”๊ฐ€)
    • FIX(์• ๋Ÿฌ ์ˆ˜์ •)
    • MERGE(๋ณ‘ํ•ฉ)
    • REMOVE(์‚ญ์ œ)
    • UPDATE(๋ฌธ์„œ ํŒŒ์ผ์„ ์ˆ˜์ •)
    • REFACTOR(์ฝ”๋“œ์˜ ์ˆ˜์ •์„ ํ†ตํ•œ ๋ฆฌํŽ™ํ† ๋ง)
    • SIMPLIFY(์ฝ”๋“œ ๋‹จ์ˆœํ™”)
    • IMPROVE(๊ธฐ๋Šฅ์˜ ํ–ฅ์ƒ)
    • UPDATE(์ตœ์‹ ํ™”)
    • MOVE(์ฝ”๋“œ์˜ ์ด๋™)
    • RENAME(์ด๋ฆ„์˜ ๋ณ€๊ฒฝ)
    • VERIFY(๊ฒ€์ฆ)
  2. ๋™์‚ฌ : ์ดํ›„ ์งง๊ฒŒ ๋‚ด์šฉ์„ ์ ๋Š”๋‹ค.
  3. ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋™๋ช…์‚ฌ ๋Œ€์‹  ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  4. ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๊ด€์‚ฌ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  5. ๋ถ€์ •๋ฌธ์„ ์‚ฌ์šฉํ• ๋•Œ๋Š” Don't ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  6. ์ „์น˜์‚ฌ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ •ํ™•ํ•˜๊ฒŒ ์–ด๋–ค ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•œ ๊ฒƒ์ธ์ง€ ๋ช…์‹œํ•œ๋‹ค.

โ— ์ด๊ฒƒ์€ ๊ผญ ์ง€ํ‚ต์‹œ๋‹ค!

  • PR ์ „ ์ด์œ ์—†๋Š”์ฃผ์„์ด๋‚˜ console ๋“ฑ ์ง€์šฐ์ž!
  • PR ์‹œ ์–‘์‹ ํ†ต์ผ ํ•˜์ž!
  • img, btn, idx ๋“ฑ ๋ณ€์ˆ˜๋ช… ์ค„์—ฌ์“ฐ์ง€ ๋ง์ž!
  • ํ•จ์ˆ˜ ๋ช…์€ ๋ฌด์กฐ๊ฑด ๋™์‚ฌ๋กœ ํ†ต์ผํ•˜์ž!
  • Boolean ๊ฐ’์€ is(ex. isLogin)๋ช…์‚ฌ๋กœ ํ†ต์ผํ•˜์ž!
  • ๋ฐฐํฌ ์ฃผ๊ธฐ๋Š” feature ํ•˜๋‚˜ ํ•ฉ์น  ๋•Œ๋งˆ๋‹ค ๋‹ค๊ฐ™์ด ํ•˜์ž!
  • ๋…ผ์˜๋˜์ง€ ์•Š์€ ์ƒˆ๋กœ์šด ์Šคํƒ ์‚ฌ์šฉ ํ•˜์ง€๋ง์ž!
  • ํ˜ผ์ž์„œ MERGE,PR ๊ธˆ์ง€! ํ•„์š”ํ•  ์‹œ ์ƒ์˜ํ›„ PR ํ•˜์ž!

๐Ÿ’… Front-end

  • ์Šคํฌ๋กค๋ฐ” ํ•ญ์ƒ๋ณด๊ธฐ ํ‘œ์‹œํ•˜์ž !
  • ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ์‹ ๊ฒฝ์“ฐ์ž (ex. ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ) !
  • ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ PascalCase๋กœ ํ†ต์ผ ํ•˜์ž! (ex. WebDesign )
  • ์ด๋ฏธ ๋””์ž์ธ ๊ฐ€์ด๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ์žˆ๋Š” CSS ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž! (ex. Material UI, Ant design, bootstrap)
  • UX์ƒ ๋‚˜์œ ๋””์ž์ธ์œผ๋กœ ํ‰๊ฐ€๋ฐ›๋Š” ๋ธŒ๋ผ์šฐ์ € ๋‚ด์žฅ ๊ธฐ๋Šฅ์˜ ์ง€๋‚˜์นœ ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž!(ex. `alert, prompt, confirm)
  • ์ฝ˜ํ…์ธ ๊ฐ€ ์กด์žฌํ•˜๋‚˜ ์Šคํฌ๋กค ํ•  ์ˆ˜ ์—†๋Š” ์˜์—ญ์ด ์กด์žฌ ํ•˜๋ฉด ์•ˆ๋œ๋‹ค!
  • "์Šคํฌ๋กค๋ฐ” ํ•ญ์ƒ๋ณด๊ธฐ" ์˜ต์…˜์„ ์‚ฌ์šฉ์‹œ, ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์Šคํฌ๋กค๋ฐ”๊ฐ€ ๋ณด์ž„ ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž!
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์—๋Ÿฌ๊ฐ€ ์žˆ์„๊ฒฝ์šฐ ์•ˆ๋‚ด๊ฐ€ ๋‚˜์™€์„œ ๋ช…์‹œ์ ์œผ๋กœ ๋ณด์ด๊ฒŒ๋” ํ•˜์ž!
  • ๋กœ๋”ฉ ์‹คํŒจ ์‹œ ์ ์ ˆํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณต ํ•˜์ž!
  • ๋กœ๋”ฉ ์‹œ ๋ ˆ์ด์•„์›ƒ์ด ๊นจ์ง ํ˜„์ƒ์ด ์—†๊ฒŒ ๋กœ๋”ฉ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ž!
  • ๊ฐœ๋ฐœ์ž ์ฝ˜์†”์„ ์—ด์—ˆ์„ ๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ํ•˜์ž!
  • ๋กœ๊ทธ์ธ์„ ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ผ๋ถ€ ๊ธฐ๋Šฅ์— ์ œํ•œ์„ ๋‘๊ฒŒ ๋งŒ๋“ค์ž!

๐Ÿ“š Back-end

  • ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋Š” ๋ฌด์กฐ๊ฑด ํ•œ๊ธ€๋กœ ์ ์ž!
  • ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ฒŒ ํ•˜์ž!
  • EndPoint, DataBase Table ๋ชจ๋‘ ๋‹จ์ˆ˜ ํ˜•์‹์œผ๋กœ ํ†ต์ผ ํ•˜์ž! (ex. number , list)
  • ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ตฌํ˜„์‹œ passport.js ์‚ฌ์šฉ์„ ํ•˜์ง€ ๋ง์ž!

๐Ÿ“‚ API

  • ๋ฆฌ์†Œ์Šค CRUD์‹œ ๋ชฉ์ ์— ๋งž๋Š” HTTP ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ž!
  • ๋ฆฌ์†Œ์Šค CRUD์‹œ ์—”๋“œํฌ์ธํŠธ์— ๋™์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž!
  • ๋ฆฌ์†Œ์Šค ์š”์ฒญ/์‘๋‹ต์‹œ ํ•„์š”ํ•œ json์˜ ํ‚ค/๊ฐ’ ํƒ€์ž…์„ ๋ช…์‹œํ•˜์ž!
  • ๋ฆฌ์†Œ์Šค ์—ฌ๋Ÿฌ ๊ฐœ ์กฐํšŒ ์‹œ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์ž!
  • HTTP ์‘๋‹ต ์ฝ”๋“œ์˜ ์‚ฌ์šฉ์ด ์ ์ ˆํ•˜๊ฒŒ ํ‘œ์‹œ๋˜๊ฒŒ ํ•˜์ž!
  • ์‘๋‹ต ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์˜ ์ผ๊ด€์„ฑ์ด ์žˆ๊ฒŒ ์ž‘์„ฑํ•˜์ž!
  • ๋ฆฌ์†Œ์Šค ์กฐํšŒ ์‹œ json๊ณผ ์Šคํ‚ค๋งˆ field๊ฐ„์˜ ์ผ๊ด€์„ฑ์ด ์žˆ๊ฒŒ ๋งŒ๋“ค์ž!
  • ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ ์‹œ ์‹ ๊ทœ ์•„์ด๋””๋ฅผ ๋ฆฌํ„ดํ•˜์ž!
  • ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์š”์ฒญ์— ํ† ํฐ ๋˜๋Š” ์„ธ์…˜์„ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“ค์ž!
  • ํŠน์ • ์‚ฌ์šฉ์ž์™€ ์—ฐ๊ด€๋œ ๋ฆฌ์†Œ์Šค ์กฐํšŒ์‹œ ๊ถŒํ•œ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•ด์„œ ๋งŒ๋“ค์ž!
  • JWT ์‚ฌ์šฉ์‹œ ํ—ค๋”์— ํ† ํฐ์„ ์ „๋‹ฌํ•˜๋Š” ๋‚ด์šฉ์„ ๋ช…์‹œํ•ด์„œ ๋งŒ๋“ค์ž!
  • ์—”๋“œํฌ์ธํŠธ๊ฐ€ spinal-case (์†Œ๋ฌธ์ž์™€ ๋Œ€์‹œ ๋ฌธ์ž์—ด) ๋ฅผ ๋”ฐ๋ฅด๊ฒŒ๋” ๋งŒ๋“ค์ž!
  • GET ์š”์ฒญ์—์„œ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ๋Œ€์‹  HTTP body๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋งŒ๋“ค์ž!
  • HTTP body๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ  ๋งŒ๋“ค์ž!

๐Ÿ” Schema

  • ์Šคํ‚ค๋งˆ์˜ 1:N, N:M ๊ด€๊ณ„๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ๋งŒ๋“ค์ž!
  • Join Table์˜ ์ด๋ฆ„์ด, ๊ด€๊ณ„์žˆ๋Š” ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ํฌํ•จํ•˜๊ฒŒ ๋งŒ๋“ค์ž!
  • ๋ฆฌ์†Œ์Šค์˜ CRUD์— ํ•„์š”ํ•œ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•˜๋„๋ก ํ•ด์„œ ๋งŒ๋“ค์ž!

TASK CARD ์˜ˆ์‹œ

<TASK CARD ์˜ˆ์‹œ>

ISSUE Group: client, server, sr Type: bug, feature, delete

TODO -[ ] Job1 -[ ] Job2 -[ ] Job3

Estimated time Pick one

0.5h 1h 1.5h 2h 2.5h 3h

Labels Estimated time: E: 1h Group : client, server Sprint: Sprint__NUMBER__ Urgency: High, Middle, Low

npm & node version ํ†ต์ผ

npm 8.1.0 node 16.13.0

Clone this wiki locally