- λμμΈ ννΈμλ€μ΄ UXκ°μ μ μν΄ κΈ°μ‘΄μ μλΉμ€λ₯Ό 리λμμΈ ν΄μ¨ κ²μ μλ²ννΈμ ν¨κ» νμ νμ¬ κ΅¬ννκ³ λμμΈ ννΈ, κΈ°νννΈμ νμ μ κ²½νν΄λ³Ό μ μλ μΈλ―Έλμ λλ€.
- μΉ 3νμ νλμΉ΄λ 리λμμΈμ μ§ννμ΄μ!
μν | μ’ λ₯ |
---|---|
Library | |
Programming Language | |
Styling | |
Data Fetching | |
Formatting | |
Package Manager | |
Version Control |
1οΈβ£ Commit 컨벀μ
ν€μλ: λ΄μ©
- μμ:
init: μ΄κΈ° μΈν
feat: κΈ°λ₯ κ°λ°
Commit λ©μμ§ μ’ λ₯ μ€λͺ
μ λͺ© | λ΄μ© |
---|---|
feat | μλ‘μ΄ κΈ°λ₯μ μΆκ°ν κ²½μ° |
style | κΈ°λ₯μ μν₯μ μ£Όμ§ μλ 컀λ°, μ½λ μμ, css λ±μ ν¬λ§·μ κ΄ν μ»€λ° |
fix | λ²κ·Έλ₯Ό κ³ μΉ κ²½μ° |
refactor | νλ‘λμ μ½λ 리ν©ν λ§ |
docs | λ¬Έμλ₯Ό μμ ν κ²½μ°, νμΌ μμ , νμΌλͺ μμ λ± ex) README.md |
chore | λΉλ ν μ€νΈ μ λ°μ΄νΈ, ν¨ν€μ§ 맀λμ λ₯Ό μ€μ νλ κ²½μ°, μ£Όμ μΆκ°, μμν λ¬Έμ μμ |
code review | μ½λ 리뷰 λ°μ |
2οΈβ£ Branch μ λ΅
feat/#μ΄μλ²νΈ/μ΄μμ΄λ¦
- GitHub-Flow μ λ΅ + develop
- λΈλμΉ μ΄μ
feat/#μ΄μλ²νΈ/μ΄μμ΄λ¦
(camelCase): κΈ°λ₯μ κ°λ°νλ©΄μ κ°μκ° μ¬μ©ν λΈλμΉmain
: μμ ν μμ νλ€κ³ νλ¨λμμ λ, μ¦ λ°°ν¬κ° κ°λ₯ν μ΅μ’ mergeνλ λΈλμΉdevelop
: λ°°ν¬νκΈ° μ κ°λ° μ€μΌ λ κ°μμ λΈλμΉμμ mergeνλ λΈλμΉ (default λΈλμΉ)feat/#μ΄μλ²νΈ/κΈ°λ₯λͺ
: feature λΈλμΉ. μλ‘μ΄ κΈ°λ₯ κ°λ°. κ°λ°μ΄ μλ£λλ©΄ develop λΈλμΉλ‘ λ³ν©fix/#μ΄μλ²νΈ/κΈ°λ₯λͺ
: feature λΈλμΉ μμ± ν λ²κ·Έκ° μκ²Όμ λ μμ νλ λΈλμΉ- κ·Έ μΈ
hotfix
,release
λ±μ μ¬μ© X
3οΈβ£ μ½λ© 컨벀μ
-
λ³μλͺ , ν¨μλͺ μ κ³ λ―Όμ μ°μ μ μΌλ‘ νλ, μ£Όμμ΄ νμν κ²½μ°λ μ΄λ€ μν μ νλμ§ λ€λ₯Έ μ¬λμ΄ μ΄ν΄ν μ μλλ‘ μμ±νμ
-
ν΄μΌ ν μ¬νμ΄ μλ€λ©΄
// TODO:
μ£ΌμμΌλ‘ νμνμ -
μ»΄ν¬λνΈ νμΌμ νμ₯μλ
.tsx
,.jsx
λ‘ μ νλ€ -
μ»΄ν¬λνΈμ μΌλ° κΈ°λ₯μ ꡬννλ ν¨μ ꡬλΆ
-
μ»΄ν¬λνΈ: μΌλ° ν¨μ
function
μ μ¬μ©// Bad const skrr = () => { return <div>skrr</div> } export default skrr // Good function skrr() { return <div>skrr</div> } export default skrr
-
κΈ°λ₯μ ꡬννλ ν¨μ:
const
λ₯Ό μ¬μ©// Bad function handleskrr(number) { return number + 1 } // Good const handleSkrr = (number) => { return number + 1 }
-
-
λ³μ/ν¨μλͺ μ 20μ λ―Έλ§, μ£ΌμμΌλ‘ λ³μ μ€λͺ
-
λ³μ/ν¨μλͺ μ μ΄ν΄ν μ μμ μ λλ‘ κ³ λ―Ό
// Bad const isLoading = true; // Good const isUserDataLoading = true;
-
λλΆλΆμ κ²½μ°
μΉ΄λ© μΌμ΄μ€
λ₯Ό μ¬μ©// Bad const is_snake_case = 'Bad'; // Good const camelCase = 'Good';
-
μμλ μλ¬Έ λλ¬Έμ μ€λ€μ΄ν¬ νκΈ°λ² μ¬μ©
const SYMBOLIC_CONSTANT = 'value';
-
ν΄λμ€ μμ±μ/μμ±μ ν¨μλ λλ¬Έμ μΉ΄λ© μΌμ΄μ€ μ¬μ©
// ν΄λμ€ class ClassName {} // μμ±μ ν¨μ function Person() {}
-
URL, HTML κ°μ λλ¬Έμ μ½μ΄λ κ·Έλλ‘ μ¬μ©
const parseHTML = () => {} const parseXML = () => {}
-
-
μ΄λ²€νΈ νΈλ€λ¬λͺ μ
handle
λ‘ μμ// Good const handleClick = () => {} // Bad const clickHandler = () => {} const onClick = () => {} const onSubmit = () => {} const onClickHandler = () => {}
|-- π node_modules
|-- π public
|-- π src
|-- π apis
|-- π assets
|-- π components
|-- π layout
|-- π pages
|-- π routes
|-- π store
|-- π styles
|-- .env
|-- .eslintrc.cjs
|-- .gitignore
|-- .prettierrc
|-- .stylelintrc
|-- index.html
|-- package.json
|-- README.md
|-- tsconfig.json
|-- tsconfig.node.json
|-- vite.config.js
|-- yarn.lock
λ¬Έμ±ν¬ |
μλμ |
μ΄μλ¦Ό |
μ΄μ±μ |
Home View μ΄λ²€νΈ 리μ€νΈ μ‘°ν API |
Benefit View λ‘κ·ΈμΈ API νμκ°μ API λ μ΄μμ ꡬν |
Culture View μ»¬μ³ λ¦¬μ€νΈ μ‘°ν API |
Card View μ 체 μΉ΄λ μ‘°ν API μΉ΄λ λΆλ§ν¬ API μΉ΄λ νν°λ§ μ‘°ν API |