Frontend ๊ฐœ๋ฐœ์ž - hyo.loui

Project: ๐Ÿšฉcodefoliol S.A (์ตœ์ข… ํ”„๋กœ์ ํŠธ) ๋ณธ๋ฌธ

Project

Project: ๐Ÿšฉcodefoliol S.A (์ตœ์ข… ํ”„๋กœ์ ํŠธ)

hyo.loui 2023. 2. 6. 21:07

๐ŸŽฏ๋ชฉ์  :

ํ”„๋กœ์ ํŠธ S.A -  ์ฒซ ํšŒ์˜ ๊ฒฐ์ •์‚ฌํ•ญ ์ •๋ฆฌ

 


 

1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๐Ÿ’ก ํฌํŠธํด๋ฆฌ์˜ค๊ฐ€ ํ•„์š”ํ•œ ์ง๊ตฐ์„ ์œ„ํ•œ ํฌํŠธํด๋ฆฌ์˜ค ๊ณต์œ  ์‚ฌ์ดํŠธ

 


 

2. ํ”„๋กœ์ ํŠธ ์™€์ด์–ดํ”„๋ ˆ์ž„

 

Figma

Created with Figma

www.figma.com

 

 


3. ์ฃผ์ฐจ๋ณ„ ๊ตฌํ˜„ ๊ธฐ๋Šฅ

 

1์ฐจ ๊ตฌํ˜„ ๊ธฐ๋Šฅ (23.02.11 ๋‹ฌ์„ฑ)

1.0.0 ๋ฐฐํฌ

  • Auth
    •  ํšŒ์› ๊ธฐ๋ณธ ์ •๋ณด
      • ์ด๋ฆ„
      • ์„ฑ๋ณ„
      • ์ด๋ฉ”์ผ
      • ์ถœ์ƒ๋…„๋„
      • ์ž๊ธฐ ์†Œ๊ฐœ
      • ํ”„๋กœํ•„ ์‚ฌ์ง„
    • ์—…๋ฌด ๊ด€๋ จ ์ •๋ณด
      • ํฌ์ง€์…˜
      • ๊ฒฝ๋ ฅ
        • ๋น„๊ณต๊ฐœ ๊ฐ€๋Šฅ ์—ฐ๋ด‰ ์ •๋ณด
      • contact๊ฐ€๋Šฅํ•œ ์—ฐ๋ฝ์ฒ˜
      • ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ์ˆ  ์Šคํƒ?
      • ํ”„๋กœ์ ํŠธ
        • github ํ”„๋กœ์ ํŠธ ์ฐธ์—ฌ๋น„์œจํ‘œ์‹œ (+)์•ŒํŒŒ ๊ธฐ๋Šฅ์œผ๋กœ ์ƒ๊ฐํ•ด ๋ณธ๋‹ค๋ฉด github api ์‚ฌ์šฉ…?
      • ์ž๊ฒฉ์ฆ
      • ์ˆ˜์ƒ๋‚ด์—ญ
      • ๋งํฌ & ํŒŒ์ผ : ๊ฐœ๋ฐœ์ž → github, ๋””์ž์ด๋„ˆ ๋“ฑ → ๋น„ํ•ธ์Šค… ๋“ฑ ๋งํฌ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„
      • ํฌ๋ง ์—ฐ๋ด‰
      • ๊ตฌ์ง ์˜ํ–ฅ (๊ตฌ์ง ์ค€๋น„ ์ค‘ / ์ œ์•ˆ๋งŒ ๋ฐ›์Œ / ์ƒ๊ฐ ์—†์Œ)
  • MyPage
    • ๋ณธ์ธ์˜ ํฌํŠธํด๋ฆฌ์˜ค ๋ชจ์•„๋ณด๊ธฐ
    • ๊ฐœ์ธ์ •๋ณด ์ˆ˜์ •
  • ํฌํŠธํด๋ฆฌ์˜ค ๊ฒŒ์‹œ๊ธ€(๋ฉ”์ธ ๊ธฐ๋Šฅ)
    • ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ
    • ์‚ฌ์ง„ + ๋งํฌ
    • ๊ธฐ์ˆ ์Šคํƒ tag๋กœ ์ถ”๊ฐ€
    • ๋งˆ์ด ํŽ˜์ด์ง€์—์„œ ๋ณธ์ธ ๊ฒƒ ์ ‘๊ทผ
    • ์กฐํšŒ์ˆ˜ & ์ข‹์•„์š” & ๋Œ“๊ธ€
      • (+) ๋น„์†์–ด ํ•„ํ„ฐ (ํ† ์Šค ์˜คํ”ˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) (์ด์›”๊ฐ€๋Šฅ)
  • Main page
    • ์ตœ์‹  ๊ฒŒ์‹œ๊ธ€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ (๋‰ด์Šคํ”ผ๋“œ)
      • (+) ํ๋ ˆ์ด์…˜ ๋˜๋Š” ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉํ•˜๊ธฐ (์ด์›”๊ฐ€๋Šฅ)
  • Common Page
    • 404, 500, Modal

 

