λμꡬ맀μλ€μ μν λμ μ¬μ΄νΈ μ λλ€.
WinkBookμ e-bookμ ν맀νλ 컨μ
μ μΌνλͺ° μ¬μ΄νΈ μ
λλ€.
λ€μν λ―Έλμ΄κ° λ°λ¬ν¨ μΌλ‘μ μ±
μ λ©μ΄μ§λ νλμΈλ€μ μν΄, μ‘°κΈλ μΉμ νκ² μ±
μ λ€κ°κ°μ μλλ‘ e-bookμ 컨μ
μ μ‘κ² λμμ΅λλ€.
μ§λ£¨νμ§ μμ λλμ μ£ΌκΈ° μν΄ λ§νμ±
μ²λΌ μ±λκ° μλ μ¬μ΄νΈ UIλ₯Ό λ§λ€κ² λμμ΅λλ€.
μ΄ 5κ°μ λμλ³ μΉ΄ν
κ³ λ¦¬κ° λλ μ Έ μμΌλ©° μ€μ λμ μ¬μ΄νΈμμ μ¬μ©νλ μμΈ μ€λͺ
μ λνλ΄λλ‘ νμ΅λλ€.
μΌνλͺ°μ λ§λ€ λ μΆ©λΆν νμ©ν μ μλ μ¬μ΄νΈλ₯Ό κ°μ€νμλ λͺ©νλ₯Ό κ°μ§κ³ μ§ν λμμΌλ©°, μ€μ μ€ν Apiλ₯Ό νμ©νμ¬ κΈ°λ₯μ ꡬννμμ΅λλ€.
2023.05.30 ~ 2023.07.02
WinkBook (μν¬λΆ μΌνλͺ° νμ΄μ§ )
WinkBook-Admin (μν¬λΆ κ΄λ¦¬μ νμ΄μ§)
For building and running the application you need:
$ git clone [email protected]:hahahaday12/WinkBook.git
$ cd client
$ cd client
$ npm install
$ npm run dev
λ©μΈ νμ΄μ§ | λ©μΈ νμ΄μ§ | λ©μΈ νμ΄μ§ |
---|---|---|
νμκ°μ νμ΄μ§ | λ‘κ·ΈμΈ νμ΄μ§ |
---|---|
μμΈμ 보 νμ΄μ§ | μμΈμ 보 νμ΄μ§ |
---|---|
μ₯λ°κ΅¬λ νμ΄μ§ | μ£Όλ¬Έ νμ΄μ§ |
---|---|
μ νκ²μ νμ΄μ§ | λ§μ΄ νμ΄μ§ |
---|---|
νμμ 보 μμ νμ΄μ§ | κ²°κ³Ό λͺ¨λ¬ |
---|---|
κ΄λ¦¬μ νμ΄μ§ (μν κ΄λ¦¬) | κ΄λ¦¬μ νμ΄μ§ (μνλ±λ‘ κ΄λ¦¬) |
---|---|
κ΄λ¦¬μ νμ΄μ§ (νμμ 보 κ΄λ¦¬) | κ΄λ¦¬μ νμ΄μ§ (ꡬ맀μ 보 κ΄λ¦¬) |
---|---|
-> corse μ€λ₯λ?
corseλ "κ΅μ°¨ μΆμ² 리μμ€ κ³΅μ " μ΄λ©°, μΉ λΈλΌμ°μ μμ μ€νλλ μ€ν¬λ¦½νΈκ° λ€λ₯Έ μΆμ²(λλ©μΈ, νλ‘ν μ½, ν¬νΈ)μ 리μμ€μ μ κ·Όν λ 보μ μμ μ΄μ λ‘ λ°μνλ μ€λ₯ μ
λλ€.
( url μλΆλΆμ 보면 protocol, host, portκ° μ νμλλ°, μ΄ λΆλΆμ΄ λ€λ₯΄κ² μμ²μ΄ λ€μ΄κ°λ©΄ CORSμλ¬κ° λ°μ ν©λλ€.)
-> Vite νκ²½μμμ Proxy μ€μ . νλ‘μ νΈ νκ²½μ λ§κ² Proxyλ₯Ό μ€μ ν΄μ£Όμμ΅λλ€. Proxyλ APIλ‘ λ€νΈμν¬ μμ²/μλ΅μ μ£Όκ³ λ°λ clientμ server μ¬μ΄λ₯Ό μ€κ°νλ μ€κ°μ μν μ
λλ€.
Proxy μ€μ μ νλ€λ©΄ μμ²μ λ 릴 λ originμ λ°κΏμ serverμ λ 릴 μ μκΈ°λλ¬Έμ ν΄λΉ λ°©λ²μ μ ννμ΅λλ€.
Viteμμ Proxy μ€μ λ°©λ² -> vite.config.jsonμμ Proxy κ²½λ‘λ₯Ό μ€μ .
π₯ λ¬Έμ 2. μΉ΄ν24μμ μ νμ‘°ν apiλ₯Ό μ΄μ©νμ¬ μμΈ νμ΄μ§λ₯Ό λνλ΄κ³ μμΌλ©° ꡬ맀, λμ¬ λ²νΌ ν΄λ¦μ λ°λΌ μ₯λ°κ΅¬λμμλ λ€λ₯΄κ² λ΄κ²¨μΌ νλ€.
-> μ ν μ‘°ν ν λ μ€λ λ°μ΄ν°μ propertyμ ꡬ맀, λμ¬λ₯Ό ꡬλΆν΄μ€μ μλ κ°μ΄ μμμ΅λλ€.
(# μμΈ νμ΄μ§μ λμ€λ μ ν property μ¬μ§)
-> μμΈ νμ΄μ§μμ ꡬ맀, λμ¬λ₯Ό ν΄λ¦ν λ μ ν μ‘°νν΄ μ€λ apiμ λ°μ΄ν°μ keyκ°,propertyλ₯Ό μΆκ° νμμ΅λλ€.
μ±
ꡬ맀νκΈ° λ²νΌμ ν΄λ¦μ detailμ μ 보μ property gubun κ°μ μΆκ° νμμ΅λλ€.
λ°λΌ μ±
ꡬ맀νκΈ° λ²νΌ ν΄λ¦μ gubun κ°μ΄ buy λ‘ μΆκ° λ©λλ€. μ₯λ°κ΅¬λ λ΄κΈ°μ gubun κ°μ rent λ‘ μΆκ° λ©λλ€.
-> μ΄λλ―Ό κΆνμ μν μ°Έκ³ ν api λ¬Έμ
μ 리:
μ΄λλ―Ό νμ΄μ§ μ μ νκΈ° μν΄μ tokenμ΄ νμνλ°, tokenμλ codeκ°μ΄ νμνλ€.
ν΄λΉ κ°μ λ°κΈ λ°κΈ° μν΄μ μΉ΄ν24μ νΉμ urlμμ λ‘κ·ΈμΈμ νλ©΄ μ£Όμμ°½μ codeκ°μ΄ μμ±λκ³ μ΄λ₯Ό λ°νμΌλ‘ token μμ² apiλ₯Ό 보λΈλ€.
μ΄ν λ°μ μλ΅μΌλ‘ access tokenμ μΏ ν€, refresh tokenμ local storageμ μ μ₯νκ² λλ―λ‘ λ°°ν¬λ νμ΄μ§λ‘ μ μμ νλ©΄ refresh tokenμ κ°κ³ ν ν°μ μμ²νλ―λ‘ μ΄λλ―Ό κΆνμ΄ λΆμ¬λλ€.
-> μμ μ€λͺ λ μΈμ¦ μ½λ Request νμ redirect_uri λΆλΆμ νμ΄ λ°°ν¬ν Admin λ°°ν¬ urlμ λ£μ΄ ν΄λΉ νμ΄μ§μ μΈμ¦μ½λκ° λ°κΈλκ³ μΈμ¦ λ°μ tokenκ°μ΄ μ μ₯λλ©° λ°°ν¬λ μ΄λλ―Ό νμ΄μ§κ° λνλκ² λ©λλ€.
π₯ λ¬Έμ 4. λ‘κ·ΈμΈμ΄ λμ΄μλ μνμμ tokenμ΄ λ§λ£ λλ©΄, ν€λμ λ‘κ·Έμμ λΆλΆμ΄ ν΄λ¦λμ§ μμΌλ©° 'μ ν¨νμ§ μλ μ¬μ©μ' λΌκ³ 401 μ μνκ°μ΄ λνλ©λλ€.
-> λ‘κ·Έμμμ΄ ν΄λ¦λμ§ μκ³ μ€λ₯ λ©μΈμ§κ° κ³μ λνλ©λλ€.
-> header λΆλΆμ μλ¬ μνκ°μ λν 쑰건μμ λ£μ΄ μλ¬ μνκ°μ΄ 401 μΌμ tokenμ μ κ±°νλ μ½λλ₯Ό μμ±ν΄μ£Όμλ€.
-> κΈ°μ‘΄μ μ£Όμ΄μ§ Api κ° μλ, μ€μ openApi λ₯Ό μ¬μ©ν΄μ μνμ λ±λ‘νκ³ , λ±λ‘ν μνμ λ°μ΄ν°λ₯Ό λνλ΄λ μμ
μ΄ μ¬λ―Έλ°κΈ°λ νλ©΄μ μ΄λ €μ΄ λΆλΆλ μμμ΅λλ€.
λλΆμ κ°λ° λ¬Έμλ₯Ό 보λλ²μ μκ² λμκ³ , νμλ€κ³Ό ν¨κ» apiλ₯Ό μ§μ μ 리ν΄λ΄μΌλ‘μ restApi μ λν μ΄ν΄λκ° μκ²Όμ΅λλ€.
μ₯λ°κ΅¬λλ₯Ό λ΄λ apiλ , ꡬ맀 μ‘°νμ λν api κ° λ°λ‘ μλκ²μ΄ μλμ¬μ μ΄ λΆλΆμ λν΄ μ΄λ»κ² νμ΄ λκ°μ§, λ°μ΄ν°λ₯Ό νμ©ν μ μλ λ°©λ²μ λν΄μ λ§μ κ³ λ―Όμ ν΄λ³Όμ μλ κ³κΈ°κ° λμμ΅λλ€.
μν νλ©΄μ κ²°μ λͺ¨λλ‘ κ²°μ λ₯Ό ν΄μΌν μν©μ΄ κ½€λ λ§μ΄ μκΈ° λλ¬Έμ μ€κ±°λ openApi (Import) λ₯Ό μ΄μ©νλ©° μ‘°κΈλ μ€μλΉμ€μ κ°κΉμ΄ κΈ°λ₯μ ꡬνν΄λ³Όμ μμλκ² κ°μμ λΏλ― νμμ΅λλ€.
κ° κΈ°λ₯λ€μμ λ°μ΄ν° νΈλ€λ§μ νλ©°, μ΄λ»κ² νλ©΄ μ‘°κΈλ κ°λ
μ±μ΄ μ’κ³ , μ±λ₯ μ’μ μ½λλ₯Ό μμ±ν μ μμκΉ κ³ λ―Όν΄ λ³Όμ μλ κ³κΈ°κ° λμμ΅λλ€.
μ΄λ² νλ‘μ νΈλ₯Ό νλ©΄μ λ€μν κΈ°λ₯μ ꡬνμ κ²½ν ν μ μμμΌλ©°, λ€μλ²μ μ€μλΉμ€λ₯Ό ν μ μμλ§ν ν리ν°μ νλ‘μ νΈλ₯Ό λ§λ€μ΄ λ³΄κ³ μΆμ μμ¬λ μκΈ°κ² λμμ΅λλ€.
-> μ½λ ꡬ쑰 μμ X , 맨μ²μ λ°°ν¬λ μ±λ₯ μ μ ν μ
λλ€.
-> header searchInput μ»΄ν¬λνΈ λͺ¨λν , νμμλ μ΄λ―Έμ§, μ½λ μμ ν μ±λ₯ κ²μ¬ μ μ νμ
λλ€. μ±λ₯ μ μκ° μ¬λΌκ°μΌλ©°, κ°κ°μ μ±λ₯ μλκ° μ‘°κΈ λΉ¨λΌ μ§κ²μ΄ 보μ
λλ€.
-> νλ‘μ νΈ νΉμ±μ μ΄λ―Έμ§κ° λ§μ λΆλΆμ μ°¨μ§ νκΈ° λλ¬Έμ μ΄λ―Έμ§λΆλΆμμ μ΄λ»κ² νλ©΄ μ±λ₯μ κ°μ ν μ μμμ§ κ³ λ―Ό νμμ΅λλ€.
κΈ°μ‘΄ openApi μμ λ°μμ€λ μ΄λ―Έμ§ νμμ΄ jpg λ‘ μ§μ μ΄ λμ΄μκΈ° λλ¬Έμ μ΄λ―Έμ§ νμ λ³νμ΄ μ΄λ €μ κ³ , λ°μ΄ν°μ μ μ₯λ μ΄λ―Έμ§κ° μλ ν νλ‘μ νΈ publicμ μ μ₯λμ΄ μλ μ΄λ―Έμ§μ νμμ λ³νν΄ λ³΄λλ‘ νμμ΅λλ€.
PageSpeed Insightsμμ μ΄λ―Έμ§λ₯Ό λ³ννλ λ°©μμ WenP, AVIF μ νμμ΄ κΈ°μ‘΄ JPEG λ³΄λ€ μμΆλ₯ μ΄ λκ³ λ€μ΄λ‘λκ° λΉ λ₯΄λ€λ μ 보λ₯Ό μ£Όμμ΅λλ€. λ°λΌ νλ‘μ νΈμ μ μ₯λ μ΄λ―Έμ§μ νμμ AVIF νμμΌλ‘ λ³ννμμ΅λλ€.
-> 2μ°¨ μ±λ₯ κ²μ§ λ³΄λ€ λ‘λ© μλλ λΉ λ₯΄κ³ , μ±λ₯ μ μλ μ¬λΌκ°κ² μ΄ λ³΄μ΄λ©° νμ΄μ§λ₯Ό μ²μλ€μ΄μ¬λ νλ©΄ λ‘λ©μ΄ μ‘°κΈ λΉ¨λΌμ§κ²λ λλΌκ² λμμ΅λλ€.
μ‘°κ·Έλ§ λΆλΆμμλ μ±λ₯ κ°μ μ΄ μ΄λ€μ§λ κ²μ 보면μ, μ±λ₯μ λν΄ μ κ²½μ°λ©° κΈ°λ₯ ꡬν νλκ²μ΄ μ€μνλ€λ κ²μ λλΌκ² λμμ΅λλ€.
λν μ±λ₯ κ°μ μ μν΄ μλ£λ₯Ό μ°Ύμ보며 λ€μν λ°©λ²μΌλ‘ κ°μ μ΄ μ΄λ€μ§λ κ²μ κΉ¨λ«κ² λμμ΅λλ€.
μμΌλ‘ λ€μν λ°©λ²μΌλ‘ μ±λ₯ κ°μ μ ν΄λ³Ό μκ°μ
λλ€.
π Mainpage lazyloading μ μ©
π λ‘κ·ΈμΈ react-hook-form μ μ©
-> νμκ°μ
ν μ λ³΄λ‘ λ‘κ·ΈμΈ μ 보λ₯Ό μ
λ ₯νκ² λκ³ , μ
λ ₯ν λ±λ‘ νκ² λλ©΄ Signin μ΄λΌλ ν¨μκ° μ€νλκ³ , λ§μ½ μ
λ ₯μ°½μ μ§μ ν μ‘°κ±΄μ΄ μ
λ ₯λμ§ μμΌλ©΄ κ°μ
μ΄ λμ§μκ² return falseλ‘ μ§μ ν΄ λμμ΅λλ€.
쑰건μ λ§κ² μ
λ ₯μ΄ λλ©΄ μλ²μ λ‘κ·ΈμΈ μ 보λ₯Ό 보λ΄κ² λκ³ , μλ²μμ token κ°μ λ°μ localStorage μ μ μ₯νλλ‘ κ΅¬ν νμμ΅λλ€.
token μ μ¬μ©νμ¬ μ¬μ©μλ₯Ό μλ³νκ³ , μ¬μ©μμ μΈμ
μ μ§, μ κ·ΌκΆν λΆμ¬λ₯Ό νλλ‘ κ΅¬ννμμ΅λλ€.
-> <μ¬μ§ μ²¨λΆ νμ>
-> form νκ·Έλ₯Ό μ΄μ©νμ¬ μ¬μ©μ μΉνμ μΈ μΈν°νμ΄μ€λ₯Ό λ§λ€κ³ , μμ λ°μ΄ν° μμλ€μ κ·Έλ£Ήν νμ¬ μλ²μκ² λ°μ΄ν°λ₯Ό κ°μν νμ¬ μ λ¬ νκ² κ΅¬ννμμ΅λλ€.
-> λΉλ°λ²νΈ μ ν¨μ± κ²μ¬μ λν μνκ°μ μ μ₯ν μ μλλ‘ isEmail μ state λ₯Ό μμ±νκ³ , μνμ λ°λ₯Έ μ€λ₯ λ©μΈμ§λ₯Ό μ μ₯ν μ μλ μ€λ₯ μνμ emailMessage μ state λ₯Ό μμ± νμμ΅λλ€.
μ΄ν, 쑰건μμΌλ‘ μ΄λ©μΌ μ ν¨μ± κ²μ¬λ₯Ό νμ¬ μ§μ λ 쑰건μμ λ§μΌλ©΄ κ·Έμ λ°λ₯Έ μν λ©μΈμ§λ₯Ό setIsEmailμμ μ μ₯ν΄λκ³ , μνκ°μ setEmailMessage μμ μ μ₯ν΄λμμ΅λλ€.
λ°λΌ μ¬μ©μκ° μ΄λ©μΌμ μ
λ ₯μ€μ μμλ 쑰건μμ λ§μ§ μμΌλ©΄ μλμ ν΄λΉ μνκ°μ λν μ€λ₯ λ©μΈμ§κ° μΆλ ₯λ©λλ€.
-> νμμ 보λ₯Ό μ
λ ₯ν λ±λ‘ λ²νΌμ λλ₯΄λ©΄ type μ΄ submit μΈ {signUp} μ΄λΌλ ν¨μκ° μ€νλκ³ μ‘°κ±΄μμΌλ‘ μ νμ§μ§ μμ κΈ°μ
λμ΄ μ‘΄μ¬νλ©΄ return falseλ‘ μ§νμ λ©μΆ₯λλ€.
κ°μ
μ‘°κ±΄μ΄ λ§μΌλ©΄ μλ²λ‘ μ
λ ₯μ 보λ€μ μ λ¬νκ³ tokenκ°μ λ°μμ μ±κ³΅ μ¬λΆμ μλ¦Όμ΄ λΉλλ€.
μμΈ μ²λ¦¬λ‘λ μλ²μμ μ€λ μνκ°μ λ°λΌ μλ¦Ό, μ½μ μ°½μ λνλλλ‘ κ΅¬ννμμ΅λλ€.
-> dataλΌλ λ³μ μμ μ νμ μ‘°ννλ ν¨μ getList λ₯Ό μ€νν , productList μ ν리μ€νΈ μ 보μ, product_no μ ν μ«μλ₯Ό μ
λ ₯λ°μ ν΄λΉ μμ΄ν
μ μ 보λ₯Ό κ°μ Έμ€κ²λ ꡬννμμ΅λλ€.
< Link > νκ·Έλ₯Ό μ¬μ©νμ¬ κ° μμ΄ν
μ λν λ§ν¬λ₯Ό μμ±ν , κ²½λ‘κ° .product_no κ°μ λ°λΌ μμ±λκ² κ΅¬ννμμ΅λλ€.
-> useParams λ₯Ό μ¬μ©ν΄ URLμμ productNo 맀κ°λ³μλ₯Ό μΆμΆνκ³ , ν΄λΉ 맀κ°λ³μλ₯Ό νμ©νμ¬ μμΈνμ΄μ§ getDetails APIμ ν¨μ μμ ν΄λΉ μνμ λν μΈλΆ μ 보λ₯Ό κ°μ Έμ€κ²λ ꡬν νμμ΅λλ€.
-> ꡬ맀, λμ¬ λ²νΌ ν΄λ¦μ detailμ λ΄μμ Έ μλ λ°μ΄ν°μ, μΆκ°ν property κ°μ λ§€κ° λ³μλ‘ λ겨주μμ΅λλ€.
μ₯λ°κ΅¬λμ λ΄μλ, μ€λ³΅λ μνμ μ κ±° νκΈ°μν΄ javascriptμ Set κ°μ²΄λ₯Ό μ¬μ©νκ³ , Spread Oprator λ₯Ό νμ©νμ¬ μ€λ³΅ μ κ±°λ κ°μ΄ λ°°μ΄λ‘ λ³νλκ² κ΅¬ννμμ΅λλ€.
JSON ννμ λ¬Έμμ΄λ‘ λ³ννμ¬ λ‘컬 μ€ν 리μ§μ 'cart' ν€λ‘ μ μ₯νμκ³ μ΄λ₯Ό ν΅ν΄ μ₯λ°κ΅¬λ λ°μ΄ν°κ° μ μ§ λ©λλ€. κ·Έν μνκ°μ alert μ°½μ λμ΄ μ£Όμμ΅λλ€.
-> μμΈμ²λ¦¬λ‘ some() λ©μλλ₯Ό μ¬μ©νμ¬ νλ μ΄μ μμκ° μ‘°κ±΄μ λ§μ‘±νλ©΄ true κ°μ΄ λμ΅λλ€. λ°λΌ , μ₯λ°κ΅¬λμ μλ μνλ²νΈμ νμ¬ μμΈνμ΄μ§ μνμ λ³΄κ° κ°μΌλ©΄ trueκ° λμ΄ μ€λ³΅μ΄λΌλ μλ¦Όμ°½μ΄ λνλκ² λ©λλ€.
-> Import open Api λ₯Ό μ΄μ©ν΄μ κ²°μ μ 보λ₯Ό propsλ‘ λ겨 μ£Όμμ΅λλ€. κ²°μ κ° μλ£λν λ§μ΄νμ΄μ§μ μΆλ ₯νκΈ°μν΄ κ²°μ λ²νΈλ₯Ό localStorage μ μ μ₯νμμ΅λλ€.
(# λ‘컬μ μ μ₯ν μ΄μ = μ ν ꡬ맀 λ΄μμ ꡬννκΈ° μν΄μ ꡬ맀λ΄μμ μ μ₯ν μ μλ DB,Api κ° λ°λ‘ μμ΄μΌ νμ΅λλ€. νμ§λ§ ν΄λΉ Apiκ° μ€κ³λμ΄μμ§ μμκΈ° λλ¬Έμ κΈ°λ₯ꡬνμ μν΄ localStorageμ μ μ₯νλλ‘ κ΅¬ννμμ΅λλ€.)
μ΄ν κ²°μ κ° μ±κ³΅λλ©΄, "mypayment" ν€ κ°μΌλ‘ λ‘컬μ€ν 리μ§μ ν΄λΉ ν€ κ°μ΄ μ μ₯λμ΄μμΌλ©΄, JSON.Parse λ₯Ό νμ¬ λ³μμ ν λΉν΄μ£Όμκ³ , μμΌλ©΄ μ£Όλ¬Έλ²νΈλ₯Ό λ΄μ λ°°μ΄μ λ§λ€μ΄ "mypayment" ν€ κ°μ μ μ₯λκ² κ΅¬ννμμ΅λλ€.
μλμ± | κΉνμ | κΉμΈμ° | λ¬Έλν | λ°μ§μ |
---|---|---|---|---|
λ©μΈνμ΄μ§, μ΄λλ―Όνμ΄μ§, μΉ΄ν24&μμν¬νΈ ν ν° λ°ν λ° api | μ₯λ°κ΅¬λ, λ§μ΄νμ΄μ§, μμΈνμ΄μ§, νμκ°μ , μΈμ¦, κ²°μ λ° μ‘°ν, λμμΈ λ° λ μ΄μμ | κ²μνμ΄μ§, κ²°μ | λ§μ΄νμ΄μ§, νμμ 보 μμ | κ²μνμ΄μ§, λͺ©λ‘μ‘°ν |
- κ²°μ κ°λ₯ν μΉ΄λμ¬
- λΉμ¨
- νλ
- μλλ μΉ΄λ
- κ΅λ―Ό
- μΌμ±
(ν μ€νΈ κ²°μ λͺ¨λμ΄κΈ° λλ¬Έμ μ°κ²°λ μΉ΄λμ¬λ§ κ²°μ κ° λ©λλ€. μ£Όν μΆκ°μ μΈ κ²°μ λͺ¨λλ λμ ν΄λ³Ό μκ°μ λλ€.)
- μ£Όλ§ λ° νΉλ³ν μ¬μ κ° μλ κ²½μ°λ₯Ό μ μΈνκ³ 1μμ νμ
- λ°μΌλ¦¬μ€ν¬λΌμ ν΅ν΄ κ°μμ μ§νμν©κ³Ό μμ
λͺ©νλ₯Ό νμΈ
-> λλ΅μ μΈ λͺ©νμ ꡬ체μ μΈ μμ²μ¬νμ μΆκ°νλ μκ°
-> μ€λ₯ λ°μ μ νλ©΄μ 곡μ νμ¬ ν΄κ²° λ°©μμ ν¨κ» λͺ¨μ
-> κ·Έλ£Ήμ κ° μμ
λ΄μ©κ³Ό ꡬν λ΄μ©μ ꡬ체μ μΈ μꡬλ₯Ό ν λ μ¬μ©
-> μ§ν μ€ λ§νλ λΆλΆμ λν λ°©λ² κ³΅μ
-> κ·ΈλΌμ΄λ λ£°, μ»€λ° μ»¨λ²€μ , api λ¬Έμ λ± νλ‘μ νΈμμ νμνκ²λ€μ κΈ°λ‘ν΄λμμ΅λλ€.
-> develop branch μμ±.
-> develop branch μμ κ°μ μ΄λ¦μ branch μμ±.
-> κ°μ branch μμ κΈ°λ₯ κ°λ°μ΄ μλ£λλ©΄ develop branch λ‘ PR μμ±.
-> κΉνλΈ λ΄λΉμκ° μ¬λΌμ¨ Pull request νμΈν develop branch λ‘ merge.
-> λͺ¨λ κΈ°λ₯ ꡬν μλ£ν μ΅μ’
μ μΌλ‘ develop branch λ₯Ό master branch λ‘ merge.
- μ ν κ²μ
- μΆμ² λμ
- sticky μλ΄λ°
- ꡬ맀, λμ¬ λ²νΌ
- μ₯λ°κ΅¬λ μλ μ΄λ
- ꡬ맀, λμ¬ λ²νΌ
- κ²μ κ²°κ³Ό 미리보기
- κ°μΈ ꡬ맀 λ΄μ
- νμ μ 보 μμ
- 물건 λ±λ‘/μμ /μμ
- μ 체 νμ λͺ©λ‘
- μ 체 κ²°μ λ΄μ