Skip to content

๐Ÿ† SSAFY 8๊ธฐ [์ „๊ตญ ๊ฒฐ์„  2์œ„] SEMES ๊ธฐ์—… ์—ฐ๊ณ„ ์ž์œจ ํ”„๋กœ์ ํŠธ - ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ 'SEMAI'

Notifications You must be signed in to change notification settings

shpark0913/PJT_SEMAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

SEMAI: ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ AI

โญ๏ธ SEMES ๊ธฐ์—… ์—ฐ๊ณ„ ํ”„๋กœ์ ํŠธ
โญ๏ธ SSAFY ์ž์œจ ํ”„๋กœ์ ํŠธ 2์œ„ ์ˆ˜์ƒ(148๊ฐœ ํŒ€ ไธญ)


SEMAI ์„œ๋น„์Šค ๊ฐœ์š”

  • SEMAI๋Š” ํฌ๊ฒŒ ๋„ค ๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ํƒ‘์žฌํ•œ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.
    1. ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ OHT ํœ (wheel) ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ ๊ธฐ๋Šฅ
    2. ์ „์ดํ•™์Šต ๊ธฐ๋Šฅ
    3. ๋ ˆํฌํŠธ ๊ธฐ๋Šฅ
    4. AI ๋ถ„์„ ๊ธฐ๋Šฅ
  • OHT๋ž€?
    • Overhead Hoist Transport์˜ ์•ฝ์ž๋กœ, ๋ฐ˜๋„์ฒด ๊ณต์žฅ์—์„œ ์ฒœ์žฅ ๋ ˆ์ผ์„ ํ†ตํ•ด ๋ฐ˜๋„์ฒด ์†Œ์žฌ๋ฅผ ์˜ฎ๊ธฐ๋Š” ์žฅ๋น„์ด๋‹ค.
    • ์‚ผ์„ฑ์ „์ž P1๋ผ์ธ์—๋งŒ 1850๋Œ€์˜ OHT๊ฐ€ ๊ฐ€๋™๋˜๊ณ  ์žˆ๋‹ค(๊ด€๋ จ ๊ธฐ์‚ฌ).
    • OHT์™€ OHT ํœ 
      * ๋ณด์•ˆ ๋ฌธ์ œ๋กœ README์—์„œ ์‹ค์ œ ํœ  ๋ฐ ๋ณผํŠธ ์‚ฌ์ง„์€ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€.
  • SEMAI์˜ ํ•„์š”์„ฑ
    • OHT ํœ ์— ๋Œ€ํ•œ ์ •ํ™•ํ•˜๊ณ  ํšจ์œจ์ ์ธ ์ ๊ฒ€์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ OHT ํœ  ๋ณผํŠธ ์‚ฌ์ „ ์ด์ƒ ์˜ˆ๋ฐฉ ์‹œ์Šคํ…œ์˜ ํ•„์š”์„ฑ์ด ๋Œ€๋‘๋˜์—ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ ์†Œ๊ฐœ

* ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ ์ƒ์„ธ ๋‚ด์šฉ์€ ai, backend, frontend ํด๋” ๋‚ด์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ.

1. ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ ๊ธฐ๋Šฅ

  • ํœ  ์ด๋ฏธ์ง€๊ฐ€ input์œผ๋กœ ๋“ค์–ด์˜ค๋ฉด ํœ  ๋‚ด ๋ณผํŠธ๋ฅผ ํƒ์ง€ํ•˜์—ฌ ๋ณผํŠธ ์ด๋ฏธ์ง€๋ฅผ ์ถ”์ถœํ•˜๊ณ , ์ถ”์ถœ๋œ ์ด๋ฏธ์ง€๋“ค์„ ๋ถ„๋ฅ˜ ๋ชจ๋ธ์— ๋„ฃ์–ด ์ •์ƒ/์œ ์‹ค/ํŒŒ๋‹จ/ํ’€๋ฆผ์„ ๋ถ„๋ฅ˜ํ•œ๋‹ค.

  • ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ๋„

    โ‘  ํœ  ์ด๋ฏธ์ง€๊ฐ€ ์ดฌ์˜๋˜๋ฉด ํ•ด๋‹น ์ด๋ฏธ์ง€๊ฐ€ Spring Boot๋กœ ์ „๋‹ฌ๋œ๋‹ค.
    โ‘ก Spring Boot์—์„œ Fast API๋กœ ํ•ด๋‹น ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
    โ‘ข ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ ๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ตํ•œ๋‹ค.
    โ‘ฃ ๋Œ€์‹œ๋ณด๋“œ์— ์—…๋ฐ์ดํŠธ ๋  ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.
    โ‘ค ์ตœ๊ทผ ์ง„๋‹จ ๋‚ด์—ญ์„ ๋Œ€์‹œ๋ณด๋“œ์— ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
    โ‘ฅ ์ตœ๊ทผ ์ง„๋‹จ ๋‚ด์—ญ์„ ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์ธํ•œ๋‹ค.