2์ฐจ ๊ตฌํ˜„ ๊ธฐ๋Šฅ (23.02.18 ๋‹ฌ์„ฑ)

์œ ์ € ํ”ผ๋“œ๋ฐฑ ์‹œ์ž‘, ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ณ ๋„ํ™”

  • Auth
    • Social login(Kakao, Naver, Google, (+)Github)
    • ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ
  • MyPage
    • ํ”„๋กœํ•„ ์นด๋“œ ์ƒ์„ฑ ๊ธฐ๋Šฅ
    • (+) ์Šคํ‚ฌ ์นด๋“œ ์ƒ์„ฑ ๊ธฐ๋Šฅ
    • ํšŒ์›ํƒˆํ‡ด ๊ธฐ๋Šฅ
    • (+) ํšŒ์› ๊ฒฝ๋ ฅ ๊ด€๋ฆฌ ๊ณ ๋„ํ™”
    • ์ด๋ ฅ์„œ PDF Print
  • MainPage
    • ํ๋ ˆ์ด์…˜ ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ํ•„ํ„ฐ & ํƒœ๊ทธ
  • ํฌํŠธํด๋ฆฌ์˜ค ๊ฒŒ์‹œ๊ธ€
  • ๋ฌธ์„œ ์—๋””ํ„ฐ ์ถ”๊ฐ€(1์ฃผ์ฐจ ๊ตฌํ˜„ ์‹คํŒจ ์‹œ)
  • ์›น๋ฐ”์ดํƒˆ ๊ณ ๋„ํ™”

 

