Github rest api μ€ issue apiλ₯Ό μ¬μ©ν΄μ issue μ‘°ννκΈ° μ¬μ΄νΈλ₯Ό ꡬννμμ΅λλ€.
β‘οΈ angularκ° μ΄μνλ angular-cli λ νΌμ§ν 리μ issueλ₯Ό λ³Ό μ μκ² νμμΌλ©°,
β‘οΈ νλ©΄ ν¬κΈ°μ μκ΄μμ΄ uiκ° λ³κ²½λλ λ°μν μ¬μ΄νΈλ‘ μ μνμμ΅λλ€.
β‘οΈ νμ΄μ§λ€μ΄μ μΌλ‘ ν΄λΉ λ νΌμ§ν 리μ μ΄μ λͺ©λ‘μ νμΈν μ μμ΅λλ€.
β‘οΈ λν νν° κΈ°λ₯μ ν΅ν΄ μ΄μλ₯Ό μ λ°μ΄νΈμ/μμ±μ/λκΈμ, 10κ°/20κ°/50κ° μ© μ λ ¬νλ μ΅μ μ μ ννμ¬ λ³Ό μ μμ΅λλ€.
β‘οΈ λν μ΄μλ₯Ό ν΄λ¦νλ©΄ μ΄μμ λ΄μ©κ³Ό λκΈμ΄ λ΄κΈ΄ λν μΌ νμ΄μ§λ‘ μ΄λνλλ‘ λ§λ€μμ΅λλ€.
π https://exquisite-khapse-d1a5a8.netlify.app
π https://pair1-git-issue-project-j7st.vercel.app/
default.mov
default.mov
1.mov
- apis
- @core.js
- issue.js
- components
- FilterBox.js
- Header.js
- Layout.js
- Loading.js
- Pagination.js
- TopButton.js
- pages
- Comment.js
- Issue.js
- IssueDetail.js
- OneIssue.js
- reducer
- index.js
- issue.js
- routes
- routing.js
- store
- store.js
- style
- common.js
- global.js
- theme.js
Front end | Front end |
---|---|
μ€νλ¦° | κΉμμ¬ |
1. μ΄κΈ° μΈν
β λ νΌμ§ν 리 dev λΈλμΉ μμ±νμ¬ νλ‘μ νΈ νμΌ μμ±
a. husky, eslintrc, prettierrc, jsconfig
b. λ°μν UI μμ΄μ΄νλ μ μμ±
2. μν λΆλ΄
a. api κ°μ Έμ€κΈ° + rtk, axios - μμ¬
b. λ°μν UI - μμ¬
c. νμ΄μ§λ€μ΄μ
- νλ¦°
d. μμΈνμ΄μ§ μ μ, μ°κ²° - μμ¬
e. νν°λ§ (μ
λ°μ΄νΈμ, μ΅μ μ, λκΈμ / 10κ°μ©, 20κ°μ©, 50κ°μ©) - νλ¦°
f. λ§ν¬λ€μ΄ λ³ν - μμ¬
3. μ¬μ© λΌμ΄λΈλ¬λ¦¬
a. rtk, redux-logger
b. axios
c. react-router-dom
d. styled-components, styled-reset, react-icon,
e. husky, prettier, eslint
f. react-markdown, remark-gfm
- husky, eslintrc, prettierrc, jsconfig μ΄κΈ° μ ν
- κΈ°λ³Έ νμ΄μ§ ui μμ±
- api μμ β rtk μ¬μ©ν΄ μ μλ³μλ‘ κ΄λ¦¬
- λ°μν UI μμ
- λ‘λ© νμ΄μ§ https://loading.io/ μ€νΌλ gif μ¬μ©
- μμΈνμ΄μ§ UI λ° μ°κ²° μμ
- νμ΄μ§λ€μ΄μ μ§νμ€
- νμ΄μ§λ€μ΄μ ꡬν μλ£
- νν° κΈ°λ₯ ꡬν
npm install react-markdown
μΆκ°
- νν° κΈ°λ₯ 리ν©ν λ§
- UI μΆκ° 리ν©ν λ§ (label, comment)
- μ€νλ¦°νΈ μ 리, λ°°ν¬ μ€λΉ
- λ°°ν¬ μ΅μ’ μλ£(netlify, vercel)
β‘οΈ github open api
μ rtk
λ₯Ό νμ©νμ¬ μ΄μ νμ΄μ§(λͺ©λ‘, μμΈνμ΄μ§ ꡬν) λ°μ΄ν°λ₯Ό μ‘°ννμμ΅λλ€.
β‘οΈ νμ΄μ§λ€μ΄μ
μ 10κ° λ¨μλ‘ λ³΄μ¬μ§ μ μλλ‘ μμ
νμκ³ , νμ΄μ§ ν¬μ»€μ±μ΄ λλλ‘ μμ
νμμ΅λλ€. λ°μ΄ν°κ° 200κ°λ‘ μ νλμ΄ μμ΄ 200κ°μ λ°μ΄ν°λ§ νμ΄μ§λ‘ μ κ·Όν μ μμΌλ©°, λ°μ΄ν°κ° μλ νμ΄μ§λ§ 보μ΄λλ‘ μ μνμμ΅λλ€.
β‘οΈ νν° κΈ°λ₯
μ μ
λ°μ΄νΈμ/μμ±μ/λκΈμκ³Ό 10κ°/20κ°/50κ° μ© λ³Ό μ μκ² κ΅¬ννμμ΅λλ€. 쿼리μ€νΈλ§μ μ¬μ©νμ¬, ν΄λΉ urlμ νν° μ 보λ₯Ό μ μ₯νμμΌλ©° λΉμ°ν λ€λ‘κ°κΈ° κΈ°λ₯λ μ ꡬνλκ² νμμ΅λλ€.
β‘οΈ λ°μν(PC/Tablet/Mobile)
μΌλ‘ μμ
νμμ΅λλ€. νλ©΄ ν¬κΈ°κ° μ€μ΄λ 보λλ° λΆνΈν¨μ΄ μκ² uiλ₯Ό λ§λ€μμ΅λλ€.
β‘οΈ λ°μ΄ν°λ₯Ό λ°μμ¬ λ λ‘λ© νμ΄μ§
λ₯Ό λμμ£Όλ κΈ°λ₯μ ꡬννμμ΅λλ€. rtkλ‘ apiμ νμ¬ μνλ₯Ό λ°μμ loadingμΌλ loading νμ΄μ§λ₯Ό λμμ€λλ€.
βοΈμ½λ 컨벀μ
- λ¬Έμμ΄μ μ²λ¦¬ν λλ μλ°μ΄ν("") μ¬μ©
- λ¬Έμ₯μ΄ μ’
λ£λ λ μΈλ―Έμ½λ‘ (;)
- ν¨μλͺ
, λ³μλͺ
μ μΉ΄λ©μΌμ΄μ€λ‘ μμ±
- μ΄λ²€νΈ νΈλ€λ¬ ν¨μλ μ λμ΄ on-μ λΆμ¬ μΉ΄λ©μΌμ΄μ€λ‘ μμ±
- ν¨μ μ€νμΌμ νμ΄ν ν¨μλ‘ ν΅μΌ
- μ»΄ν¬λνΈμ ν΄λλͺ
μ μλ¬Έμλ‘ μμνλ μΉ΄λ©μΌμ΄μ€λ‘ μμ±
- μ»΄ν¬λνΈμ νμΌλͺ
μ λλ¬Έμλ‘ μμνλ μΉ΄λ©μΌμ΄μ€λ‘ μμ±
- μ»΄ν¬λνΈ μ΄μΈμ νμΌλͺ
μ μλ¬Έμλ‘ μμνλ μΉ΄λ©μΌμ΄μ€λ‘ μμ±
βοΈ μ»€λ° μ»¨λ²€μ
- feat: μλ‘μ΄ κΈ°λ₯μ λν 컀λ°
- fix: λ²κ·Έ μμ μ λν 컀λ°
- chore: κ·Έ μΈ μμν μμ μ λν 컀λ°
- docs: λ¬Έμ μμ μ λν 컀λ°
- style: μ½λ μ€νμΌ νΉμ ν¬λ§· λ±μ κ΄ν 컀λ°
- refactor: μ½λ 리ν©ν λ§μ λν 컀λ°