2. ์ „์ดํ•™์Šต ๊ธฐ๋Šฅ

  • SEMAI๊ฐ€ ๋™์ž‘ํ•˜๋ฉฐ ์Œ“์ด๋Š” ํด๋ž˜์Šค๋ณ„(์ •์ƒ/์œ ์‹ค/ํŒŒ๋‹จ/ํ’€๋ฆผ) ๋ณผํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์ „์ดํ•™์Šต์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
  • ์ „์ดํ•™์Šต ์‹œ์Šคํ…œ ๊ตฌ์„ฑ๋„

    โ‘  ์ „์ดํ•™์Šต ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.
    โ‘ก ์ „์ดํ•™์Šต์— ์‚ฌ์šฉํ•  ์ด๋ฏธ์ง€ ์„ ํƒ ๋ฐ ํ•™์Šต ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค.
    โ‘ข ์ „์ดํ•™์Šต์„ ์š”์ฒญํ•œ๋‹ค.
    โ‘ฃ ์ „์ดํ•™์Šต์„ ์ง„ํ–‰์‹œํ‚จ๋‹ค.
    โ‘ค ์ „์ดํ•™์Šต ์™„๋ฃŒ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    โ‘ฅ ์ „์ดํ•™์Šต ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    โ‘ฆ ์ „์ดํ•™์Šต ๊ฒฐ๊ณผ ์•Œ๋ฆผ์„ ๋„์šด๋‹ค.
    โ‘ง ์ „์ดํ•™์Šต ๊ฒฐ๊ณผ ์•Œ๋ฆผ์„ ํ™•์ธํ•œ๋‹ค.

3. ๋ ˆํฌํŠธ ๊ธฐ๋Šฅ

  • ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ ๊ธฐ๋ก์„ ์ž์„ธํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒ€์‚ฌ ๊ธฐ๊ฐ„ ์„ค์ •, ์ •๋ ฌ ๋“ฑ์œผ๋กœ ์›ํ•˜๋Š” ๊ธฐ๋ก๋งŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๊ณ , CSV ํŒŒ์ผ๋กœ ๊ธฐ๋ก์„ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ ˆํฌํŠธ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ๋„

    โ‘  ๋ ˆํฌํŠธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.
    โ‘ก ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ๋‹ค.
    โ‘ข ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค.
    โ‘ฃ ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    โ‘ค ์‚ฌ์šฉ์ž๊ฐ€ ์กฐํšŒํ•œ ๋‚ด์—ญ์„ ๋ณด์—ฌ์ค€๋‹ค.
    โ‘ฅ ์‚ฌ์šฉ์ž๊ฐ€ ์กฐํšŒํ•œ ๋‚ด์—ญ์„ ํ™•์ธํ•œ๋‹ค.

4. AI ๋ถ„์„ ๊ธฐ๋Šฅ

  • ๋‹น์› ๋ˆ„์  ์ด์ƒ ๋ณผํŠธ ๊ฐœ์ˆ˜๊ฐ€ ์ •์ƒ ๋ฒ”์ฃผ๋ฅผ ๋ฒ—์–ด๋‚œ ์ด์ƒ(anomaly) ํœ ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ตœ๊ทผ 52์ฃผ ๋ถˆ๋Ÿ‰ ๋ณผํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์˜ˆ์ธก๋œ ์ฐจ์ฃผ ๊ต์ฒด ์˜ˆ์ƒ ํœ  ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • AI ๋ถ„์„ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ๋„

    โ‘  AI ๋ถ„์„ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.
    โ‘ก ์ด์ƒ ์œ„ํ—˜ ํœ , ์ฐจ์ฃผ ๊ต์ฒด ์˜ˆ์ƒ ํœ  ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค.
    โ‘ข ์ด์ƒ ์œ„ํ—˜ ํœ , ์ฐจ์ฃผ ๊ต์ฒด ์˜ˆ์ƒ ํœ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    โ‘ฃ ์ด์ƒ ์œ„ํ—˜ ํœ  ๋ฐ ์ฐจ์ฃผ ๊ต์ฒด ์˜ˆ์ƒ ํœ  ๊ฐœ์ˆ˜, ์ด์ƒ ์œ„ํ—˜ ํœ  ํ‘œ ๋ฐ ์ด์ƒ ๋ณผํŠธ ๊ฐœ์ˆ˜ 3์ฐจ์› ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
    โ‘ค AI ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•œ๋‹ค.

ํŒ€ ์†Œ๊ฐœ


๊ธฐ์ˆ ์Šคํƒ

โญ๏ธ Platforms & Languages โญ๏ธ




๐Ÿ›  Tools ๐Ÿ› 



Conventions

1. Git Convention

๐Ÿ“Œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜

๐Ÿ› [BE] ๋ ˆํฌํŠธ ๋””ํ…Œ์ผ ๋ฐ์ดํ„ฐ ์ˆ˜์ • S08P31A301-652 ๊นƒ๋ชจ์ง€ - [ํŒŒํŠธ] - ๋‚ด์šฉ - ์ด์Šˆ ๋ฒˆํ˜ธ

๐Ÿ–คย ๊ทœ์น™์— ๋งž๋Š” ์ข‹์€ ์ปค๋ฐ‹๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

  • ํŒ€์›๊ณผ์˜ ์†Œํ†ต
  • ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ณผ๊ฑฐ ์ถ”์  ๊ฐ€๋Šฅ
  • ๋‚˜์ค‘์— ์‹ค๋ฌด์—์„œ ์ต์ˆ™ํ•ด์ง€๊ธฐ ์œ„ํ•ด

๐Ÿ–คย ํ•œ ์ปค๋ฐ‹์—๋Š” ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋งŒ!

  • ์ถ”์  ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€ํ•ด์ฃผ๊ธฐ
  • ๋„ˆ๋ฌด ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ•œ ์ปค๋ฐ‹์— ๋‹ด์œผ๋ฉด ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

๐Ÿ–คย CLI์—์„œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์Œ๋”ฐ์˜ดํ‘œ๋ฅผ ๋‹ซ์ง€ ๋ง๊ณ  ๊ฐœํ–‰ํ•˜๋ฉฐ ์ž‘์„ฑ โ†’ ๋‹ค ์ž‘์„ฑํ•œ ํ›„์— ์Œ๋”ฐ์˜ดํ‘œ๋ฅผ ๋‹ซ์œผ๋ฉด ์ž‘์„ฑ ์™„๋ฃŒ
git commit -m "FEAT: ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ์ถ”๊ฐ€

- ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ์ถ”๊ฐ€"

1. ์ปค๋ฐ‹ ์œ ํ˜• ์ง€์ •

  • ์ปค๋ฐ‹ ์œ ํ˜•์€ ๊นƒ๋ชจ์ง€๋กœ ๋Œ€์ฒด

    ์ปค๋ฐ‹ ํƒ€์ž… ์˜๋ฏธ
    โœจ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ปค๋ฐ‹
    ๐Ÿ› ๋ฒ„๊ทธ ์ˆ˜์ •์— ๋Œ€ํ•œ ์ปค๋ฐ‹
    ๐Ÿ’„ CSS ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ
    โ™ป๏ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์— ๋Œ€ํ•œ ์ปค๋ฐ‹
    ๐ŸŽจ ์Šคํƒ€์ผ (์ฝ”๋“œ ํ˜•์‹ ๋ณ€๊ฒฝ: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋ณ€๊ฒฝ ์—†์Œ)
    ๐Ÿ“ ๋ฌธ์„œ ์ถ”๊ฐ€, ์ˆ˜์ •์— ๋Œ€ํ•œ ์ปค๋ฐ‹
    ๐Ÿ”จ ๋นŒ๋“œ ๊ด€๋ จ ํŒŒ์ผ ์ˆ˜์ •์— ๋Œ€ํ•œ ์ปค๋ฐ‹
    ๐Ÿšš ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช…์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…๋งŒ์ธ ๊ฒฝ์šฐ
    ๐Ÿ”ฅ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•œ ๊ฒฝ์šฐ
    ๐Ÿš€ CI ๊ด€๋ จ ์„ค์ •, ์ˆ˜์ •์— ๋Œ€ํ•œ ์ปค๋ฐ‹
    ๐Ÿ’ฌ ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ
    ๐Ÿ”€ ๋ธŒ๋žœ์น˜ ํ•ฉ๋ณ‘

2. ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์„ ๋นˆํ–‰์œผ๋กœ ๋ถ„๋ฆฌ

  • ์ปค๋ฐ‹ ์œ ํ˜• ์ดํ›„ ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์€ ํ•œ๊ธ€๋กœ ์ž‘์„ฑํ•˜์—ฌ ๋‚ด์šฉ์ด ์ž˜ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•  ๊ฒƒ
  • ๋ณธ๋ฌธ์—๋Š” ๋ณ€๊ฒฝํ•œ ๋‚ด์šฉ๊ณผ ์ด์œ  ์„ค๋ช… (์–ด๋–ป๊ฒŒ ๋ณด๋‹ค๋Š” ๋ฌด์—‡ & ์™œ๋ฅผ ์„ค๋ช…)

3. ์ œ๋ชฉ ์ฒซ ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ, ๋์—๋Š” . ๊ธˆ์ง€

4. ์ œ๋ชฉ์€ ์˜๋ฌธ ๊ธฐ์ค€ 50์ž ์ด๋‚ด๋กœ ํ•  ๊ฒƒ

5. ์ž์‹ ์˜ ์ฝ”๋“œ๊ฐ€ ์ง๊ด€์ ์œผ๋กœ ๋ฐ”๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋ง์ž

6. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•ญ๋ชฉ์ด ์žˆ๋‹ค๋ฉด ๊ธ€๋จธ๋ฆฌ ๊ธฐํ˜ธ๋ฅผ ํ†ตํ•ด ๊ฐ€๋…์„ฑ ๋†’์ด๊ธฐ

๐Ÿ“Œ git flow

๐Ÿ“Œ git flow

์ž‘์—…ํ•˜๋Š” ๋™์•ˆ default branch๋Š” develop.

โœ… pr ๋‚ ๋ฆด ๋•Œ ์–ด๋””๋กœ ๋‚ ๋ฆฌ๋Š” ๊ฑด์ง€ ๊ผญ ์ฒดํฌํ•˜๊ธฐ!

main โ†’ develop โ†’ feature-์ง€๋ผ ์ด์Šˆ ๋ฒˆํ˜ธ

main์€ ๋ชจ๋“  ์ž‘์—…์ด ๋๋‚œ ํ›„ develop์—์„œ merge ์‹œํ‚จ๋‹ค. โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”

  • main - ์ดˆ๊ธฐ ์„ธํŒ… ์กด์žฌ
  • develop - local ์ž‘์—… ์™„๋ฃŒ ํ›„ merge ๋ธŒ๋žœ์น˜
  • feature์ง€๋ผ ์ด์Šˆ ๋ฒˆํ˜ธ - ์ž‘์—… ๋ธŒ๋ Œ์น˜
  • local/feature-์ง€๋ผ ์ด์Šˆ ๋ฒˆํ˜ธ - ๊ฐ์ž์˜ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ธŒ๋žœ์น˜ โ†’ ex) feature-S08P31A301-652

โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”

  1. local - featureย ์—์„œ ๊ฐ์ž ๊ธฐ๋Šฅ ์ž‘์—…
  2. ์ž‘์—… ์™„๋ฃŒ ํ›„ย remote - developย ์— PR
  3. ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ›„ Confirm ๋ฐ›๊ณ  Merge
  4. remote - develop ์— Merge ๋  ๋•Œ ๋งˆ๋‹คย ๋ชจ๋“  ํŒ€์› remote - develop pullย ๋ฐ›์•„ ์ตœ์‹  ์ƒํƒœ ์œ ์ง€

main โ†’ develop โ†’ feature/๋‚ด์šฉ, fix/๋‚ด์šฉ, refactor/๋‚ด์šฉ


2. ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜

๐Ÿ“Œ FrontEnd

1. NAMING CONVENTIONS

  • components ์ด๋ฆ„์€ย Pascal Case๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • Non-components ์ด๋ฆ„์€ย Camel Case๋กœ ์ž‘์„ฑํ•œ๋‹ค.

2. BUG AVOIDANCE

  • nullย ๋˜๋Š”ย undefined์ผ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ optional chaining ์—ฐ์‚ฐ์ž (?.)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

3. ARCHITECTURE & CLEAN CODE

  • ์œ ํ‹ธ๋ฆฌํ‹ฐ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ํ”ผํ•œ๋‹ค.
  • Presentational ์ปดํฌ๋„ŒํŠธ์™€ Container ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ณ ์ฐจ ์ปดํฌ๋„ŒํŠธ(Higher Order Components, HOC)๋Š” ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.
  • JS, test, css๋กœ ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•œ๋‹ค.
  • ๋ถˆํ•„์š”ํ•œ ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ํ˜„์žฌ ํ™”๋ฉด๋ณด๋‹ค ๊ธด ์ฝ”๋“œ๋Š” ๋” ์ž‘์€ ๋‹จ์œ„์˜ ์ฝ”๋“œ๋กœ ๋ฆฌํŒฉํ† ๋ง ํ•œ๋‹ค.
  • ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ์ฝ”๋“œ๋Š” ์ปค๋ฐ‹ํ•˜์ง€ ๋ง๊ณ  ์‚ญ์ œํ•œ๋‹ค.

4. ES6

  • class component๊ฐ€ ์•„๋‹Œ function component๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • JSX ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • spread ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์‚ฌ์šฉํ•œ๋‹ค. let๊ณผ const๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. (var ์‚ฌ์šฉ๊ธˆ์ง€)
  • ๋˜๋„๋ก ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ง์ ‘ null์„ ์ฒดํฌํ•˜๊ธฐ ๋ณด๋‹ค optional chaining ์—ฐ์‚ฐ์ž (?.)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

5. TESTING

  • ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
  • ์ ์ • ์ˆ˜์ค€์˜ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ ํ…Œ์ŠคํŠธ ํŒŒ์ผ์—์„œ ํ•˜๋‚˜๋งŒ ํ…Œ์ŠคํŠธ ํ•œ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์•ˆ์—์„œ ๋กœ์ง์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋งŒ ํ…Œ์ŠคํŠธ ํ•œ๋‹ค.
  • ๋„คํŠธ์›Œํฌ, ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์™€ ์ง์ ‘ ํ†ต์‹ ํ•˜์ง€๋ง๊ณ  ๊ฐ€์งœ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

6. CSS

  • inline css๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ช…๋ช… ๊ทœ์น™์„ ์ง€ํ‚จ๋‹ค.

์ฐธ๊ณ  : https://www.jondjones.com/frontend/react/react-tutorials/react-coding-standards-and-practices-to-level-up-your-code/

๐Ÿ“Œ BackEnd

โ˜‘๏ธย ์ฝ”๋“œ ์ปจ๋ฒค์…˜

๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š” ์Œ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์žฅ์ด ์ข…๋ฃŒ๋  ๋•Œ๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์„ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.
๐Ÿซ ํ•จ์ˆ˜๋ช…, ๋ณ€์ˆ˜๋ช…์€ ์นด๋ฉœ์ผ€์ด์Šค๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
๐Ÿฅ™ URL, ํŒŒ์ผ๋ช…์€ ์ผ€๋ฐฅ์ผ€์ด์Šค๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ˜ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ํ•œ ์ค„์— ํ•˜๋‚˜์˜ ๋ฌธ์žฅ๋งŒ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์„์€ ์„ค๋ช…ํ•˜๋ ค๋Š” ๊ตฌ๋ฌธ์— ๋งž์ถฐ ๋“ค์—ฌ์“ฐ๊ธฐ ํ•ฉ๋‹ˆ๋‹ค.

// Good
function someFunction() {
  ...

  // statement์— ๊ด€ํ•œ ์ฃผ์„
  statements
}
์—ฐ์‚ฐ์ž ์‚ฌ์ด์—๋Š” ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค

a+b+c+d // bad
a + b + c + d // good
โ˜ ์ฝค๋งˆ ๋‹ค์Œ์— ๊ฐ’์ด ์˜ฌ ๊ฒฝ์šฐ ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

var arr = [1,2,3,4]; //bad
var arr = [1, 2, 3, 4]; //good
๐Ÿ”  ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ช…์˜ ๋งจ ์•ž๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ•ฉ๋‹ˆ๋‹ค.

function Person(){}
๐Ÿ”  ENUM์ด๋‚˜ ์ƒ์ˆ˜๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ•ฉ๋‹ˆ๋‹ค.

NORMAL_STATUS = 10;
๐Ÿ”  ํ•จ์ˆ˜๋ช…์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๊ณ ย ๋™์‚ฌ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

function getUserId(){}

โ˜‘๏ธย Structure

  1. ํŒจํ‚ค์ง€๋Š” ๋ชฉ์ ๋ณ„๋กœ ๋ฌถ๋Š”๋‹ค.
    • common(๊ณตํ†ต๊ธฐ๋Šฅ ๊ด€๋ จ ํŒจํ‚ค์ง€), user(User ๊ด€๋ จ ํŒจํ‚ค์ง€), coupon(์ฟ ํฐ ๊ด€๋ จ ํŒจํ‚ค์ง€)
  2. Controller์—์„œ๋Š” ์ตœ๋Œ€ํ•œ ์–ด๋–ค Service๋ฅผ ํ˜ธ์ถœํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ๊ณผ Exception์ฒ˜๋ฆฌ๋งŒ์„ ๋‹ด๋‹นํ•˜์ž.
    • Controller ๋‹จ์—์„œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์ง€์–‘ํ•œ๋‹ค.
  3. ํ•˜๋‚˜์˜ ๋ฉ”์†Œ๋“œ์™€ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ๋ชฉ์ ์„ ๋‘๊ฒŒ ๋งŒ๋“ ๋‹ค.
    • ํ•˜๋‚˜์˜ ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ ํ•œ๊ฐ€์ง€ ์ผ๋งŒ ํ•ด์•ผํ•œ๋‹ค.
    • ํ•˜๋‚˜์˜ ํด๋ž˜์Šค ์•ˆ์—์„œ๋Š” ๊ฐ™์€ ๋ชฉ์ ์„ ๋‘” ์ฝ”๋“œ๋“ค์˜ ์ง‘ํ•ฉ์ด์—ฌ์•ผํ•œ๋‹ค.
  4. ๋ฉ”์†Œ๋“œ์™€ ํด๋ž˜์Šค๋Š” ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ๋งŒ๋“ ๋‹ค.
    • ๋ฉ”์†Œ๋“œ์™€ ํด๋ž˜์Šค๊ฐ€ ์ปค์ง„๋‹ค๋ฉด ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ๋™์ž‘์„ ํ•˜๊ณ  ์žˆ์„ ํ™•๋ฅ ์ด ํฌ๋‹ค.
    • ์ˆ˜๋งŽ์€ ์ฑ…์ž„์„ ๋– ์•ˆ์€ ํด๋ž˜์Šค๋ฅผ ํ”ผํ•œ๋‹ค. ํฐ ํด๋ž˜์Šค ๋ช‡ ๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ ์ž‘์€ ํด๋ž˜์Šค ์—ฌ๋Ÿฟ์œผ๋กœ ์ด๋ค„์ง„ ์‹œ์Šคํ…œ์ด ๋”์šฑ ๋ฐ”๋žŒ์งํ•˜๋‹ค.
    • ํด๋ž˜์Šค ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ ๋‘๋ ค์›Œํ•˜์ง€ ๋ง์ž.
  5. ๋„๋ฉ”์ธ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์„ ํ”ผํ•˜์ž.
    • User๋ผ๋Š” ๋„๋ฉ”์ธ์ด ์žˆ์„ ๋•Œ, UserService๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ํ”ผํ•œ๋‹ค.
    • ์ด๋ ‡๊ฒŒ ๋„๋ฉ”์ธ ๋„ค์ด๋ฐ์„ ๋”ด ์„œ๋น„์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ์ž์—ฐ์Šค๋ ˆ ์ˆ˜๋งŽ์€ ์ฑ…์ž„์„ ๋– ์•ˆ์€ ํฐ ํด๋ž˜์Šค๋กœ ๋ฐœ์ „๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.
    • ๊ธฐ๋Šฅ ๋ณ„๋กœ ์„ธ๋ถ„ํ™”ํ•ด์„œ ๋งŒ๋“ค์–ด๋ณด์ž. (UserRegisterService, UserEmailService ๋“ฑ...)
  6. ์—๋Ÿฌ ๊ฒ€์ถœ(try - catch)
    • ์ตœ์ƒ๋‹จ์—์„œ ์—๋Ÿฌ ๊ฒ€์ถœ ํ•˜๊ธฐ
    • ex) ์ปจํŠธ๋กค๋Ÿฌ ์„œ๋น„์Šค DAO๊ฐ€ ์žˆ์œผ๋ฉด ์ปจํŠธ๋กค๋Ÿฌ์—์„œ try -catch๋ฌธ ์ž‘์„ฑ

๐Ÿƒย ์Šคํ”„๋ง๋ถ€ํŠธ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜

โ–ถ Controller

  • ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค ์•ˆ์—์„œ ๋ฉ”์„œ๋“œ ๋ช…์„ ์ž‘์„ฑ ํ•  ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ ‘๋ฏธ์‚ฌ๋ฅผ ๋ถ™์ธ๋‹ค.

    ๋ฉ”์„œ๋“œ๋ช… ์˜๋ฏธ
    orderList() ๋ชฉ๋ก ์กฐํšŒ ์œ ํ˜•์˜ ์„œ๋น„์Šค
    orderDetails() ๋‹จ ๊ฑด ์ƒ์„ธ ์กฐํšŒ ์œ ํ˜•์˜ controller ๋ฉ”์„œ๋“œ
    orderSave() ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š” ์œ ํ˜•์˜ controller ๋ฉ”์„œ๋“œ
    orderAdd() ๋“ฑ๋ก๋งŒ ํ•˜๋Š” ์œ ํ˜•์˜ controllerย ๋ฉ”์„œ๋“œ
    orderModify() ์ˆ˜์ •๋งŒ ํ•˜๋Š” ์œ ํ˜•์˜ controller ๋ฉ”์„œ๋“œ
    orderRemove() ์‚ญ์ œ๋งŒ ํ•˜๋Š” ์œ ํ˜•์˜ controller ๋ฉ”์„œ๋“œ

โ–ถ Service

  • ์„œ๋น„์Šค ํด๋ž˜์Šค ์•ˆ์—์„œ ๋ฉ”์„œ๋“œ ๋ช…์„ ์ž‘์„ฑ ํ•  ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ธ๋‹ค.

    ๋ฉ”์„œ๋“œ๋ช… ์˜๋ฏธ
    findOrder() ์กฐํšŒ ์œ ํ˜•์˜ service ๋ฉ”์„œ๋“œ
    addOrder() ๋“ฑ๋ก ์œ ํ˜•์˜ service ๋ฉ”์„œ๋“œ
    modifyOrder() ๋ณ€๊ฒฝ ์œ ํ˜•์˜ service ๋ฉ”์„œ๋“œ
    removeOrder() ์‚ญ์ œ ์œ ํ˜•์˜ service ๋ฉ”์„œ๋“œ
    saveOrder() ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š” ์œ ํ˜•์˜ service ๋ฉ”์„œ๋“œ

โ–ถ Mapper

  • Mapperย ํด๋ž˜์Šค ์•ˆ์—์„œ ๋ฉ”์„œ๋“œ ๋ช…์„ ์ž‘์„ฑ ํ•  ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ธ๋‹ค.

    ๋ฉ”์„œ๋“œ๋ช… ์˜๋ฏธ
    selectOrder() ์กฐํšŒ ์œ ํ˜•์˜ mapper ๋ฉ”์„œ๋“œ
    insertOrder() ๋“ฑ๋ก ์œ ํ˜•์˜ mapperย ๋ฉ”์„œ๋“œ
    updateOrder() ๋ณ€๊ฒฝ ์œ ํ˜•์˜ mapperย ๋ฉ”์„œ๋“œ
    deleteOrder() ์‚ญ์ œ ์œ ํ˜•์˜ mapperย ๋ฉ”์„œ๋“œ

3. DB ์ปจ๋ฒค์…˜

๐Ÿ“Œ DB ์ปจ๋ฒค์…˜

1. ์•ฝ์–ด ์‚ฌ์šฉ ์ž์ œ

2. ํ…Œ์ด๋ธ”, ์นผ๋Ÿผ๋ช…์€ ๋ชจ๋‘ ๋‹จ์ˆ˜

3. ํ…Œ์ด๋ธ”๋ช…์€ ์นด๋ฉœ ์ผ€์ด์Šค

ex.)

  • ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•ด์„œ ์“ธ ๋•Œ๋Š” ์นด๋ฉœ์ผ€์ด์Šค๋กœ ์“ด๋‹ค.
  • ํ•œ ๋‹จ์–ด์ผ๋•Œ๋Š” ์†Œ๋ฌธ์ž๋กœ ์ ๋Š”๋‹ค.

4. ์นผ๋Ÿผ๋ช…์€ ์Šค๋„ค์ดํฌ ์ผ€์ด์Šค

1. idx

idx๋Š” ํ…Œ์ด๋ธ”๋ช…_idx๋กœ ํ•˜๋„๋ก ํ•œ๋‹ค.

2. ์˜ˆ์•ฝ์–ด๋Š” ์นผ๋Ÿผ๋ช…์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

ex) ๋‚œ์ด๋„ ํ…Œ์ด๋ธ”์˜ ๊ฐ’ : value = X

3.์ด๋ถ„๋ฒ•์œผ๋กœ ๋‚˜๋ˆ ์ง€๋Š” ๊ฐ’์€ isโ€˜_โ€˜์‚ฌ์šฉ

๐Ÿ“Œ ๋ช…๋ช… ๊ทœ์น™์˜ ์ค‘์š”์„ฑ

โ˜‘๏ธ ์ด๋ฆ„์€ ์˜ค๋ž˜๊ฐ„๋‹ค.

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ณด๋‹ค ํ›จ์”ฌ ์ง€์†๋ ฅ์ด ๋†’๋‹ค. ์ž˜ ์ •์˜๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ์€ ์–ด๋– ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋„ ์‚ฌ์šฉ๋˜์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰,ย ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ํ•œ๋ฒˆ ์ž˜ ์งœ ๋†“๋“  ์•„๋‹ˆ๋“  ์˜ํ–ฅ๋ ฅ์ด ์˜ค๋ž˜๊ฐ„๋‹ค.

โ˜‘๏ธ ์ด๋ฆ„์€ ๊ณ„์•ฝ์ด๋‹ค.

ํ•œ๋ฒˆ ์ปฌ๋Ÿผ์ด๋‚˜ ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ์ •ํ•ด ๋†“์œผ๋ฉด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๊ทธ ์ด๋ฆ„์„ ์ฝ”๋”ฉ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.ย  ๋งŒ์•ฝ ์ปฌ๋Ÿผ๊ณผ ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด ์˜์กดํ•˜๊ณ  ์žˆ๋˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋„ ์ˆ˜์ •์ด ์ผ์–ด๋‚˜์•ผ ํ•œ๋‹ค.

โ˜‘๏ธ ๊ฐœ๋ฐœ์ž ํ™˜๊ฒฝ์˜ ์ฐจ์ด.

์ด๋ฆ„์ด ์ž˜ ์ •์˜๋œ ํ…Œ์ด๋ธ”, ๋ทฐ, ์ปฌ๋Ÿผ์ด ์žˆ๋‹ค๋ฉดย ๋ณธ์ธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์งง์€ ์‹œ๊ฐ„์ด ์†Œ๋ชจ๋  ๊ฒƒ์ด๋‹ค.

About

๐Ÿ† SSAFY 8๊ธฐ [์ „๊ตญ ๊ฒฐ์„  2์œ„] SEMES ๊ธฐ์—… ์—ฐ๊ณ„ ์ž์œจ ํ”„๋กœ์ ํŠธ - ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ๋ณผํŠธ ์ด์ƒ ์ง„๋‹จ 'SEMAI'

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published