๋ํ์ IT๊ฒฝ์ํํ ํ์์ฆ 30๊ธฐ ๊ธฐ์ ํ๋ก์ ํธ : F!TPET A์กฐ Frontend Repository
์ด๋ฆ | ์ด์ฃผํ | ์ด์ํ |
---|---|---|
git | tacowasabii | 2unhi |
.src/
โโโ index.tsx
โโโ App.tsx
โโโ types/
โโโ app/
โ โโโ api/
โโโ constants/
โโโ utils/
โโโ styles/
โโโ components/
โโโ hooks/
- ์ ํด์ง ํด๋๋ช ์ธ์๋ ๋ชจ๋ ๋๋ฌธ์๋ก ์์
- ํน์ ํ์ด์ง ๋ด์์๋ง ์ฐ์ด๋ ์ปดํฌ๋ํธ๋ ํด๋น ํ์ด์ง ํด๋ ๋ด๋ถ์ components ํด๋ ์์ ์ ์ฅ
- ๊ฐ ์ปดํฌ๋ํธ๋ ๊ฐ๋ณ ํด๋์ ์ ์ฅ
์ปค๋ฐ ์ ํ | ์๋ฏธ |
---|---|
build | ๋น๋ ์์คํ ๋๋ ์ธ๋ถ ์ข ์์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ๊ฒฝ ์ฌํญ (์: webpack, npm) |
chore | ํจํค์ง ๋งค๋์ ์์ , ๊ทธ ์ธ ๊ธฐํ ์์ ex) .gitignore |
ci | CI ์ค์ ํ์ผ ๋ฐ ์คํฌ๋ฆฝํธ ์์ |
docs | ๋ฌธ์ ์์ |
feat | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
fix | ๋ฒ๊ทธ ์์ |
perf | ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ |
refactor | ์ฝ๋ ๋ฆฌํฉํ ๋ง |
revert | ์ด์ ์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ |
style | ์คํ์ผ ์ฝ๋ ๋ณ๊ฒฝ |
test | ํ ์คํธ ์ฝ๋, ๋ฆฌํฉํ ๋ง ํ ์คํธ ์ฝ๋ ์ถ๊ฐ |
type | ํ์ ์์ |
rename | ํ์ผ ๋๋ ํด๋ ๋ช ์ ์์ ํ๊ฑฐ๋ ์ฎ๊ธฐ๋ ์์ ๋ง์ธ ๊ฒฝ์ฐ |
remove | ํ์ผ ์ญ์ ํ๋ ๊ฒฝ์ฐ |
hotfix | ๊ธํ๊ฒ ์น๋ช ์ ์ธ ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณ์ผ ํ๋ ๊ฒฝ์ฐ |
๐ ํด๋๋ช ์ ๊ฒฝ์ฐ ์๋ฌธ์ ์์ฑ
๐ ์ปดํฌ๋ํธ ํ์ผ๋ช ์ PascalCase๋ก ํต์ผ
๐ ๊ทธ ์ธ ํ์ผ๋ช ์ ์๋ฌธ์ ์์ฑ
ex) Home.tsx
ex) index.d.ts
โฐ ํจ์๋ช , ๋ณ์๋ช ์ camelCase๋ก ์์ฑ
- ์ด๋ฆ์ ํตํด ์ด๋ค ๊ธฐ๋ฅ์ ์ ๊ณตํ๋์ง ์ ์ ์๋๋ก ์์ฑ
- ๋์
๋๋ฆฌ, ๋ฐฐ์ด ๋ฑ์ ๋ณต์์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ์๋ฃ๊ตฌ์กฐ์ ๋ํ ๋ณ์๋ช
s ๋ถ์ด๊ธฐ
ex) heights
- ๋ก๋ฉ์ด๋ ๋ชจ๋ฌ์ฐฝ ๋ฑ์ ๋ณด์ฌ์ง ์ฌ๋ถ์ ๋ํ boolean state์ ๊ฒฝ์ฐ is ๋ถ์ด๊ธฐ
ex) isModalOpen, isLoading
- ๋ฐ์ดํฐ ์ ๊ทผ ํจ์์ ๊ฒฝ์ฐ get์ผ๋ก ์์ํ๊ธฐ
ex) getUserData
- ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๋์ํ๋ ํจ์๋ handle ๋ถ์ด๊ธฐ
ex) handleClick, handleModalOpen
- prop์ผ๋ก ๋ฐ์์ ๋์ํ๋ ํจ์๋ on ๋ถ์ด๊ธฐ
ex) onClick, onClose
ํจ์๋ช | ๋์ฌ๊ตฌ ex) getUserData |
---|---|
๋ณ์๋ช | ๋ช ์ฌ๊ตฌ ex) userData |
1๏ธโฃ ์ธ๋ผ์ธ ์ฃผ์
- ๋ฌด๋ถ๋ณํ๊ฒ line by line ์ฃผ์์ ์ง์
- if๋ฌธ, for๋ฌธ, switch๋ฌธ ๊ทธ๋ฐ ๊ตฌ๋ฌธ ์ ์ธ ๋ถ๋ถ ์์ ๊ฐ๋จํ๊ฒ ์ด๋ค ๊ธฐ๋ฅ์ ํ๋์ง ์ค๋ช
- ์ค๋ช ์ ๋ํ ์ฃผ์์ ํ๊ธ๋ก ์์ฑ
2๏ธโฃ ํจ์ ์ฃผ์
/**
* ํจ์ ์ค๋ช
* @param a: ๋ง์
์ ์ํ ์ฒซ๋ฒ์งธ ์ธ์
* @param b: ๋ง์
์ ์ํ ๋๋ฒ์งธ ์ธ์
* @return: ์ธ์๋ก ๋ฐ์ ๋ ์ ์๋ฅผ ๋ํ ๊ฐ์ ๋ฆฌํด
*/
const filterDescription = (a, b) => {
return { a, b };
};
Github Flow๋ ๋จ์ํ๊ณ ํจ๊ณผ์ ์ธ ๋ธ๋์น ์ ๋ต์ผ๋ก, ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๋ฅผ ์ ์งํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด ์ ๋ต์ ์ต์ ๊ธฐ๋ฅ์ด ํญ์ ๋ฐฐํฌ๋์ด๋ ๋๋ ํ๊ฒฝ๊ณผ CI/CD๊ฐ ์ ๊ฐ์ถฐ์ ธ ์์ด ๋ฒ๊ทธ์ ๋ํ ๋๋น๊ฐ ์ ๋์ด์๋ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค.
- main ๋ธ๋์น: ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๋ฅผ ์ ์งํฉ๋๋ค. ์ด ๋ธ๋์น์ ๋จธ์ง๋ ์ฝ๋๋ ๊ณง๋ฐ๋ก ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌ๋ ์ ์์ต๋๋ค.
- feature ๋ธ๋์น: ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด main ๋ธ๋์น๋ก ๋ณํฉ๋ฉ๋๋ค.
-
main์ ๋จธ์ง๋ ๋ธ๋์น๋ ์ญ์ ํฉ๋๋ค
-
๋ธ๋์น ์ด๋ฆ์ ๋ช ํํ๊ฒ ์์ฑํฉ๋๋ค
- ๋ธ๋์น ์ด๋ฆ์ ๋ธ๋์น์ ๋ชฉ์ ์ ๋ช ํํ๊ฒ ๋ํ๋ด์ผ ํฉ๋๋ค.
- ์๋ฌธ์์ ํ์ดํ(-)์ ์ฌ์ฉํฉ๋๋ค. ์: 'feature/login-modal'
- ๋ช
๋ช
๊ท์น:
feature/<๊ธฐ๋ฅ๋ช >
: ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ์ฌ์ฉํฉ๋๋ค. ์:feature/login
bugfix/<๋ฒ๊ทธ๋ฒํธ>
: ๋ฒ๊ทธ ์์ ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค. ์:bugfix/123
hotfix/<๋ฒ๊ทธ๋ฒํธ>
: ๊ธด๊ธํ ๋ฒ๊ทธ ์์ ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค. ์:hotfix/critical-fix
refactor/<๋ฆฌํฉํ ๋ง๋ด์ฉ>
: ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค. ์:refactor/cleanup-code
release/<๋ฒ์ ๋ฒํธ>
: ๋ฐฐํฌ ์ค๋น๋ฅผ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค. ์:release/1.0.0
experiment/<์คํ๋ช >
: ์๋ก์ด ์์ด๋์ด๋ ๊ธฐ์ ์คํ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค. ์:experiment/new-idea
docs/<๋ฌธ์๋ช >
: ๋ฌธ์ ์์ ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค. ์:docs/update-readme
chore/<๊ธฐํ์์ ๋ช >
: ์์ํ ์์ ์ด๋ ์ค์ ๋ณ๊ฒฝ ๋ฑ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค. ์:chore/update-gitignore
-
ํ๋์ ๋ธ๋์น์์๋ ํ๋์ ์์ ๋ง ํฉ๋๋ค
ํ์๋ค์ด ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ํ ๋ฆฌํ์คํธ(PR)๋ฅผ ์์ฑํ๊ณ ๊ฒํ ํ ์ ์๋๋ก, ๋ค์์ PR ์ปจ๋ฒค์ ์ ๋ฐ๋ฆ ๋๋ค.
- PR์ ์์ฑํ ๋๋ ์๋ ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ํ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์์ ์ ๋ชฉ์ ๊ณผ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํฉ๋๋ค.
- ์ด PR๊ณผ ๊ด๋ จ๋ ์ด์ ๋ฒํธ๋ฅผ ๋ช ์ํฉ๋๋ค. ์: closed: #4
- ํด๋น PR์์ ๊ตฌํ๋ ๊ธฐ๋ฅ, ์์ ๋ ๋ฒ๊ทธ, ๋๋ ๊ธฐํ ๋ณ๊ฒฝ ์ฌํญ์ ์์ธํ ์ค๋ช ํฉ๋๋ค.
- ๋ฆฌ๋ทฐ์ด๊ฐ ๋ฆฌ๋ทฐํ ๋ ์ ์ํด์ผ ํ ์ฌํญ์ด๋ ์๊ฐํด๋ณผ ๋ฌธ์ ๋ฅผ ๊ธฐ์ฌํฉ๋๋ค.
- ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช ํ๊ณ , ์คํฌ๋ฆฐ์ท, GIF, ๋๋ ๋ผ์ด๋ธ ๋ฐ๋ชจ ๋งํฌ๋ฅผ ์ฒจ๋ถํฉ๋๋ค. ์คํฌ๋ฆฐ์ท์ ๊ถ์ฅํฉ๋๋ค.
-
PR์ ์ ์ถํ๊ธฐ ์ ์ ์๋ ํญ๋ชฉ๋ค์ ํ์ธํด ์ฃผ์ธ์:
-
Reviewers๋ฅผ ์ง์ ํ์ต๋๋ค.
-
Assignees๋ก ๋ณธ์ธ์ ์ ํํ์ต๋๋ค.
-
์ ์ ํ label์ ์ ํํ์ต๋๋ค.
- PR ์์ฑ: ์์ ์ ์๋ฃํ ํ, ๋ณ๊ฒฝ ์ฌํญ์ ์ค๋ช ํ๋ PR์ ์์ฑํฉ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ: PR์ด ์์ฑ๋๋ฉด ํ์๋ค์๊ฒ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํฉ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ ์งํ: ๋ฆฌ๋ทฐ์ด๋ ์ฝ๋๋ฅผ ๊ฒํ ํ๊ณ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
- ํผ๋๋ฐฑ ๋์: PR ์์ฑ์๋ ๋ฆฌ๋ทฐ์ด์ ํผ๋๋ฐฑ์ ๋ฐ์ํ์ฌ ์ฝ๋๋ฅผ ์์ ํฉ๋๋ค.
- ๋ฆฌ๋ทฐ์ด ๋์: ๋ฆฌ๋ทฐ์ด๋ ์์ ๋ ์ฝ๋๋ฅผ ๋ค์ ๊ฒํ ํ๊ณ ๋์ํฉ๋๋ค.
- PR ๋ณํฉ: ํ์ํ ์น์ธ ์๊ฐ ์ถฉ์กฑ๋๋ฉด, PR์ ๋ฉ์ธ ๋ธ๋์น์ ๋ณํฉํฉ๋๋ค.
๋ฆฌ๋ทฐ ํผ๋๋ฐฑ์ ์์ฑํ ๋๋ ํ์ํ ๋ถ๋ถ์ ๋ง๋จธ๋ฆฌ๋ฅผ ์ ์ด ๊ตฌ์ฒด์ ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
- [๋ณ๊ฒฝ ์์ฒญ]: ๋ฐ๋์ ์์ ์ด ํ์ํ ๋ถ๋ถ
- [์ง๋ฌธ]: ์ฝ๋์ ์๋๋ ๊ตฌํ ๋ฐฉ์์ ๋ํ ์ง๋ฌธ
- [์ ์]: ์ฝ๋ ๊ฐ์ ์ ์ํ ์ ์ ์ฌํญ
- ๋ฆฌ๋ทฐ๋ฅผ ์ํ ๋ฆฌ๋ทฐ๋ฅผ ํ์ง ๋ง์ธ์: ํผ๋๋ฐฑํ ๊ฒ์ด ์์ผ๋ฉด ์นญ์ฐฌ์ ํด์ฃผ์ธ์. ๊ธ์ ์ ์ธ ํผ๋๋ฐฑ๋ ์ค์ํ ๋ฆฌ๋ทฐ์ ์ผ๋ถ์ ๋๋ค.
- ๊ตฌ์ฒด์ ์ด๊ณ ๋ช ํํ ํผ๋๋ฐฑ ์ ๊ณต: ํผ๋๋ฐฑ์ ๊ตฌ์ฒด์ ์ด๊ณ ๋ช ํํ๊ฒ ์์ฑํฉ๋๋ค. ์๋ฅผ ๋ค์ด, "์ด ๋ถ๋ถ์ ๋ณ๊ฒฝํ์ธ์"๋ณด๋ค๋ "์ด ๋ถ๋ถ์ ๋ณ๊ฒฝํ๋ฉด ์ฑ๋ฅ์ด ๊ฐ์ ๋ ๊ฒ์ ๋๋ค"์ ๊ฐ์ด ๊ตฌ์ฒด์ ์ธ ์ด์ ๋ฅผ ์ค๋ช ํฉ๋๋ค.
- ์ฝ๋ ์คํ์ผ ๊ฐ์ด๋ ์ค์: ์ฝ๋ ์คํ์ผ ๊ฐ์ด๋์ ๋ฐ๋ฅธ ์ผ๊ด๋ ์ฝ๋ ์์ฑ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
- ํ ์คํธ ์ถ๊ฐ ์ฌ๋ถ ํ์ธ: ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ์์ ์ฌํญ์ ๋ํ ํ ์คํธ๊ฐ ์ถ๊ฐ๋์๋์ง ํ์ธํฉ๋๋ค.
- ์๋ฏธ ์๋ ์ปค๋ฐ ๋ฉ์์ง: ์ปค๋ฐ ๋ฉ์์ง๊ฐ ์๋ฏธ ์๊ณ ๋ช ํํ๊ฒ ์์ฑ๋์๋์ง ํ์ธํฉ๋๋ค.
- ๋ฌธ์ํ: ํ์ํ ๊ฒฝ์ฐ ๋ฌธ์๊ฐ ์ ๋ฐ์ดํธ๋์๋์ง ํ์ธํฉ๋๋ค.