๐ŸฅŽ ๊ธฐ๋Šฅ ๋ถ„๋ฅ˜ ํšŒ์˜ - boostcampwm-2022/web33-Mildo GitHub Wiki

1. ๊ฐœ์š”

  1. ์ผ์‹œ ๋ฐ ์žฅ์†Œ : 11.16.(์ˆ˜) 11:20 ~ 12:00, 13:30 ~ 16:00, ๊ฒŒ๋”ํƒ€์šด
  2. ์ฐธ์—ฌ์ž : ์ „์›
  3. ๋ชฉ์  : 2์ฃผ์ฐจ ๊ตฌํ˜„์„ ์œ„ํ•œ ๊ธฐ๋Šฅ ๋ถ„๋ฅ˜ ๋ฐ ๋ฐฐ์ •
  4. ํšŒ์˜ ์ค‘์š”๋„ : ์ค‘
  5. ์ด๋ฒˆ ์ฃผ ํŽ˜์–ด
    • ์ƒ์ค€ - ํ•œ๋นˆ
    • ์œค์šฐ - ํ˜„์ •

2. ๋…ผ์˜

2.1. ์ด์Šˆ ํฌ๊ธฐ

2.1.1. ์ด์Šˆ๋ฅผ ๋” ์ž‘๊ฒŒ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹

  • ์ด์Šˆ๋ฅผ ๋” ์ž‘๊ฒŒ ๋‚˜๋ˆ„์–ด์•ผ ๊ฐ ํŽ˜์–ด๊ฐ€ FE, BE๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ธฐ์กด์˜ ์ด์Šˆ๋ฅผ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ณ , ์ปค๋ฐ‹์„ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ๋ณด๋‚ด๊ธฐ
  • ๊ธฐ์กด์˜ ์ด์Šˆ์—์„œ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๋ถ€๋ถ„์„ ๊ณ ๋ คํ•˜๊ณ  ๋‚˜๋ˆ„๊ธฐ๋Š” ํ•ด์•ผ ํ•จ
    • MongoDB ์—ฐ๊ฒฐ, ๋ฐฑ์—”๋“œ ์—ฐ๊ฒฐ ๋“ฑ์˜ ์ค‘์š”ํ•œ ๋‚ด์šฉ์ด ๋น ์ ธ ์žˆ์Œ

2.1.2. ์ด์Šˆ๋ฅผ ๊ธฐ์กด ํฌ๊ธฐ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹

  • ๊ตณ์ด ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ์„ธ์„ธํ•˜๊ฒŒ ๋‚˜๋ˆ ์„œ ๊ตฌํ˜„ํ•ด๋ณด์ง€ ์•Š์•„๋„ FE, BE๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ
    • ๋˜ํ•œ, ํŽ˜์–ด ๊ฐ„ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ž˜ ํ•ด์ฃผ๋ฉด ์ถฉ๋ถ„ํžˆ ์„œ๋กœ์˜ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Œ
  • ์ด์Šˆ๋ฅผ ์ง€๊ธˆ๋ณด๋‹ค ๋” ์ž‘๊ฒŒ ๋‚˜๋ˆ„๊ณ , ์ž์ฃผ ์—…๋ฌด๋ฅผ ๊ต์ฒดํ•˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ์ด ์‹ฌํ•ด์ง

2.1.3. ๊ฒฐ๋ก 

  • ์šฐ์„ , ํŽ˜์–ด ๊ฐ„ ์—…๋ฌด๋ฅผ ๋‚˜๋ˆŒ ๋•Œ ์ด์Šˆ๋ฅผ ๊ธฐ์กด ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ”
  • ๊ฐ ํŽ˜์–ด์—์„œ ์ด์Šˆ๋ฅผ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ์ง„ํ–‰

2.2. ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

  1. styled component ํŒŒ์ผ ๋‚˜๋ˆŒ ๊ฒƒ์ธ๊ฐ€
    • component์™€ style์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง
    • styled component๋Š” css ํŒŒ์ผ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ง€์—ญ์ ์œผ๋กœ ์Šคํƒ€์ผ ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์žฅ์ ์ž„
    • ๊ฒฐ๋ก  : ์šฐ์„ ์€ style์„ ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ์— ์ž‘์„ฑ
  2. ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์œผ๋กœ ํด๋” ๋งŒ๋“ค ๊ฒƒ์ธ๊ฐ€?
    • ํ›„์— ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์œผ๋กœ ํด๋” ์ƒ์„ฑ
  3. ๋””๋ ‰ํ† ๋ฆฌ ์ดˆ๊ธฐ ๊ตฌ์กฐ
    • server
routers
	ใ„ดauthRouter
controllers
	ใ„ดauthController
services
	ใ„ดauthService
repositories
models
  • client
src
ใ„ดapis
ใ„ดutils
ใ„ดassets
ใ„ดcomponents
	ใ„ดComponent
		ใ„ดComponent.tsx
		ใ„ด*Component.style.tsx
	ใ„ดNewComponent
ใ„ดconfig
ใ„ด*atom (jotai)
ใ„ด*action (jotai)
ใ„ดhooks
	ใ„ดuseHooks.ts
ใ„ดpages
	ใ„ดPage
		ใ„ดPage.tsx
		ใ„ด*Page.style.tsx

2.3. ๋ฐฑ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ต์ฒด?

2.3.1. koa

  • koa๋Š” ๋ฏธ๋“ค์›จ์–ด ๊ธฐ๋Šฅ๋งŒ ์žˆ์–ด ๊ฐ€๋ฒผ์šด ๊ฒƒ์ด ์žฅ์ 
    • ๊ทธ๋Ÿฐ๋ฐ router ๋“ฑ ๊ฑฐ์˜ ํ•„์ˆ˜์ ์œผ๋กœ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์œ„ํ•ด ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•จ
  • boilerplate๋กœ ๋ณต์žกํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋ฉด express, nest ๋Œ€๋น„ ์žฅ์ ์ด ํ‡ด์ƒ‰
  • express ๋Œ€๋น„ ์ฐธ๊ณ  ์ž๋ฃŒ๋„ ์ ์Œ

2.3.2. express.js

  • ํŠน๋ณ„ํ•œ ์ด์œ  ์—†์ด ์ƒˆ๋กœ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตณ์ด ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Œ
    • ์šฐ๋ฆฌ ํŒ€์›์€ ๋ชจ๋‘ FE๋ฅผ ์ง€๋งํ•˜๋Š”๋ฐ BE์—์„œ ์–ต์ง€ ๋ณ€ํ™”๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?
  • express๋ฅผ ๋” ๊ณต๋ถ€ํ•˜๋ฉด์„œ BE ์ž์ฒด์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•จ
  • ์ž์œ ๋„๊ฐ€ ๋†’์Œ

2.3.3. nest.js

  • Java์˜ spring boot์™€ ์œ ์‚ฌํ•œ boiler plates ๋ฐฉ์‹
  • ๊ทธ๋Ÿฌ๋‚˜ ์œค์šฐ๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋ฉค๋ฒ„๋“ค์€ ๋ชฐ๋ผ์„œ ํ•™์Šต ์‹œ๊ฐ„์ด ํ•„์š”ํ•จ

2.3.4. ๊ฒฐ๋ก 

  • express๋กœ ๋ณต๊ท€ํ•˜์ž!!

2.4. trouble shooting ๊ธฐ๋ก ๋ฐฉ๋ฒ•

  • ๋…ธ์…˜
    • ๋‚ด์šฉ์„ ์ƒ์„ธํ•˜๊ฒŒ ์ ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์•„์นด์ด๋ธŒ ์—ญํ• ์„ ํ•จ
    • ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์ฝ”๋“œ๊ฐ€ ์–ด๋””์ธ์ง€ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์Œ
  • ๊นƒํ—ˆ๋ธŒ
    • ์š”๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์ฝ”๋“œ์˜ ์œ„์น˜, ํ•ด๊ฒฐ ๋ฐฉ์•ˆ ๋“ฑ์„ ๋™์‹œ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
    • ์ด์Šˆ : ์ฃผ๋กœ ์‚ฌ์ „์— ๊ตฌํ˜„ํ•  ๊ธฐ๋Šฅ์„ ์ •ํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ค‘๊ฐ„์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ์ž„์˜๋กœ ๋ฐœํ–‰ํ•˜๋ฉด ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š์„์ง€?
    • PR : ์˜ค๋ฅ˜์˜ ๋‚ด์šฉ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ ๋“ฑ์„ ์ž์„ธํ•˜๊ฒŒ ์ ์„ ์ˆ˜ ์—†์Œ
  • ๊ฒฐ๋ก 
    • ์šฐ์„  ๋…ธ์…˜์— ์ผ์ž๋ณ„๋กœ trouble shooting ์ž‘์„ฑ
    • ๊นƒํ—ˆ๋ธŒ์—์„œ๋Š” ๊ฐ์ž ์ด์Šˆ์™€ PR์„ ํ™œ์šฉํ•ด๋ณด๊ณ  ๋ญ๊ฐ€ ๋” ์ข‹์€์ง€ ํŒ๋‹จ