3์ฐจ ๊ตฌํ˜„๊ธฐ๋Šฅ (23.02.25 ๋‹ฌ์„ฑ)

  • ๋ฆฌํฌ๋ฃจํŒ…ํ›„๋ณด๊ตฐ ๋ถ„๋ฅ˜
  • ์Šค์™€์ดํ”„(https://youtu.be/brHOqLmWpJ0)
  • ๋ฆฌํฌ๋ฃจํ„ฐ๋กœ ํšŒ์›๊ฐ€์ž…?

์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง. ๋กœ๊ทธ ๋ฐ ์œ ์ ธ ํ”ผ๋“œ๋ฐฑ

  • MainPage
  • ํ”„๋กœ์ ํŠธ ํƒ์ƒ‰
  • ์œ ์ € ํ”ผ๋“œ๋ฐฑ ๋ถ„์„ & ๋ฐ˜์˜
  • ์›น๋ฐ”์ดํƒˆ ๊ณ ๋„ํ™”

์ตœ์ข… ๊ตฌํ˜„ ๊ธฐ๋Šฅ

  • ์œ ์ € ํ”ผ๋“œ๋ฐฑ๊ณผ ๊ด€๋ จ ๊ธฐ๋Šฅ์ถ”๊ฐ€
  • ์œ ๋™์ ์œผ๋กœ ์ง„ํ–‰
  • ๋ฒ„๊ทธ ํ”ฝ์Šค
  • custom hook์˜ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ถ€ํ„ฐ E2E ํ…Œ์ŠคํŠธ๊นŒ์ง€
  • ๋””์ž์ธ ๋””ํŽ™ ์ฒ˜๋ฆฌ ๋ฐ ์ตœ์ข… ํ…Œ์ŠคํŠธ์ตœ์ข… ๋ฐœํ‘œ ์ „๊นŒ์ง€ ์ƒ์‹œ ํ…Œ์ŠคํŠธ
  • ๋””์ž์ธ ์™„์„ฑ๋„ ๋†’์ด๊ธฐ ์œ„ํ•œ ๋””ํŽ™ ์ฒ˜๋ฆฌ ์ž‘์—…

4. ์ปจ๋ฒค์…˜

git

  • 1.0์€ git-flow
  • 1.1๋ถ€ํ„ฐ trunk based development
    • → ์šด์˜ ๊ฒฝํ—˜ ์Œ“๊ธฐ
  • ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์™„์„ฑ๋œ ์ดํ›„ trunk based development๋กœ ์ „ํ™˜

๊ฐœ์ธ์šฉ commit

  • PR, Issue๋Š” ํ…œํ”Œ๋ฆฟ์„ ํ™œ์šฉํ•œ๋‹ค.
  • branch๋ช… ์ปจ๋ฒค์…˜
    • main → production level
    • dev → development level
    • feat/OOOOO
    • refac/OOOOO
    • hotfix/#issuenum
    • doc/OOOOO - README.md ์ˆ˜์ •์šฉ

https://github.com/MiryangJung/google-calendar-weekly-clone README.md ์ฐธ์กฐ์šฉ

 

Changelog

Announce updates and news to your users with Changelog.md

changelog.md

code

  • ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž: yarn
  • prettier.config.js or .prettierrc.yml ํ™œ์šฉ
    • ํƒญ ๋Œ€์‹  ์ŠคํŽ˜์ด์Šค(ํƒญ1 = ์ŠคํŽ˜์ด์Šค2)
  • hooks์™€ utils, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์€ jsdoc์„ ์ ๊ทน ํ™œ์šฉํ•ด ๋ฌธ์„œํ™” ์‹œํ‚จ๋‹ค.
  • typescript
    • FC<> ๋Œ€์‹  ComponentNameProps
    • type or interface → object ์™ธ์—” ๋‹ค type.
    • ํŒŒ์Šค์นผ ์ผ€์ด์Šค
    • Type, Props ์ ‘๋ฏธ์–ด
    • ์ƒ์†๊ธˆ์ง€(ํ•˜๋ฉด ๋ฌธ์„œํ™”) 1depth๋งŒ ๊ฐ€๋Šฅ
    • 3๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” type์€ declareํ™”ํ•˜๊ธฐ
    • .d.ts
      • fetch type (์ดˆ๋ฐ˜ ์ž‘์„ฑ)
      • 3๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” type
      • styled.d.ts
        • ⇒ styled-components themeProvider์˜ ๋ณ€์ˆ˜ ์ž๋™ ์™„์„ฑ ์œ„ํ•ด์„œ
  • ํ•จ์ˆ˜ ํ•˜๋‚˜๋‹น ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ๋งŒ ๋‹ด๋„๋ก ํ•˜๊ธฐ

→ ์ž˜๋ชป๋œ ์˜ˆ์‹œ

const handleSubmit = () => {
	e.perasdf...

	const obj1 = {

	}

	axios.post()
}

→ ์ข‹์€ ์˜ˆ์‹œ

const postData = () => {
  axios.post(...)
}

const handleSubmit = () => {
	e.perasdf...

	postData(obj1)

	setEmail("")
  ...
}
  • ๋งค์ง๋ฆฌํ„ฐ๋Ÿด, ๋งค์ง๋„˜๋ฒ„ ๊ธˆ์ง€
  • const ADULT_AGE = 19 const BASE_URL = "" if (age === ADULT_AGE) { // }
  • ์ค„์ž„๋ง ๊ธˆ์ง€
    • for๋ฌธ ์˜ˆ์™ธ
    • idx ์˜ˆ์™ธ
  • px ๊ธˆ์ง€ → rem ์‚ฌ์šฉ
    • px to rem & rpx & vw (cssrem)
    • border๋“ฑ 1px๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์˜ˆ์™ธ

git ํ”„๋กœ์ ํŠธ

  1. Backlog : ์ถ”๊ฐ€ ๊ธฐ๋Šฅ / ๋…ผ์˜ ์ค‘์ธ ๊ธฐ๋Šฅ ์ž‘์—… 
  2. Issue : ํ•ด์•ผํ•  ์ž‘์—…
  3. In Progress : ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ ํ›„ ์ž‘์—… ์ค‘์ธ ๊ฒƒ๋“ค // ๋””์ž์ด๋„ˆ๋‹˜: ์ž‘์—…์ค‘์ธ ์ปดํฌ๋„ŒํŠธ?
  4. In review : PR ์˜ฌ๋ฆฐ ์ž‘์—…
  5. Done : ๋๋‚œ ์ž‘์—…

์–ด๋“œ๋ฏผ ๊ณ„์ • 1๊ฐœ(auth sevice ์ •ํ•ด์ง€๋Š” ๊ฒƒ์— ๋”ฐ๋ผ ๋ณ€๋™ ๊ฐ€๋Šฅ)

 


5. ๊ทธ๋ผ์šด๋“œ ๋ฃฐ

 

  1. ๋ฆฌ๋ทฐ์‹œ๊ฐ„ ์ •ํ•˜๊ณ , PR์— ๋ฆฌ๋ทฐํ•˜๊ธฐ
    • ๋…ธ์…˜ ์ผœ๊ณ  ์ด์Šˆ ์ž‘์„ฑ(ํ•„์š”ํ•˜๋ฉด ๋ฌธ์„œํ™”)
    • as-is / to-be
    • ๋ฌด๋ถ„๋ณ„ํ•œ LGTM ๊ธˆ์ง€
  2. ๋””์ž์ด๋„ˆ๋‹˜ ์ฐธ์—ฌํ•˜์—ฌ ํŒ€ ์ „์ฒด ๋‹ค๊ฐ™์ด ํšŒ์˜ ์ฃผ 3ํšŒ (๋‹จ, ์ „๋‹ฌ์€ 1๋ช…๋งŒ)
  3. ์ด์Šˆ ๋ฌธ์ œ ์‹œ
    • ๊นƒํ—™ ์ด์Šˆ ์ƒ์„ฑ
    • ๋ฆฌ๋ทฐ ์‹œ๊ฐ„์— ์ด์Šˆ ๊ณต์œ ํ•˜๊ธฐ(๋‹ค๋ฅธ ์˜๊ฒฌ๋“ค ๋” ๋ฐ›๊ณ  ํ”ผ๋“œ๋ฐฑ ๋ฐ›๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ)