-
React + Typescript
- ํ์ด์ง ์ด๋์ด ๋ง์ง ์๊ณ Single Page ๋ด๋ถ์์์ ๋์๋ค์ด ๋ง์ React๋ก ์ ์ ํ์๊ณ , compile ๊ณผ์ ์์ error check๊ฐ ๊ฐ๋ฅํ TS๋ฅผ ์ด์ฉํด DX , UX๋ฅผ ์ฆ์ง์ํค๊ธฐ ์ํด ์ฌ์ฉํ์์ต๋๋ค.
-
axios + tanstack/react-query
- ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฅผ JSON์ผ๋ก Parsing ํด์ฃผ๊ณ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ํด axios๋ฅผ ์ฌ์ฉํ๊ณ , server data์ client data ์ํธ ๊ฐ์ ์ต์ ์ํ๋ฅผ ๊ฐํธํ๊ฒ ์ ์งํ๊ธฐ ์ํด tanstack query๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
-
styled-components
- ํ์๋ค์ด ์งง์ ์๊ฐ ๋์ tailwind๋ฅผ ํ์ตํ๊ธฐ์ ๋ฌด๋ฆฌ๊ฐ ์๋ค๊ณ ํ๋จํ์ฌ ์ต์ํ styled-component๋ฅผ ์ด์ฉํ์์ต๋๋ค.
-
styled-reset
- ๊ธฐ์กด html ์ธํ ์ด๊ธฐํ๋ฅผ ์ํด ์ฌ์ฉํ์์ต๋๋ค.
-
react-hook-form ๋ฐ zod
- ์๋น์ค ๋ด๋ถ์ validation์ ๊ฒ์ฆํด์ผ ํ๋ ๊ณผ์ ์ด ๋ง๊ธฐ์ useRef๋ฅผ ์ด์ฉํด rendering ๋ฐ์ ํ์๋ฅผ ์ค์ด๋ react-hook-form ๋ฐ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ schema๋ฅผ ์์ฑํ ์ ์๋ zod๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
- main : ์ต์ข ๋ฐฐํฌ๋ฅผ ์ํ branch. Pull Request๋ฅผ ์ด์ฉํด develope branch๋ฅผ ์ต์ข merge
- develop : ๋ฐฐํฌํ๊ธฐ ์ ๊ฐ๋ฐ ์ค์ผ ๋ ๊ฐ์์ ๋ธ๋์น์์ mergeํ๋ ๋ธ๋์น
- feat / #์ด์ ๋ฒํธ / ๊ธฐ๋ฅ๋ช : feature ๋ธ๋์น. ์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ. ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด develop ๋ธ๋์น๋ก ๋ณํฉ
- fix / #์ด์ ๋ฒํธ / ๊ธฐ๋ฅ๋ช : fix ๋ธ๋์น. ์์ฑ ํ ๋ฒ๊ทธ๊ฐ ์๊ฒผ์ ๋ ์์ ํ๋ ๋ธ๋์น
-
git-flow ๋ฐฉ์
* ๋ด๊ฐ ๋ง๋ค๊ณ ๊ฐ ํ๋ ๊ธฐ๋ฅ์ด๋ ๋ฌธ์ ๋ค์ ๋จผ์ issue๋ก ์ฌ๋ฆฌ๊ณ ์ฌ๋ฆฐ ์ด์ ๋๋ฒ๋ฅผ ํ์ฉํด์ feature/#1-signup ์ด๋ฐ์์ผ๋ก ์๋ก์ด ๋ธ๋ฐ์น๋ฅผ ๋ง๋ค์ด์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ฑฐ๋ ๋ฆฌํํ ๋ง ํ ๋ค์์ ์ด ๋ธ๋ฐ์น ๋ค์ develop ๋ธ๋์น์ merge ํ๋ ๊ตฌ์กฐ -
๋ธ๋์น ์์ฑ
โโํญ์ develop์ ์ฒดํฌ์์ํด์ ๋ง๋ค๊ฒโโ
( develop ๋ธ๋์น์์ ์๋ก์ด ๋ธ๋์น๋ฅผ ๋ง๋ค์ด์ผ ๊ฐ์ฅ ์ต์ ์ํ๋ฅผ ์ ์งํ๋ ํ์ ๋ธ๋์น๊ฐ ์์ฑ๋๋ค. )
$ git branch feat/#์ด์๋ฒํธ/๊ธฐ๋ฅ๋ช
-
๋ธ๋์น ์ฒดํฌ์์ ( ๋ง๋ ๋ธ๋์น๋ก ์ด๋ )
$ git checkout feat/#์ด์๋ฒํธ/๊ธฐ๋ฅ๋ช
- ๋ณ์ / ํจ์ / ๋ฉ์๋ : Camel Case(์นด๋ฉ ์ผ์ด์ค)
- ์ปดํฌ๋ํธ : Pascal Case(ํ์ค์นผ ์ผ์ด์ค)
- ๋ค์ฌ์ฐ๊ธฐ : Tab
- ํ ์ค ์ฃผ์ : //
- ์ฌ๋ฌ ์ค ์ฃผ์ : /**/
[Feat] ์ด์ ์ ๋ชฉ
- ๊ธฐ๋ฅ ์ถ๊ฐ ์ : [feat] ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ์ถ๊ฐ
- ์ค๋ฅ/ ๋ฒ๊ทธ ๋ฐ์ ์ : [fix] ๋ก๊ทธ์ธ ์ค๋ฅ ์์
- ๋ฆฌํฉํ ๋ง ์ : [refactor] ๋ก๊ทธ์ธ ํ์ด์ง ๋ฆฌํฉํ ๋ง
- feat ์ผ๋:
- ์์ ํ ๋ด์ฉ : ์์ ํ ๊ธฐ๋ฅ ์์ฑ ( ์์ : ๋ก๊ทธ์ธ )
- fix ์ผ๋:
- ๋ฐ์ํ ์ค๋ฅ :
- ๋ฐ์ํ ์์ธ :
- ํด๊ฒฐ ๋ฐฉ์ :
- ๊ฒฐ๊ณผ :
- refactor ์ผ๋:
- ๋ด์ฉ : ๋ฆฌํฉํ ๋ง์ด ํ์ํ ๋ถ๋ถ ์ ๋ ฅ
- ๋ฆฌํฉํ ๋ง ์ด์ : ๊ณผ๊ฑฐ ์ ํ์ฌ๋ฅผ ๋น๊ตํด์ ์์ฑํด์ฃผ๊ธฐ
- ๋ฆฌํฉํ ๋ง ๊ฒฐ๊ณผ : ๋ณ๊ฒฝํ ๋ด์ฉ ์ ๋ ฅ
[Feat/#์ด์ ๋ฒํธ] " pr message " (์์ : [Feat/#1] "๋ก๊ทธ์ธ ๊ธฐ๋ฅ ์ถ๊ฐ")
(Closes ํค์๋๊ฐ ์์ด์ผ PR์ด ๋จธ์ง๋์์ ๋ ์ด์๊ฐ ์๋์ผ๋ก ๋ซํ๋ค)
- Closes #์ด์ ๋ฒํธ
์ด๋ค ๋ณ๊ฒฝ ์ฌํญ์ด ์๋์?
- ์ ๊ธฐ๋ฅ ์ถ๊ฐ
- ๋ฒ๊ทธ ์์
- CSS ๋ฑ ์ฌ์ฉ์ UI ๋์์ธ ๋ณ๊ฒฝ
- ๋ฆฌํฉํ ๋ง
ํด๋น PR์ ๊ฐ๋จํ๊ฒ ์์ฝํด ์ฃผ์ธ์
โ
[Feat]: ์ปค๋ฐ ๋ฉ์์ง ํ์
(git commit -m โ[Feat/#์ด์ ๋ฒํธ]: "commit messagesโ")
(์์: git commit -m "feat:"ํ์ ๊ฐ์
๊ธฐ๋ฅ ๊ตฌํ"" )
- ์ปค๋ฐ ๋ฉ์์ง ํ์ ์ข ๋ฅ
- init : ํ๋ก์ ํธ ์ด๊ธฐ ์์ฑ ๋ฐ ์ค์
- feat : ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ, ๊ธฐ์กด์ ๊ธฐ๋ฅ์ ์๊ตฌ ์ฌํญ์ ๋ง์ถ์ด ์์
- fix : ๊ธฐ๋ฅ์ ๋ํ ๋ฒ๊ทธ ์์
- build : ๋น๋ ๊ด๋ จ ์์
- chore : ํจํค์ง ๋งค๋์ ์์ , ๊ทธ ์ธ ๊ธฐํ ์์ ex) .gitignore
- docs : ๋ฌธ์(์ฃผ์) ์์
- style : ์ฝ๋ ์คํ์ผ, ํฌ๋งทํ ์ ๋ํ ์์
- refactor : ๊ธฐ๋ฅ์ ๋ณํ๊ฐ ์๋ ์ฝ๋ ๋ฆฌํฉํฐ๋ง ex) ๋ณ์ ์ด๋ฆ ๋ณ๊ฒฝ
๊ธฐ์กด ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ํด๋ ๊ตฌ์กฐ๋ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ธฐ์ , FE app์ ๊ธฐ๋ฅ ๋จ์๋ก ๋๋์ด ๊ตฌ์กฐํํ๋ ์ค๊ณ ํจํด์ธ FSD๋ฅผ ์ฑํํ์์ต๋๋ค.
app: ์ฑ์ ์ด๊ธฐํ ๋ฐ ์ ์ญ ์ค์ .entities: ํต์ฌ ๋๋ฉ์ธ ๋ฐ์ดํฐ ๋ฐ ์ํ.features: ํน์ ๊ธฐ๋ฅ ๊ตฌํ(๋น์ฆ๋์ค ๋ก์ง ํฌํจ).shared: ๊ณตํต ์ ํธ๋ฆฌํฐ, ์คํ์ผ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ.pages: ํน์ ํ๋ฉด์ ๋ํ๋ด๋ ๋จ์(์ฌ๋ฌ features๋ฅผ ์กฐํฉ).widgets: ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ปดํฌ๋ํธ
์ด ์ค , ํด๋น ์๋น์ค์๋ ๋น์ฆ๋์ค์ ๊ฐ์น๋ฅผ ๊ฐ์ง๋ ๊ธฐ๋ฅ ๋จ์ (like ,review , product rating ๋ฑ)์ด ํฌํจ๋์ง ์๊ณ , ํน์ ๋๋ฉ์ธ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค๊ณ ํ๋จํ์ฌ entities ๋ฐ features ํด๋ ๊ตฌ์กฐ๋ ์ฌ์ฉํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
https://www.figma.com/design/uk9cNi1saPpTxzehCxKY2g/Untitled?node-id=0-1&p=f&t=Gvoy5LOXBLsceFNZ-0