2.5. ๋…ผ์˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ณ ๋ฏผ

  • ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์—ด์‹ฌํžˆ ๋…ผ์˜ํ•จ
    • ๊ฐ์ž ์ž์‹ ์˜ ์˜๊ฒฌ๋„ ์ž˜ ์ œ์‹œํ•˜๊ณ , ์ƒ๋Œ€๋ฐฉ์˜ ์˜๊ฒฌ์— ๋Œ€ํ•ด ์ ๊ทน์ ์œผ๋กœ ํ”ผ๋“œ๋ฐฑ ํ•จ
  • ๊ทธ๋Ÿฌ๋‚˜ ํ•„์š” ์ด์ƒ์œผ๋กœ ๋…ผ์˜์— ์‹œ๊ฐ„์„ ์จ์„œ ๊ตฌํ˜„์ด ๋А๋ ค์ง€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Œ
    • ํšŒ์˜๊ฐ€ ์ •ํ•ด ๋†“์€ ์‹œ๊ฐ„์„ ๋„˜๊ธฐ๊ฑฐ๋‚˜, ์‰ฌ๋Š” ์‹œ๊ฐ„์„ ์ œ๋Œ€๋กœ ์ง€ํ‚ค์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ

3. ๊ตฌํ˜„ ๋ชฉ๋ก

3.1. ์ง€๋„ ์ถœ๋ ฅ

  • ๋„ค์ด๋ฒ„ ์ง€๋„ API ์—ฐ๊ฒฐ
  • ์ง€๋„ ์ดˆ๊ธฐ ํ™”๋ฉด์„ ์„œ์šธ ์ค‘์‹ฌ์œผ๋กœ ์ถœ๋ ฅ

3.2. API ์š”์ฒญ

  • express ์„œ๋ฒ„ ์—ฐ๊ฒฐ
  • ์„œ์šธ ์‹ค์‹œ๊ฐ„ ๋„์‹œ ๋ฐ์ดํ„ฐ API ์—ฐ๊ฒฐ
  • ์ฃผ์š” ์žฅ์†Œ 50๊ณณ์— ๋Œ€ํ•œ ์ธ๊ตฌ๋ฐ€๋„/์œ„๋„/๊ฒฝ๋„ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
  • MongoDB ์—ฐ๊ฒฐ
  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•ด์„œ DB์— ์ €์žฅํ•˜๊ธฐ(CRUD)

3.3. ํ•€

  • ์ง€์—ญ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์œ„๋„/๊ฒฝ๋„ ์„ค์ •
    • (์„ ํƒ) ํ•ด๋‹น ์ง€์—ญ์„ ํ…Œ๋‘๋ฆฌ๋กœ ํ‘œ์‹œ (์ถ”ํ›„ ๋…ผ์˜)
  • ์ง€๋„์— 50๊ณณ์˜ ์œ„๋„/๊ฒฝ๋„ ๋Œ€ํ•œ ํ•€ ์ถœ๋ ฅ
  • ์ธ๊ตฌ๋ฐ€๋„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•€์˜ ์ƒ‰์ƒ ์ถœ๋ ฅ
  • ํ•€ ํด๋ฆญ ์‹œ ์ƒ์„ธ ์ •๋ณด ๋ชจ๋‹ฌ ์ถœ๋ ฅ
  • ํ•€ ํด๋ฆญ ์‹œ ํ•€์˜ ํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๊ณ , ํ•€์˜ ์ค‘์•™์— ํ˜„์žฌ ์ƒํƒœ ํ‘œ์‹œ
  • ํ•€ ํด๋ฆญ ์‹œ ํ•€์ด ํ™”๋ฉด ์ค‘์•™์œผ๋กœ ์˜ค๋„๋ก ์„ค์ •

3.4. ์ƒ์„ธ ์ •๋ณด ๋ชจ๋‹ฌ

  • ํ˜„์žฌ ์žฅ์†Œ ์ƒํƒœ ๋ฉ”์‹œ์ง€ UI ์ถœ๋ ฅ
  • ์‹ค์‹œ๊ฐ„ ์˜ˆ์ƒ ์ธ๊ตฌ์ˆ˜ UI ์ถœ๋ ฅ
  • ๋ถ๋งˆํฌ ๋ฒ„ํŠผ UI ์ถœ๋ ฅ
  • โ€˜๋‚ด์ผ ๊ฐˆ ๊ฑฐ์•ผโ€™ ๋ฒ„ํŠผ UI ์ถœ๋ ฅ

3.5. ๋ถ„๋ฐฐ

  • A์กฐ(ํ•œ๋นˆ, ์ƒ์ค€)
    • ๋„ค์ด๋ฒ„ ์ง€๋„ API ์—ฐ๊ฒฐ
    • ์ง€๋„ ์ดˆ๊ธฐ ํ™”๋ฉด์„ ์„œ์šธ ์ค‘์‹ฌ์œผ๋กœ ์ถœ๋ ฅ
  • B์กฐ(์œค์šฐ, ํ˜„์ •)
    • express ์„œ๋ฒ„ ์—ฐ๊ฒฐ
    • ์„œ์šธ ์‹ค์‹œ๊ฐ„ ๋„์‹œ ๋ฐ์ดํ„ฐ API ์—ฐ๊ฒฐ
    • ์ฃผ์š” ์žฅ์†Œ 50๊ณณ์— ๋Œ€ํ•œ ์ธ๊ตฌ๋ฐ€๋„/์œ„๋„/๊ฒฝ๋„ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