Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* B01 - Card, Answer, Category ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค (#20) * feat: Category ๊ฐ์ฒด ์ถ๊ฐ * feat: Card, Answer ๊ฐ์ฒด ์ถ๊ฐ * test: ๋ ํฌ์งํ ๋ฆฌ ํ ์คํธ ์ถ๊ฐ * feat: Category updateDescription ์ถ๊ฐ * test: CategoryRepositoryTest ์ถ๊ฐ * feat: Category ์ ์ฝ ์กฐ๊ฑด ๋ณ๊ฒฝ * test: AnswerRepositoryTest, CardRepositoryTest ์ถ๊ฐ Co-authored-by: seovalue <[email protected]> * B02 - ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api (#24) * feat: ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api ๊ตฌํ * feat: B02 - B ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api ๋ฆฌ๋ทฐ ๋ฐ์ * feat: Category isDeleted ํ๋ ์์ Co-authored-by: seunghyun <[email protected]> * B03 - ํด์ฆ ์์ฑ api (#25) * feat: data.sql ์์ฑ * feat&test: ํด์ฆ ์์ฑ ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * refactor: createQuiz ๋ฉ์๋ ๋ฆฌํฉํ ๋ง * test: QuizServiceTest ์ถ๊ฐ * etc: ์ฝ๋ ์ ๋ฆฌ * test: QuizServiceTest์ ๊ฒ์ฆ ๋ฉ์๋ ์ถ๊ฐ * etc: ๋ถํ์ํ ๋ฉ์๋ ์ญ์ * B02 - ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api (#24) * feat: ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api ๊ตฌํ * feat: B02 - B ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api ๋ฆฌ๋ทฐ ๋ฐ์ * feat: Category isDeleted ํ๋ ์์ Co-authored-by: seunghyun <[email protected]> * feat: data.sql ์์ฑ * feat&test: ํด์ฆ ์์ฑ ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * refactor: createQuiz ๋ฉ์๋ ๋ฆฌํฉํ ๋ง * test: QuizServiceTest ์ถ๊ฐ * etc: ์ฝ๋ ์ ๋ฆฌ * test: QuizServiceTest์ ๊ฒ์ฆ ๋ฉ์๋ ์ถ๊ฐ * etc: ๋ถํ์ํ ๋ฉ์๋ ์ญ์ * refactor: ๋ฆฌ๋ทฐ ๋ฐ์ Co-authored-by: Eugine Park <[email protected]> Co-authored-by: seunghyun <[email protected]> * etc: ๋ฐฐํฌ ํ ์คํธ * UI01 - ๋ฉ์ธํ์ด์ง UI ๊ตฌํ (#33) * feat: GlobalStyle ์ค์ * chore: file-loader ์ค์น * feat: Theme ์ถ๊ฐ * feat: Header ์ถ๊ฐ * etc: eslint - endOfLine์ auto๋ก ๋ณ๊ฒฝ * feat: QuizStarter ์ถ๊ฐ * feat: Category ์ถ๊ฐ * feat: Button ์ถ๊ฐ * refactor: Button ์์ ํ์ฅ์ฑ ๊ณ ๋ ค - circle, square - backgroundColor * etc: font awesome ์ค์น * feat: MainPage ๊ตฌํ ์๋ฃ Co-authored-by: Kyle <[email protected]> * UI02 - ํด์ฆ ์ค์ ํ์ด์ง UI ๊ตฌํ (#36) * feat: QuizSettingPage ์ถ๊ฐ * feat: router ์ถ๊ฐ @reach/router ์ญ์ ํ react-router-dom ๋์ * UI03 - ํด์ฆ ํ์ด์ง UI ๊ตฌํ (#40) * etc: emotion.d.ts ํ์ผ ๋ถ๋ฆฌ * feat: QnACard ์ถ๊ฐ * feat: Quiz ํ์ด์ง ๊ตฌํ ์๋ฃ * UI04 - ํด์ฆ ๊ฒฐ๊ณผ ํ์ด์ง UI ๊ตฌํ (#43) * refactor: QnACard ๊ตฌ์กฐ ๋ณ๊ฒฝ - QuizResult ๋ถ๋ฆฌ * refactor: Button ์คํ์ผ ๋ณ๊ฒฝ - 'reactangle' shape ์ถ๊ฐ - 'full' size height: 3rem ๋ณ๊ฒฝ * feat: QuizResultPage ๊ตฌํ ์๋ฃ * etc: netlify.toml ์ถ๊ฐ * Q12 - ํด์ฆ ํ์ด์ง์ ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํ๋ค. (#45) * refactor: pageSize ์ ์ญ ๊ด๋ฆฌ๋ก ๋ณ๊ฒฝ * feat: QuizPage pagenation ๊ตฌํ * feat: ์ฒซ ๋ฌธ์ ํ๋ฉด์ ์ ์ ์ ํ๋ ์๋ด ๋ฌธ๊ตฌ ์ฝ์ * feat: ํด์ฆ ๊ฒฐ๊ณผ ํ์ด์ง ๋ผ์ฐํ ๊ธฐ๋ฅ ๊ตฌํ * refactor: ๋์์ธ ๋ฆฌํฐ์น (#47) * B07 - ์ด๋๋ฏผ์ฉ ์นดํ ๊ณ ๋ฆฌ ์ถ๊ฐ, ์นด๋ ์ถ๊ฐ, ๋ต๋ณ ์ถ๊ฐ API๋ฅผ ๋ง๋ ๋ค. (#37) * feat: admin category ์ถ๊ฐ api ๊ตฌํ * feat: admin card, answer ์ถ๊ฐ api ๊ตฌํ * feat: admin category, card, answer request์ validation ์ถ๊ฐ * refactor: ๋ฆฌ๋ทฐ ๋ฐ์ * feat: ์นดํ ๊ณ ๋ฆฌ ์กฐํ ์ ์นด๋์ ๊ฐ์๋ฅผ ๋ฐํ (#49) * feat: ํด์ฆ ํ์ด์ง ์ฌ๋ผ์ด๋ ๊ตฌํ (#51) * feat: cors ์ค์ ์๋ฃ (#55) * B04 - ์นดํ ๊ณ ๋ฆฌ ์กฐํ api ๋ฌธ์ํ (#53) * etc: ๋ฌธ์ ์๋ํ ๊ด๋ จ ์์กด์ฑ ๋ฐ ์ค์ ๋ณ๊ฒฝ - Gradle ๋ฐ SpringBoot ๋ฒ์ ๋ค์ด ๊ทธ๋ ์ด๋ * test: ์คํจํ๋ ํ ์คํธ ์์ * test: ์นดํ ๊ณ ๋ฆฌ ์กฐํ ๋ฌธ์ํ ํ ์คํธ ์ถ๊ฐ * docs: ์นดํ ๊ณ ๋ฆฌ ์กฐํ api ๋ฌธ์ ์ถ๊ฐ * etc: ๋ฉ์๋ ์ด๋ฆ ์์ * M03 - ์๋น์ค์์ ์ ๊ณตํ๋ ์นดํ ๊ณ ๋ฆฌ ๋ณด์ฌ์ฃผ๊ธฐ (#56) * feat: recoil ๋์ * feat: quiz setting ๊ธฐ๋ฅ ์ถ๊ฐ - ์นดํ ๊ณ ๋ฆฌ ์ฒดํฌ - ํ์ผ ๊ฒฝ๋ก ์์ - types/api -> types - index.d.ts -> file.d.ts * feat: ๋น๋๊ธฐ ์์ฒญ ๋ ์ด์ด ์ถ๊ฐ * feat: ํด์ฆ ๊ฒฐ๊ณผ ํ์ด์ง์ ์ฒดํฌ ๊ธฐ๋ฅ ๊ตฌํ - ํด์ฆ ํ์ด์ง/ ํด์ฆ ๊ฒฐ๊ณผ ํ์ด์ง recoil ๋์ - React.HTMLAttributes ์ ๊ฑฐ ํ onClick ๋ณ๊ฒฝ * feat: ๋น๋๊ธฐ ๋ ์ด์ด ์ถ๊ฐ - recoil ์ํ ์์ - ํด์ฆ ์ค์ ๊ธฐ๋ฅ ์ถ๊ฐ * etc: ํ์ ์ ๋ฆฌ * etc: file-loader ์ ๊ฑฐ - webpack ๋ฒ์ ์ ๋ง์ถฐ asset ์ฌ์ฉ Co-authored-by: dudtjr913 <[email protected]> * B10 - List<Answer>, List<Card> ์ผ๊ธ์ปฌ๋ ์ ์์ ๋ฐ QuizAcceptanceTest๋ฅผ ๋ฆฌํฉํฐ๋ง ํ๊ณ ๋ก๊น ์ ์ถ๊ฐํ๋ค. (#54) * feat: ๋ก๊น ์ถ๊ฐ ๋ฐ ์๋ฐฉํฅ ๋งคํ ํธ์ ๋ฉ์๋ ์ถ๊ฐ * feat: ๋๋ฉ์ธ์ ์ ํจ์ฑ ๊ฒ์ฌ ์ถ๊ฐ * refactor: QuizAcceptanceTest, CategoryAcceptanceTest ๋ฆฌํฉํ ๋ง * refactor: ํจํค์ง ๊ตฌ์กฐ ์์ * etc: rebase * etc: rebase * etc: clear git cache * refactor: version ์ด์ ๋ฐ์ * etc: ์ฝ๋ ์ ๋ฆฌ * B05 - ํด์ฆ ์์ฑ api ๋ฌธ์ํ (#60) * etc: ๋ฌธ์ ์๋ํ ๊ด๋ จ ์์กด์ฑ ๋ฐ ์ค์ ๋ณ๊ฒฝ - Gradle ๋ฐ SpringBoot ๋ฒ์ ๋ค์ด ๊ทธ๋ ์ด๋ * test: ์คํจํ๋ ํ ์คํธ ์์ * test: ์นดํ ๊ณ ๋ฆฌ ์กฐํ ๋ฌธ์ํ ํ ์คํธ ์ถ๊ฐ * docs: ์นดํ ๊ณ ๋ฆฌ ์กฐํ api ๋ฌธ์ ์ถ๊ฐ * test: ํด์ฆ ์์ฑ ๋ฌธ์ํ ํ ์คํธ ์ถ๊ฐ * docs: ํด์ฆ ์์ฑ api ๋ฌธ์ ์ถ๊ฐ * etc: ๋ฐฐํฌํ๊ฒฝ์์ ๋ฌธ์ํ๋ฅผ ์ํ ์ค์ ์ถ๊ฐ * etc: ๋ถํ์ํ ํ์ผ ์ญ์ * etc: log.log ํ์ผ ์ญ์ Co-authored-by: seunghyun <[email protected]> * feat: BaseEntity ์ถ๊ฐ (#63) * B13 - admin์ฉ api ๋ฌธ์ํ (#62) * etc: ๋ฌธ์ ์๋ํ ๊ด๋ จ ์์กด์ฑ ๋ฐ ์ค์ ๋ณ๊ฒฝ - Gradle ๋ฐ SpringBoot ๋ฒ์ ๋ค์ด ๊ทธ๋ ์ด๋ * test: ์คํจํ๋ ํ ์คํธ ์์ * test: ์นดํ ๊ณ ๋ฆฌ ์กฐํ ๋ฌธ์ํ ํ ์คํธ ์ถ๊ฐ * docs: ์นดํ ๊ณ ๋ฆฌ ์กฐํ api ๋ฌธ์ ์ถ๊ฐ * test: ํด์ฆ ์์ฑ ๋ฌธ์ํ ํ ์คํธ ์ถ๊ฐ * docs: ํด์ฆ ์์ฑ api ๋ฌธ์ ์ถ๊ฐ * etc: ๋ฐฐํฌํ๊ฒฝ์์ ๋ฌธ์ํ๋ฅผ ์ํ ์ค์ ์ถ๊ฐ * etc: ๋ถํ์ํ ํ์ผ ์ญ์ * etc: log.log ํ์ผ ์ญ์ * refactor: ๊ธฐ์กด ๋ฌธ์ ์ฝ๋ ๊ฐ์ * feat: admin ๊ด๋ จ api ๋ฌธ์ํ Co-authored-by: seunghyun <[email protected]> * fix: Admin ๋ฌธ์ ํ ์คํธ jpa ์ค์ ์ถ๊ฐ * etc: admin ๋ฌธ์ ํ ์คํธ import๋ฌธ ์ถ๊ฐ * fix: local์์ ddl-auto ์๋ ๋ฐฉ์ ๋ณ๊ฒฝ * UI07 - ๋ชจ์๋ณด๊ธฐ ํ์ด์ง๋ฅผ ๊ตฌํํ๋ค. (#66) * etc: copy-webpack-plugin ์ค์น Co-authored-by: dudtjr913 <[email protected]> * etc: png -> svg ๊ต์ฒด * etc: font-awesome ์ญ์ * feat: ๋ชจ์๋ณด๊ธฐ ํ์ด์ง ์ถ๊ฐ - 1 - ํํฐ - ๊ฒ์์ฐฝ - ๋ฒํผ shape ์ถ๊ฐ (round) Co-authored-by: dudtjr913 <[email protected]> * feat: QnACard ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * feat: ์นด๋ ํ์ด์ง ํํฐ ๊ธฐ๋ฅ ์ถ๊ฐ (#69) Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * refactor: ๊ฒ์ UI => ๊ฒ์ ํ์ด์ง๋ก ์ด๋ (#71) * feat: ๋ชจ์๋ณด๊ธฐ ํ์ด์ง๋ก ์ด๋ ๊ธฐ๋ฅ ๊ตฌํ (#72) Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * B18 - ๋ชจ์๋ณด๊ธฐ API๋ฅผ ๊ตฌํํ๋ค (#77) * feat: Category ๋ถ๋ฌ์ฌ ๋ Card fetch join ํ๋๋ก ๋ณ๊ฒฝ * feat: Category์ ์นด๋ ๋ชจ์๋ณด๊ธฐ ๊ธฐ๋ฅ ์ถ๊ฐ * feat: ๋ชจ์๋ณด๊ธฐ api ๋ฌธ์ํ * etc: ์ฝ๋ ์ค ๊ฐ๊ฒฉ ์์ * refactor: ์๋ต ๊ด๋ จ dto ๋กฌ๋ณต ์ฒ๋ฆฌ * U01B - ์์ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ค (#76) * etc: jwt ๊ด๋ จ ์์กด์ฑ ์ถ๊ฐ * feat: ์ธ์ฆ์ ์คํจํ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ์์ธ ์ถ๊ฐ * feat: ๋ก๊ทธ์ธ์ ํ์ํ ๊ฐ์ฒด ์ถ๊ฐ * feat: ํ ํฐ ๊ด๋ จ ํด๋์ค ์ถ๊ฐ * feat: github Oauth ๊ด๋ จ ํด๋์ค ์ถ๊ฐ * refactor: final ์ ๊ฑฐ * feat: Github ๋ก๊ทธ์ธ ์์ฒญ์ ํ ํฐ์์ฑ API ๊ตฌํ * etc: ํ ์คํธ์์ ์ฐ์ด๋ ์ค์ ๊ฐ ์ถ๊ฐ * etc: ์ค๋ฐ๊ฟ ์ถ๊ฐ * refactor: ๋ฉ์๋์ด๋ฆ ์์ * refactor: lombok์ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ์์ฑ์, builder ์์ฑํ๋๋ก ์์ * etc: ์ ์ฒด์ ์ธ ๋์์ธ ๋ฆฌํฐ์น(svgr ๋์ )(#79) * etc: svgr ์ค์น Co-authored-by: Kyle <[email protected]> * etc: svg image => svg ์ปดํฌ๋ํธ๋ก ๋ณ๊ฒฝ - ๋ฒํผ ์ปดํฌ๋ํธ height 3rem => 2.5rem ๋ณ๊ฒฝ - indigo => blue ๋ณ๊ฒฝ Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * fix: ๋ชจ์๋ณด๊ธฐ ํ์ด์ง์ ์นด๋๋ฅผ ๋ณด์ฌ์ค๋ค. (#84) Co-authored-by: dudtjr913 <[email protected]> * fix: ์ฆ๊ฒจ์ฐพ๊ธฐ ์ค๋ฅ ์์ (#87) Co-authored-by: dudtjr913 <[email protected]> * feat: User ์ํฐํฐ ์ถ๊ฐ ๋ฐ ์์ ๋ก๊ทธ์ธ ๊ตฌํ (#83) * feat: timezone ์ต์ ์ถ๊ฐ (#85) * B15 - admin API๋ฅผ ์ ์ฉํ์ฌ CategoryAcceptanceTest์์ cardCount ํ ์คํธ ์ถ๊ฐ (#88) * test: cardCount ํ ์คํธ ์ถ๊ฐ * etc: optimize imports * etc: dev ์๋ธ๋ชจ๋ ์ถ๊ฐ (#93) Co-authored-by: seunghyun <[email protected]> * B20 - git ์๋ธ๋ชจ๋์ ์ด์ฉํ์ฌ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค (#94) * etc: dev ์๋ธ๋ชจ๋ ์ถ๊ฐ * etc: ํ ์คํธ๋ฅผ์ํด ์๋์ ์ผ๋ก ์๋ชป๋ ์ค์ ์ถ๊ฐ * B20 - git ์๋ธ๋ชจ๋์ ์ด์ฉํ์ฌ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค (#95) * etc: dev ์๋ธ๋ชจ๋ ์ถ๊ฐ * etc: ํ ์คํธ๋ฅผ์ํด ์๋์ ์ผ๋ก ์๋ชป๋ ์ค์ ์ถ๊ฐ * etc: dev์ค์ ํ์ผ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ณ๊ฒฝ * B21,B22 - ํด์ฆ ์์ฑ ์ ์นดํ ๊ณ ๋ฆฌ์ ์นด๋๊ฐ ์กด์ฌํ์ง ์์ ๋, CategoryNotFoundException์ด ํฐ์ง๋ ๋ฒ๊ทธ ์์ (#91) * fix: fetch join ๋์ findById๋ฅผ ์ฌ์ฉํ๋๋ก ์์ * etc: optimize imports * etc: ํ์์๋ ํ ์คํธ์ฝ๋ ์ญ์ * B24 - DTO ๊ฒ์ฆ์ ์ดํด๋ณธ๋ค (#106) * feat: ์์ฒญ ์ ๋ณด ๊ฒ์ฆ ๋ฒ์ ํ๋ * test: B24 ์ด์ ํ ์คํธ ์ผ์ด์ค ์ถ๊ฐ * B23 - ๋ฐ์ดํฐ๋ก๋๋ฅผ ๋ง๋ ๋ค. (#108) * feat: Dummy Data ์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ * etc: ์๋ธ๋ชจ๋ ๋๊ธฐํ * etc: Dummy Data ํ์ผ ๊ฒฝ๋ก ๋ณ๊ฒฝ * refactor: DataLoader ๋ด for๋ฌธ์ while๋ฌธ์ผ๋ก ์์ * U01 - ์์ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ค (#109) * feat: Button ์์ฑ ์ถ๊ฐ - hover - color Co-authored-by: dudtjr913 <[email protected]> * etx: css ๋ ๊ฑฐ์ ์ ๋ฆฌ * refactor: Header ๋ถ๋ฆฌ Co-authored-by: dudtjr913 <[email protected]> * refactor: ๋งค๊ฐ๋ณ์ ๋ฐ๋ ๋ฐฉ๋ฒ ๋ณ๊ฒฝ - ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋จ์์ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ฒด๋ก ๋ฐ์ง ์๋๋ก ๋ณ๊ฒฝ Co-authored-by: dudtjr913 <[email protected]> * feat: ์์ ๋ก๊ทธ์ธ ๊ตฌํ - 1 - ๋ก๊ทธ์ธ ํ์ด์ง - Oauth Co-authored-by: dudtjr913 <[email protected]> * feat: sessionStorage ์ ํธ ํจ์ ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * fix: publicPath ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * feat: ์์ ๋ก๊ทธ์ธ ๊ตฌํ ์๋ฃ - GithubCallbackPage ์ถ๊ฐ - Cards ํ์ด์ง์์ ๋ก๊ทธ์ธ ์ ๋ฉ์ธ์ผ๋ก ๋์๊ฐ๋๋ก ์ค์ Co-authored-by: Kyle <[email protected]> * etc: dotenv ์ ์ฉ Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: Kyle <[email protected]> * etc: env ํด๋ ์ด๋ * etc: ์๋ธ๋ชจ๋ ์์น ๋ณ๊ฒฝ (#114) * ์๋ธ๋ชจ๋ ์ค์ ๋ณ๊ฒฝ * etc: ์๋ธ๋ชจ๋ url ๋ณ๊ฒฝ * etc: package.json ์คํฌ๋ฆฝํธ ์์ * etc: ์๋ธ๋ชจ๋ ์ ๋ณด ์ถ๊ฐ * fix: ๋ฌธ์ ๊ฐ 0๊ฐ์ผ ๋, ํด์ฆ ์ค์ ์์ ๋ณด์ด์ง ์๋๋ก ์์ (#115) * etc: ๋ฒํผ, ์นดํ ๊ณ ๋ฆฌ ์คํ์ผ ์์ - ๋ฒํผ rectangle height 3.5rem์ผ๋ก ์์ - ์นดํ ๊ณ ๋ฆฌ ํฐํธ์ฌ์ด์ฆ ์์ Co-authored-by: Kyle <[email protected]> * etc: console.log ์ญ์ Co-authored-by: Kyle <[email protected]> * fix: ๋ฌธ์ ๊ฐ 0๊ฐ์ผ ๋, ํด์ฆ ์ค์ ์์ ๋ณด์ด์ง ์๋๋ก ์์ Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * F01 - aws s3๋ก ์ ์ ํ์ผ ๋ถ๋ฌ์ค๊ธฐ (#117) * etc: ์ด๋ฏธ์ง ์์ค ์ต์ ํ - cloud front ๋ฐฐํฌ - s3 ๋ฒํท ์์ฑ Co-authored-by: dudtjr913 <[email protected]> * etc: ๋ก๊ทธ์ธ logo ์ด๋ฏธ์ง height ๊ณ ์ Co-authored-by: dudtjr913 <[email protected]> * B25 - ๋ฌธ์ํ ์์ ๋ฐ์ ๋ฐ B23 ์ฝ๋ ๊ฐ๋จ ์์ (#111) * refactor: DataLoader ์ฝ๋ ๋ฆฌํฉํ ๋ง * etc: ์ฝ๋ ํฌ๋งท * etc: ํ์ด์ง ํค๋ ์ ๋ฆฌ (#134) Co-authored-by: dudtjr913 <[email protected]> * F03 - ์ค์ผ๋ ํค UI๋ฅผ ๊ตฌํํ๋ค (#140) * feat: ์ค์ผ๋ ํค UI ์ถ๊ฐ - CardSkeleton ์ถ๊ฐ - HeaderSkeleton ์ถ๊ฐ - skeleton style ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * etc: ์นดํ ๊ณ ๋ฆฌ ์ปดํฌ๋ํธ ์คํ์ผ ๋ณ๊ฒฝ - ๋ฉ์ธ ํ์ด์ง ํ์ดํ ์ ์ฒด ์นดํ ๊ณ ๋ฆฌ -> ํ์ต ์ค์ผ๋ก ๋ณ๊ฒฝ Co-authored-by: Kyle <[email protected]> * feat: CardsLoadable ์ถ๊ฐ Co-authored-by: dudtjr913 <[email protected]> * etc: QuizPage fallback ์ปดํฌ๋ํธ ์ญ์ Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * etc: ์๋ฒ url ํ๊ฒฝ๋ณ์๋ก ์ ์ฉ (#142) Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * etc: build.gradle ์์ * fix: ๋ก๊ทธ์ธ ์ ๋ฐ์ํ๋ ์๋ฌ ํด๊ฒฐ (#144) - PrivateRoute์ children์ด ๊ฐ์ฒด๋ก ๊ฐ์ธ์ ธ ์์ด์ ์๊ธด ์๋ฌ ํด๊ฒฐ Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * etc: build.gradle ์ค์ ๋ณ๊ฒฝ * 1์ฐจ release (#147) (#148) * B01 - Card, Answer, Category ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค (#20) * feat: Category ๊ฐ์ฒด ์ถ๊ฐ * feat: Card, Answer ๊ฐ์ฒด ์ถ๊ฐ * test: ๋ ํฌ์งํ ๋ฆฌ ํ ์คํธ ์ถ๊ฐ * feat: Category updateDescription ์ถ๊ฐ * test: CategoryRepositoryTest ์ถ๊ฐ * feat: Category ์ ์ฝ ์กฐ๊ฑด ๋ณ๊ฒฝ * test: AnswerRepositoryTest, CardRepositoryTest ์ถ๊ฐ Co-authored-by: seovalue <[email protected]> * B02 - ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api (#24) * feat: ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api ๊ตฌํ * feat: B02 - B ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api ๋ฆฌ๋ทฐ ๋ฐ์ * feat: Category isDeleted ํ๋ ์์ Co-authored-by: seunghyun <[email protected]> * B03 - ํด์ฆ ์์ฑ api (#25) * feat: data.sql ์์ฑ * feat&test: ํด์ฆ ์์ฑ ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * refactor: createQuiz ๋ฉ์๋ ๋ฆฌํฉํ ๋ง * test: QuizServiceTest ์ถ๊ฐ * etc: ์ฝ๋ ์ ๋ฆฌ * test: QuizServiceTest์ ๊ฒ์ฆ ๋ฉ์๋ ์ถ๊ฐ * etc: ๋ถํ์ํ ๋ฉ์๋ ์ญ์ * B02 - ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api (#24) * feat: ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api ๊ตฌํ * feat: B02 - B ์นดํ ๊ณ ๋ฆฌ ๋ณด๊ธฐ api ๋ฆฌ๋ทฐ ๋ฐ์ * feat: Category isDeleted ํ๋ ์์ Co-authored-by: seunghyun <[email protected]> * feat: data.sql ์์ฑ * feat&test: ํด์ฆ ์์ฑ ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * refactor: createQuiz ๋ฉ์๋ ๋ฆฌํฉํ ๋ง * test: QuizServiceTest ์ถ๊ฐ * etc: ์ฝ๋ ์ ๋ฆฌ * test: QuizServiceTest์ ๊ฒ์ฆ ๋ฉ์๋ ์ถ๊ฐ * etc: ๋ถํ์ํ ๋ฉ์๋ ์ญ์ * refactor: ๋ฆฌ๋ทฐ ๋ฐ์ Co-authored-by: Eugine Park <[email protected]> Co-authored-by: seunghyun <[email protected]> * etc: ๋ฐฐํฌ ํ ์คํธ * UI01 - ๋ฉ์ธํ์ด์ง UI ๊ตฌํ (#33) * feat: GlobalStyle ์ค์ * chore: file-loader ์ค์น * feat: Theme ์ถ๊ฐ * feat: Header ์ถ๊ฐ * etc: eslint - endOfLine์ auto๋ก ๋ณ๊ฒฝ * feat: QuizStarter ์ถ๊ฐ * feat: Category ์ถ๊ฐ * feat: Button ์ถ๊ฐ * refactor: Button ์์ ํ์ฅ์ฑ ๊ณ ๋ ค - circle, square - backgroundColor * etc: font awesome ์ค์น * feat: MainPage ๊ตฌํ ์๋ฃ Co-authored-by: Kyle <[email protected]> * UI02 - ํด์ฆ ์ค์ ํ์ด์ง UI ๊ตฌํ (#36) * feat: QuizSettingPage ์ถ๊ฐ * feat: router ์ถ๊ฐ @reach/router ์ญ์ ํ react-router-dom ๋์ * UI03 - ํด์ฆ ํ์ด์ง UI ๊ตฌํ (#40) * etc: emotion.d.ts ํ์ผ ๋ถ๋ฆฌ * feat: QnACard ์ถ๊ฐ * feat: Quiz ํ์ด์ง ๊ตฌํ ์๋ฃ * UI04 - ํด์ฆ ๊ฒฐ๊ณผ ํ์ด์ง UI ๊ตฌํ (#43) * refactor: QnACard ๊ตฌ์กฐ ๋ณ๊ฒฝ - QuizResult ๋ถ๋ฆฌ * refactor: Button ์คํ์ผ ๋ณ๊ฒฝ - 'reactangle' shape ์ถ๊ฐ - 'full' size height: 3rem ๋ณ๊ฒฝ * feat: QuizResultPage ๊ตฌํ ์๋ฃ * etc: netlify.toml ์ถ๊ฐ * Q12 - ํด์ฆ ํ์ด์ง์ ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํ๋ค. (#45) * refactor: pageSize ์ ์ญ ๊ด๋ฆฌ๋ก ๋ณ๊ฒฝ * feat: QuizPage pagenation ๊ตฌํ * feat: ์ฒซ ๋ฌธ์ ํ๋ฉด์ ์ ์ ์ ํ๋ ์๋ด ๋ฌธ๊ตฌ ์ฝ์ * feat: ํด์ฆ ๊ฒฐ๊ณผ ํ์ด์ง ๋ผ์ฐํ ๊ธฐ๋ฅ ๊ตฌํ * refactor: ๋์์ธ ๋ฆฌํฐ์น (#47) * B07 - ์ด๋๋ฏผ์ฉ ์นดํ ๊ณ ๋ฆฌ ์ถ๊ฐ, ์นด๋ ์ถ๊ฐ, ๋ต๋ณ ์ถ๊ฐ API๋ฅผ ๋ง๋ ๋ค. (#37) * feat: admin category ์ถ๊ฐ api ๊ตฌํ * feat: admin card, answer ์ถ๊ฐ api ๊ตฌํ * feat: admin category, card, answer request์ validation ์ถ๊ฐ * refactor: ๋ฆฌ๋ทฐ ๋ฐ์ * feat: ์นดํ ๊ณ ๋ฆฌ ์กฐํ ์ ์นด๋์ ๊ฐ์๋ฅผ ๋ฐํ (#49) * feat: ํด์ฆ ํ์ด์ง ์ฌ๋ผ์ด๋ ๊ตฌํ (#51) * feat: cors ์ค์ ์๋ฃ (#55) * B04 - ์นดํ ๊ณ ๋ฆฌ ์กฐํ api ๋ฌธ์ํ (#53) * etc: ๋ฌธ์ ์๋ํ ๊ด๋ จ ์์กด์ฑ ๋ฐ ์ค์ ๋ณ๊ฒฝ - Gradle ๋ฐ SpringBoot ๋ฒ์ ๋ค์ด ๊ทธ๋ ์ด๋ * test: ์คํจํ๋ ํ ์คํธ ์์ * test: ์นดํ ๊ณ ๋ฆฌ ์กฐํ ๋ฌธ์ํ ํ ์คํธ ์ถ๊ฐ * docs: ์นดํ ๊ณ ๋ฆฌ ์กฐํ api ๋ฌธ์ ์ถ๊ฐ * etc: ๋ฉ์๋ ์ด๋ฆ ์์ * M03 - ์๋น์ค์์ ์ ๊ณตํ๋ ์นดํ ๊ณ ๋ฆฌ ๋ณด์ฌ์ฃผ๊ธฐ (#56) * feat: recoil ๋์ * feat: quiz setting ๊ธฐ๋ฅ ์ถ๊ฐ - ์นดํ ๊ณ ๋ฆฌ ์ฒดํฌ - ํ์ผ ๊ฒฝ๋ก ์์ - types/api -> types - index.d.ts -> file.d.ts * feat: ๋น๋๊ธฐ ์์ฒญ ๋ ์ด์ด ์ถ๊ฐ * feat: ํด์ฆ ๊ฒฐ๊ณผ ํ์ด์ง์ ์ฒดํฌ ๊ธฐ๋ฅ ๊ตฌํ - ํด์ฆ ํ์ด์ง/ ํด์ฆ ๊ฒฐ๊ณผ ํ์ด์ง recoil ๋์ - React.HTMLAttributes ์ ๊ฑฐ ํ onClick ๋ณ๊ฒฝ * feat: ๋น๋๊ธฐ ๋ ์ด์ด ์ถ๊ฐ - recoil ์ํ ์์ - ํด์ฆ ์ค์ ๊ธฐ๋ฅ ์ถ๊ฐ * etc: ํ์ ์ ๋ฆฌ * etc: file-loader ์ ๊ฑฐ - webpack ๋ฒ์ ์ ๋ง์ถฐ asset ์ฌ์ฉ Co-authored-by: dudtjr913 <[email protected]> * B10 - List<Answer>, List<Card> ์ผ๊ธ์ปฌ๋ ์ ์์ ๋ฐ QuizAcceptanceTest๋ฅผ ๋ฆฌํฉํฐ๋ง ํ๊ณ ๋ก๊น ์ ์ถ๊ฐํ๋ค. (#54) * feat: ๋ก๊น ์ถ๊ฐ ๋ฐ ์๋ฐฉํฅ ๋งคํ ํธ์ ๋ฉ์๋ ์ถ๊ฐ * feat: ๋๋ฉ์ธ์ ์ ํจ์ฑ ๊ฒ์ฌ ์ถ๊ฐ * refactor: QuizAcceptanceTest, CategoryAcceptanceTest ๋ฆฌํฉํ ๋ง * refactor: ํจํค์ง ๊ตฌ์กฐ ์์ * etc: rebase * etc: rebase * etc: clear git cache * refactor: version ์ด์ ๋ฐ์ * etc: ์ฝ๋ ์ ๋ฆฌ * B05 - ํด์ฆ ์์ฑ api ๋ฌธ์ํ (#60) * etc: ๋ฌธ์ ์๋ํ ๊ด๋ จ ์์กด์ฑ ๋ฐ ์ค์ ๋ณ๊ฒฝ - Gradle ๋ฐ SpringBoot ๋ฒ์ ๋ค์ด ๊ทธ๋ ์ด๋ * test: ์คํจํ๋ ํ ์คํธ ์์ * test: ์นดํ ๊ณ ๋ฆฌ ์กฐํ ๋ฌธ์ํ ํ ์คํธ ์ถ๊ฐ * docs: ์นดํ ๊ณ ๋ฆฌ ์กฐํ api ๋ฌธ์ ์ถ๊ฐ * test: ํด์ฆ ์์ฑ ๋ฌธ์ํ ํ ์คํธ ์ถ๊ฐ * docs: ํด์ฆ ์์ฑ api ๋ฌธ์ ์ถ๊ฐ * etc: ๋ฐฐํฌํ๊ฒฝ์์ ๋ฌธ์ํ๋ฅผ ์ํ ์ค์ ์ถ๊ฐ * etc: ๋ถํ์ํ ํ์ผ ์ญ์ * etc: log.log ํ์ผ ์ญ์ Co-authored-by: seunghyun <[email protected]> * feat: BaseEntity ์ถ๊ฐ (#63) * B13 - admin์ฉ api ๋ฌธ์ํ (#62) * etc: ๋ฌธ์ ์๋ํ ๊ด๋ จ ์์กด์ฑ ๋ฐ ์ค์ ๋ณ๊ฒฝ - Gradle ๋ฐ SpringBoot ๋ฒ์ ๋ค์ด ๊ทธ๋ ์ด๋ * test: ์คํจํ๋ ํ ์คํธ ์์ * test: ์นดํ ๊ณ ๋ฆฌ ์กฐํ ๋ฌธ์ํ ํ ์คํธ ์ถ๊ฐ * docs: ์นดํ ๊ณ ๋ฆฌ ์กฐํ api ๋ฌธ์ ์ถ๊ฐ * test: ํด์ฆ ์์ฑ ๋ฌธ์ํ ํ ์คํธ ์ถ๊ฐ * docs: ํด์ฆ ์์ฑ api ๋ฌธ์ ์ถ๊ฐ * etc: ๋ฐฐํฌํ๊ฒฝ์์ ๋ฌธ์ํ๋ฅผ ์ํ ์ค์ ์ถ๊ฐ * etc: ๋ถํ์ํ ํ์ผ ์ญ์ * etc: log.log ํ์ผ ์ญ์ * refactor: ๊ธฐ์กด ๋ฌธ์ ์ฝ๋ ๊ฐ์ * feat: admin ๊ด๋ จ api ๋ฌธ์ํ Co-authored-by: seunghyun <[email protected]> * fix: Admin ๋ฌธ์ ํ ์คํธ jpa ์ค์ ์ถ๊ฐ * etc: admin ๋ฌธ์ ํ ์คํธ import๋ฌธ ์ถ๊ฐ * fix: local์์ ddl-auto ์๋ ๋ฐฉ์ ๋ณ๊ฒฝ * UI07 - ๋ชจ์๋ณด๊ธฐ ํ์ด์ง๋ฅผ ๊ตฌํํ๋ค. (#66) * etc: copy-webpack-plugin ์ค์น Co-authored-by: dudtjr913 <[email protected]> * etc: png -> svg ๊ต์ฒด * etc: font-awesome ์ญ์ * feat: ๋ชจ์๋ณด๊ธฐ ํ์ด์ง ์ถ๊ฐ - 1 - ํํฐ - ๊ฒ์์ฐฝ - ๋ฒํผ shape ์ถ๊ฐ (round) Co-authored-by: dudtjr913 <[email protected]> * feat: QnACard ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * feat: ์นด๋ ํ์ด์ง ํํฐ ๊ธฐ๋ฅ ์ถ๊ฐ (#69) Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * refactor: ๊ฒ์ UI => ๊ฒ์ ํ์ด์ง๋ก ์ด๋ (#71) * feat: ๋ชจ์๋ณด๊ธฐ ํ์ด์ง๋ก ์ด๋ ๊ธฐ๋ฅ ๊ตฌํ (#72) Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * B18 - ๋ชจ์๋ณด๊ธฐ API๋ฅผ ๊ตฌํํ๋ค (#77) * feat: Category ๋ถ๋ฌ์ฌ ๋ Card fetch join ํ๋๋ก ๋ณ๊ฒฝ * feat: Category์ ์นด๋ ๋ชจ์๋ณด๊ธฐ ๊ธฐ๋ฅ ์ถ๊ฐ * feat: ๋ชจ์๋ณด๊ธฐ api ๋ฌธ์ํ * etc: ์ฝ๋ ์ค ๊ฐ๊ฒฉ ์์ * refactor: ์๋ต ๊ด๋ จ dto ๋กฌ๋ณต ์ฒ๋ฆฌ * U01B - ์์ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ค (#76) * etc: jwt ๊ด๋ จ ์์กด์ฑ ์ถ๊ฐ * feat: ์ธ์ฆ์ ์คํจํ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ์์ธ ์ถ๊ฐ * feat: ๋ก๊ทธ์ธ์ ํ์ํ ๊ฐ์ฒด ์ถ๊ฐ * feat: ํ ํฐ ๊ด๋ จ ํด๋์ค ์ถ๊ฐ * feat: github Oauth ๊ด๋ จ ํด๋์ค ์ถ๊ฐ * refactor: final ์ ๊ฑฐ * feat: Github ๋ก๊ทธ์ธ ์์ฒญ์ ํ ํฐ์์ฑ API ๊ตฌํ * etc: ํ ์คํธ์์ ์ฐ์ด๋ ์ค์ ๊ฐ ์ถ๊ฐ * etc: ์ค๋ฐ๊ฟ ์ถ๊ฐ * refactor: ๋ฉ์๋์ด๋ฆ ์์ * refactor: lombok์ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ์์ฑ์, builder ์์ฑํ๋๋ก ์์ * etc: ์ ์ฒด์ ์ธ ๋์์ธ ๋ฆฌํฐ์น(svgr ๋์ )(#79) * etc: svgr ์ค์น Co-authored-by: Kyle <[email protected]> * etc: svg image => svg ์ปดํฌ๋ํธ๋ก ๋ณ๊ฒฝ - ๋ฒํผ ์ปดํฌ๋ํธ height 3rem => 2.5rem ๋ณ๊ฒฝ - indigo => blue ๋ณ๊ฒฝ Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * fix: ๋ชจ์๋ณด๊ธฐ ํ์ด์ง์ ์นด๋๋ฅผ ๋ณด์ฌ์ค๋ค. (#84) Co-authored-by: dudtjr913 <[email protected]> * fix: ์ฆ๊ฒจ์ฐพ๊ธฐ ์ค๋ฅ ์์ (#87) Co-authored-by: dudtjr913 <[email protected]> * feat: User ์ํฐํฐ ์ถ๊ฐ ๋ฐ ์์ ๋ก๊ทธ์ธ ๊ตฌํ (#83) * feat: timezone ์ต์ ์ถ๊ฐ (#85) * B15 - admin API๋ฅผ ์ ์ฉํ์ฌ CategoryAcceptanceTest์์ cardCount ํ ์คํธ ์ถ๊ฐ (#88) * test: cardCount ํ ์คํธ ์ถ๊ฐ * etc: optimize imports * etc: dev ์๋ธ๋ชจ๋ ์ถ๊ฐ (#93) Co-authored-by: seunghyun <[email protected]> * B20 - git ์๋ธ๋ชจ๋์ ์ด์ฉํ์ฌ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค (#94) * etc: dev ์๋ธ๋ชจ๋ ์ถ๊ฐ * etc: ํ ์คํธ๋ฅผ์ํด ์๋์ ์ผ๋ก ์๋ชป๋ ์ค์ ์ถ๊ฐ * B20 - git ์๋ธ๋ชจ๋์ ์ด์ฉํ์ฌ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค (#95) * etc: dev ์๋ธ๋ชจ๋ ์ถ๊ฐ * etc: ํ ์คํธ๋ฅผ์ํด ์๋์ ์ผ๋ก ์๋ชป๋ ์ค์ ์ถ๊ฐ * etc: dev์ค์ ํ์ผ์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ณ๊ฒฝ * B21,B22 - ํด์ฆ ์์ฑ ์ ์นดํ ๊ณ ๋ฆฌ์ ์นด๋๊ฐ ์กด์ฌํ์ง ์์ ๋, CategoryNotFoundException์ด ํฐ์ง๋ ๋ฒ๊ทธ ์์ (#91) * fix: fetch join ๋์ findById๋ฅผ ์ฌ์ฉํ๋๋ก ์์ * etc: optimize imports * etc: ํ์์๋ ํ ์คํธ์ฝ๋ ์ญ์ * B24 - DTO ๊ฒ์ฆ์ ์ดํด๋ณธ๋ค (#106) * feat: ์์ฒญ ์ ๋ณด ๊ฒ์ฆ ๋ฒ์ ํ๋ * test: B24 ์ด์ ํ ์คํธ ์ผ์ด์ค ์ถ๊ฐ * B23 - ๋ฐ์ดํฐ๋ก๋๋ฅผ ๋ง๋ ๋ค. (#108) * feat: Dummy Data ์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ * etc: ์๋ธ๋ชจ๋ ๋๊ธฐํ * etc: Dummy Data ํ์ผ ๊ฒฝ๋ก ๋ณ๊ฒฝ * refactor: DataLoader ๋ด for๋ฌธ์ while๋ฌธ์ผ๋ก ์์ * U01 - ์์ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ค (#109) * feat: Button ์์ฑ ์ถ๊ฐ - hover - color Co-authored-by: dudtjr913 <[email protected]> * etx: css ๋ ๊ฑฐ์ ์ ๋ฆฌ * refactor: Header ๋ถ๋ฆฌ Co-authored-by: dudtjr913 <[email protected]> * refactor: ๋งค๊ฐ๋ณ์ ๋ฐ๋ ๋ฐฉ๋ฒ ๋ณ๊ฒฝ - ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋จ์์ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ฒด๋ก ๋ฐ์ง ์๋๋ก ๋ณ๊ฒฝ Co-authored-by: dudtjr913 <[email protected]> * feat: ์์ ๋ก๊ทธ์ธ ๊ตฌํ - 1 - ๋ก๊ทธ์ธ ํ์ด์ง - Oauth Co-authored-by: dudtjr913 <[email protected]> * feat: sessionStorage ์ ํธ ํจ์ ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * fix: publicPath ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * feat: ์์ ๋ก๊ทธ์ธ ๊ตฌํ ์๋ฃ - GithubCallbackPage ์ถ๊ฐ - Cards ํ์ด์ง์์ ๋ก๊ทธ์ธ ์ ๋ฉ์ธ์ผ๋ก ๋์๊ฐ๋๋ก ์ค์ Co-authored-by: Kyle <[email protected]> * etc: dotenv ์ ์ฉ Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: Kyle <[email protected]> * etc: env ํด๋ ์ด๋ * etc: ์๋ธ๋ชจ๋ ์์น ๋ณ๊ฒฝ (#114) * ์๋ธ๋ชจ๋ ์ค์ ๋ณ๊ฒฝ * etc: ์๋ธ๋ชจ๋ url ๋ณ๊ฒฝ * etc: package.json ์คํฌ๋ฆฝํธ ์์ * etc: ์๋ธ๋ชจ๋ ์ ๋ณด ์ถ๊ฐ * fix: ๋ฌธ์ ๊ฐ 0๊ฐ์ผ ๋, ํด์ฆ ์ค์ ์์ ๋ณด์ด์ง ์๋๋ก ์์ (#115) * etc: ๋ฒํผ, ์นดํ ๊ณ ๋ฆฌ ์คํ์ผ ์์ - ๋ฒํผ rectangle height 3.5rem์ผ๋ก ์์ - ์นดํ ๊ณ ๋ฆฌ ํฐํธ์ฌ์ด์ฆ ์์ Co-authored-by: Kyle <[email protected]> * etc: console.log ์ญ์ Co-authored-by: Kyle <[email protected]> * fix: ๋ฌธ์ ๊ฐ 0๊ฐ์ผ ๋, ํด์ฆ ์ค์ ์์ ๋ณด์ด์ง ์๋๋ก ์์ Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * F01 - aws s3๋ก ์ ์ ํ์ผ ๋ถ๋ฌ์ค๊ธฐ (#117) * etc: ์ด๋ฏธ์ง ์์ค ์ต์ ํ - cloud front ๋ฐฐํฌ - s3 ๋ฒํท ์์ฑ Co-authored-by: dudtjr913 <[email protected]> * etc: ๋ก๊ทธ์ธ logo ์ด๋ฏธ์ง height ๊ณ ์ Co-authored-by: dudtjr913 <[email protected]> * B25 - ๋ฌธ์ํ ์์ ๋ฐ์ ๋ฐ B23 ์ฝ๋ ๊ฐ๋จ ์์ (#111) * refactor: DataLoader ์ฝ๋ ๋ฆฌํฉํ ๋ง * etc: ์ฝ๋ ํฌ๋งท * etc: ํ์ด์ง ํค๋ ์ ๋ฆฌ (#134) Co-authored-by: dudtjr913 <[email protected]> * F03 - ์ค์ผ๋ ํค UI๋ฅผ ๊ตฌํํ๋ค (#140) * feat: ์ค์ผ๋ ํค UI ์ถ๊ฐ - CardSkeleton ์ถ๊ฐ - HeaderSkeleton ์ถ๊ฐ - skeleton style ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * etc: ์นดํ ๊ณ ๋ฆฌ ์ปดํฌ๋ํธ ์คํ์ผ ๋ณ๊ฒฝ - ๋ฉ์ธ ํ์ด์ง ํ์ดํ ์ ์ฒด ์นดํ ๊ณ ๋ฆฌ -> ํ์ต ์ค์ผ๋ก ๋ณ๊ฒฝ Co-authored-by: Kyle <[email protected]> * feat: CardsLoadable ์ถ๊ฐ Co-authored-by: dudtjr913 <[email protected]> * etc: QuizPage fallback ์ปดํฌ๋ํธ ์ญ์ Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * etc: ์๋ฒ url ํ๊ฒฝ๋ณ์๋ก ์ ์ฉ (#142) Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * etc: build.gradle ์์ * fix: ๋ก๊ทธ์ธ ์ ๋ฐ์ํ๋ ์๋ฌ ํด๊ฒฐ (#144) - PrivateRoute์ children์ด ๊ฐ์ฒด๋ก ๊ฐ์ธ์ ธ ์์ด์ ์๊ธด ์๋ฌ ํด๊ฒฐ Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * etc: build.gradle ์ค์ ๋ณ๊ฒฝ Co-authored-by: Eugine Park <[email protected]> Co-authored-by: seovalue <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: Kyle <[email protected]> Co-authored-by: ohjoohyung <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: Eugine Park <[email protected]> Co-authored-by: seovalue <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: Kyle <[email protected]> Co-authored-by: ohjoohyung <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * etc: ์๋ธ๋ชจ๋์ application-test๋ฅผ ๋ฉ์ธ ํ๋ก์ ํธ๋ก ์ด๋ // application.yml ๋ณ๊ฒฝ * W01-B - Workbook (๋ฌธ์ ์ง) ๋๋ฉ์ธ์ ์์ฑํ๋ค (#151) * feat: Workbook ๋๋ฉ์ธ ์ถ๊ฐ * refactor: ์์๋ฅผ ์ฌ์ฉํ๋๋ก ์์ * refactor: timezone ์ต์ ์ญ์ * feat: snackbar ์ถ๊ฐ (#152) Co-authored-by: dudtjr913 <[email protected] * refactor - ์์ธ์ฒ๋ฆฌ ๊ตฌํ (#158) * etc: webpack.prod.js - devtool: false๋ก ๋ณ๊ฒฝ Co-authored-by: Kyle <[email protected]> * feat: ๊ฐํ ํฌ๋งทํ ์ ํธ ํจ์ ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * refactor: ์ค๋ต๋ฐ๋ฅผ ์ด์ฉํ ์๋ฌ ์ฒ๋ฆฌ ๊ตฌํ Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * Q01 - ๋นํ์ ์ ์ฉ ํด์ฆ API๋ฅผ ๊ตฌํํ๋ค (#154) * feat: Card ๋ง์ฃผ์น ํ์ ๊ธฐ๋ฅ ์ถ๊ฐ * feat&test: ๋นํ์ ์นด๋ ์์ฑ ๊ธฐ๋ฅ ๋ฐ ํ ์คํธ ๊ตฌํ * feat: ์์ 10๊ฐ ์นด๋ ์กฐํ ๋ฉ์๋ ์์ * refactor: singleton ํ ๋น ๋ฐฉ๋ฒ ๋ฆฌํฉํ ๋ง * refactor: QuizResponse ์์ฑ ๋ฉ์๋ ์์ ๋ฐ ๋ถํ์ํ ๋ด์ฉ ์ ๊ฑฐ * refactor: ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ช ์ of -> listOf๋ก ๋ณ๊ฒฝ * refactor: List.copyOf ๋์ , ์์ ๋ถ๊ฐ๋ฅํ๋๋ก๋ง ์ฒ๋ฆฌํด์ ๋ฐํํ๋๋ก ์์ Co-authored-by: pkeugine <[email protected]> * C03 - Card์ ์ถ๊ฐ ํ๋๋ฅผ ํฌํจ์ํจ๋ค (#159) * feat: Card ๋ง์ฃผ์น ํ์ ๊ธฐ๋ฅ ์ถ๊ฐ * feat: Card ๊ฐ์ฒด ํ๋ ๋ณ๊ฒฝ ๋ฐ Answer ๊ด๋ จ ๊ธฐ๋ฅ ์ ๊ฑฐ * Category์์ Workbook์ ํฌํจ๋๋๋ก ๋ณ๊ฒฝ * Cards ๋ด์ฉ ์์ * ๋ถํ์ํ import๋ฌธ ์ ๊ฑฐ * DataLoader ๋นํ์ฑํ * feat: Workbook ๊ด๋ จ ๊ธฐ๋ฅ ์ถ๊ฐ * refactor: Quiz๊ฐ Category๊ฐ ์๋ Workbook์ ์ฌ์ฉํ๋๋ก ๋ณ๊ฒฝ * refactor: Admin ๊ด๋ จ ๊ธฐ๋ฅ์ด Category๊ฐ ์๋ Workbook์ ์ฌ์ฉํ๋๋ก ๋ณ๊ฒฝ * Admin์ Answer ๊ด๋ จ ๊ธฐ๋ฅ ์ ๊ฑฐ * refactor: Category ์ ๊ฑฐ ๋ฐ api ๋ฌธ์ ์ฐธ์กฐ snippet ๋ณ๊ฒฝ * refactor: Workbook name ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ ๋ฐ dto ์ ๊ทผ์ ํ์ ์์ * docs: admin api ์นดํ ๊ณ ๋ฆฌ ๋ถ๋ถ ๋ฌธ์ ์ง์ผ๋ก ๋ณ๊ฒฝ * refactor: ์๋ต dto ๋กฌ๋ณต ์ถ๊ฐ * refactor: Card ํด๋์ค ํธ์ ๋ฉ์๋ ์ด๋ฆ ๋ณ๊ฒฝ * refactor: ์ํฌ๋ถ ๋๋ฝ๋ ๋ณ๊ฒฝ์ฌํญ ์ ์ฉ * etc: build.gradle์์ application-test.yml ์ ๊ฑฐ * etc: ์๋ธ๋ชจ๋ ๋๊ธฐํ * U01 - AuthorizationInterceptor ๋ฐ ๊ด๋ จ ํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ค. (#164) * feat: AuthorizationInterceptor ๋ฐ Config ์ถ๊ฐ * etc: ํจํค์ง ๊ตฌ์กฐ ๋ณ๊ฒฝ * test: AuthorizationInterceptor ์ถ๊ฐ์ ๋ฐ๋ฅธ ํ ์คํธ ์ฝ๋ ์ถ๊ฐ * refactor: ํผ๋๋ฐฑ ๋ฐ์ * etc: ์ฝ๋ ํฌ๋งทํ ๋ฐ ํ์์๋ ๋ฉ์๋ ์ญ์ * UI05 - ๊ณต์ ๋ฌธ์ ์ง ํ์ด์ง UI๋ฅผ ๊ตฌํํ๋ค (#165) * feat: ๊ณต์ ํ์ด์ง UI ์ถ๊ฐ * etc: ์๋ฒ url ๋ณ๊ฒฝ (localhost:8080) Co-authored-by: dudtjr913 <[email protected]> * etc: SearchPage ์ญ์ Co-authored-by: dudtjr913 <[email protected]> * etc: path ๋ณ๊ฒฝ (sharedWorkbookDetail -> SharedCards) Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: imgwang-yeol <[email protected]> * etc: ์๋ธ๋ชจ๋ - ์๋ฒ url ๋ณ๊ฒฝ Co-authored-by: dudtjr913 <[email protected]> * refactor: api url ๋ฐ ์ธํฐ์ ํฐ ์์ (#170) * feat: ํ ์คํธ ์ฝ๋ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ค. (#174) * chore: react-testing-library ํ๊ฒฝ์ค์ Co-authored-by: Kyle <[email protected]> * test: MainPage ํ ์คํธ ์ถ๊ฐ - setupTest ์ค์ - fetch -> axios Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: Kyle <[email protected]> * B14 - ๋ก๊น ์ ๋ต wiki ๋ฌธ์ํ ๋ฐ xml ์ฝ๋ ์ ๋ฐ์ (#172) * etc: ์๋ธ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ ์ ์ฉ * feat: http๊ด๋ จ ๋ก๊น ์ค์ * feat: ๊ธฐ์กด ๋ก๊ทธ ํจํด ์์ ๋ฐ ์ ์ฅ ๋ ๋ฒจ ๋ณ๊ฒฝ * feat: ๋ก๊ทธ ๋ ๋ฒจ ๋ณ ํ์ผ ๋ถ๋ฆฌ * etc: ๋ก๊น ๊ด๋ จ ์ค์ ๋ณ๊ฒฝ * feat: ํ์ผ, ์ฝ์ ๋ก๊น ์ดํ๋ ์ถ๊ฐ * feat: logback ํ์ผ์ ๋ถ๋ฆฌ๋ ์ดํ๋ ์ถ๊ฐ * feat: http ์์ฒญ, ์๋ต body ์ถ๋ ฅ ๊ด๋ จ ์ค์ ์ถ๊ฐ Co-authored-by: seunghyun <[email protected]> * U03 - ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์์ ๊ด๋ จ์๋ /users/me api ๋ฐ User ํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ค. (#175) * feat: /users/me api ๋ฐ ์ธ์ํ ์คํธ ์ถ๊ฐ * test: user ๊ด๋ จ ํ ์คํธ ์ถ๊ฐ * refactor: ํ์์๋ ๋ฉ์๋ ์ ๊ฑฐ ๋ฐ ํจํค์ง ๊ตฌ์กฐ ๋ณ๊ฒฝ * B28 - ๋ก์ปฌ์์ ์คํ ์ ํ์ํ ์ด๊ธฐ๋ฐ์ดํฐ๋ฅผ ์ํ ๋ฐ์ดํฐ๋ก๋ ๋ฆฌํฉํ ๋ง (#176) * etc: application.yml ์์ * refactor: ๋ฐ์ดํฐ๋ก๋ ๋ฆฌํฉํฐ๋ง * etc: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด๊ธฐ ๋ฐ์ดํฐ๋ก ์ฌ์ฉํ ์ฟผ๋ฆฌ ์์ฑ * C04 - ์นด๋์ '๋ค์์ ๋ ๋ณด๊ธฐ' ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธํ๋ค. (#178) * UI05 - ๊ณต์ ๋ฌธ์ ์ง ํ์ด์ง UI๋ฅผ ๊ตฌํํ๋ค (#165) * feat: ๊ณต์ ํ์ด์ง UI ์ถ๊ฐ * etc: ์๋ฒ url ๋ณ๊ฒฝ (localhost:8080) Co-authored-by: dudtjr913 <[email protected]> * etc: SearchPage ์ญ์ Co-authored-by: dudtjr913 <[email protected]> * etc: path ๋ณ๊ฒฝ (sharedWorkbookDetail -> SharedCards) Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: imgwang-yeol <[email protected]> * refactor: Cards ์ฌ์ฉํ์ง ์๋ ์์ฑ์ ์ ๊ฑฐ * feat: ๋ฌธ์ ์ง์ ์นด๋ ์๋ ๊ฒฝ์ฐ ์์ธ ๋ฐ์ํ์ง ์๋๋ก ๋ณ๊ฒฝ - ๋ฉ์๋ ์ด๋ฆ ์์ - ๋ฌธ์ ์ง์ ์นด๋ ์๋ ๊ฒฝ์ฐ๋ฅผ ํ ์คํธํ๋ ๋ถ๋ถ ์ ๊ฑฐ * feat: Card ๋ ๋ณด๊ธฐ ๋ณ๊ฒฝ ๋ฉ์๋ ์ถ๊ฐ * feat: CardRepository ์ฌ๋ฌ id๋ก ์นด๋ ์กฐํํ๋ ๋ฉ์๋ ์ถ๊ฐ * etc: ํ ์คํธ ๋๋ ํ ๋ฆฌ ์ ์๋ฆฌ๋ก ์ด๋ * feat: CardService, ๋ ๋ณด๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * feat: CardController ์ถ๊ฐ ๋ฐ ๋ ๋ณด๊ธฐ api ์์ฑ * refactor: ์ธ์ ํ ์คํธ์์ ์นด๋ & ๋ฌธ์ ์ง ์์ฑ ๋ฉ์๋ AuthAcceptanceTest๋ก ์ด๋ * test: ๋ ๋ณด๊ธฐ ์นด๋ ์ ํ ๊ธฐ๋ฅ ์ธ์ ํ ์คํธ ์ถ๊ฐ * docs: ๋ ๋ณด๊ธฐ ์นด๋ ์ ํ api ๋ฌธ์ํ - workbook ๊ด๋ จ ์์คํค๋ ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝ * B14 - ๋ก๊น ์ ๋ต wiki ๋ฌธ์ํ ๋ฐ xml ์ฝ๋ ์ ๋ฐ์ (#172) * etc: ์๋ธ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ ์ ์ฉ * feat: http๊ด๋ จ ๋ก๊น ์ค์ * feat: ๊ธฐ์กด ๋ก๊ทธ ํจํด ์์ ๋ฐ ์ ์ฅ ๋ ๋ฒจ ๋ณ๊ฒฝ * feat: ๋ก๊ทธ ๋ ๋ฒจ ๋ณ ํ์ผ ๋ถ๋ฆฌ * etc: ๋ก๊น ๊ด๋ จ ์ค์ ๋ณ๊ฒฝ * feat: ํ์ผ, ์ฝ์ ๋ก๊น ์ดํ๋ ์ถ๊ฐ * feat: logback ํ์ผ์ ๋ถ๋ฆฌ๋ ์ดํ๋ ์ถ๊ฐ * feat: http ์์ฒญ, ์๋ต body ์ถ๋ ฅ ๊ด๋ จ ์ค์ ์ถ๊ฐ Co-authored-by: seunghyun <[email protected]> * refactor: DomainAcceptanceTest ์ถ๊ฐ Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: imgwang-yeol <[email protected]> Co-authored-by: seunghyun <[email protected]> * F09 - api ์ฃผ์ ๋ฐ ๋ณ์ ๋ช ๋ณ๊ฒฝ (#182) * etc: category -> workbook ์ด๋ฆ ์์ - axios ํ์ ์ฒ๋ฆฌ * refactor: ๋ก๊ทธ์ธ ๋ฐ ๋ก๊ทธ์์ ์ฝ๋ ์์ - localStorage์ ํ ํฐ ์ ์ฅ Co-authored-by: Kyle <[email protected]> * fix: ํ ์คํธ ์ฝ๋ ์ค๋ฅ ์์ - setupFiles ๋ฐ setupFilesAfterEnv ์ค์ Co-authored-by: Kyle <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * feat: recoil ๊ด๋ จ ์ด๊ธฐ ์ค์ ๊ธฐ๋ฅ ์ถ๊ฐ(ํ ์คํธ) (#186) - initializeState Co-authored-by: Kyle <[email protected]> * docs: ๋ฐฑ์๋ ์๋ฒ ์คํ ๋ฐฉ๋ฒ ์์ฑ (#187) * feat: ๊ณต์ ๋ฌธ์ ์ง ์์ธ ํ์ด์ง UI๋ฅผ ๊ตฌํํ๋ค (#191) * feat: ๊ณต์ ๋ฌธ์ ์ง ์์ธ ํ์ด์ง ์ถ๊ฐ - ๋ผ์ฐํฐ ์ ์ฉ - check svg ์์ฑ - Checkbox ์ปดํฌ๋ํธ ์์ฑ - SharedQnACard ์ปดํฌ๋ํธ ์์ฑ - SharedCardsPage ์์ฑ * refactor: PageHeader ๋ฐ ๋์์ธ ๋ฆฌํฐ์น - PageHeader sticky, rightContent ์ถ๊ฐ - ์ ์ฒด์ ์ผ๋ก ๋์์ธ ๋ฆฌํฐ์น Co-authored-by: Kyle <[email protected]> * refactor: shared => public ๋ณ๊ฒฝ Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * feat: ๋ฌธ์ ์ง ์ถ๊ฐ ํ๋ฉด์ ๊ตฌํํ๋ค. (#189) * etc: ์๋ธ๋ชจ๋ ๋๊ธฐํ * feat: ๋ฌธ์ ์ง ์ถ๊ฐ ํ์ด์ง ๊ตฌํ * test: ๋ฌธ์ ์ง ์ถ๊ฐ ํ์ด์ง ํ ์คํธ ์ฝ๋ ์์ฑ * etc: ์ํฌ๋ถ ๋์ด ์์ * refactor: ๋์์ธ ๋ฆฌํฐ์น - workbook, skeleton height ๋ณ๊ฒฝ Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * feat: ๋นํ์ ํด์ฆ ํ๊ธฐ ๊ตฌํ (#193) * feat: ๋นํ์ ํด์ฆ ํ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ Co-authored-by: Kyle <[email protected]> * refactor: history ์ ๋ฆฌ - useRouter ํ ์ถ๊ฐ Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * B29 - ํ ์คํธ๋ฅผ ๋ฆฌํฉํ ๋งํ๋ค. (#181) * refactor: oauth ์ธ์ฆ์ ์๊ตฌํ์ง ์๋ GET ๋ฉ์๋ ๋ฆฌํฉํ ๋ง * refactor: auth๊ฐ ํ์ํ GET ์์ฒญ ๋ฆฌํฉํ ๋ง * refactor: acceptanceTest์ post, put, delete ๋ฉ์๋ ๋ฆฌํฉํ ๋ง * refactor: UserAcceptanceTest ๋ฆฌํฉํ ๋ง * refactor: Documentation Test ๋ฆฌํฉํ ๋ง * refactor: CardAcceptanceTest ๋ฐ DomainAcceptanceTest ๋ฆฌํฉํ ๋ง * etc: ์นดํ ๊ณ ๋ฆฌ์์ ๋ฌธ์ ์ง์ผ๋ก ๋ช ์นญ ์์ * refactor: Document ํ ์คํธ util ํจํค์ง ์์ฑ * refactor: RestAssuredTest์ log ์ต์ ์ ์ ํํ ์ ์๋๋ก ๋ณ๊ฒฝ * refactor: ๋ฉ์๋๋ช ๊ฐ๋ ์ฑ์๊ฒ ๋ณ๊ฒฝ ๋ฐ document์ status, identifier ๋ถ๋ฆฌ * etc: env ํด๋ ํ๊ฒฝ ๋ณ์๋ฅผ ๋ค์ ์ค์ ํ๋ค (#196) * etc: submodule ๋๊ธฐํ Co-authored-by: Kyle <[email protected]> * etc: script ๋ช ๋ น์ด ๋ณ๊ฒฝ - build:dev - build:prod Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * fix: DataLoader์์ ํ์ผ ์ฝ์ ๋ UTF-8 ์บ๋ฆญํฐ์ ์ฌ์ฉํ๋๋ก ์์ (#199) * feat: ๋ก๊ทธ์ธ ํ ์ ์ ์ ๋ณด ๋ฐ์์ค๊ธฐ (#200) Co-authored-by: dudtjr913 <[email protected]> * refactor: ์นด๋ ํ ํ๋ฆฟ ์ถ๊ฐ (#202) Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * refactor: ๋ฆฌํฉํ ๋ง (#204) * etc: WorkbookResponse ์์ - logoUrl, description ์ญ์ Co-authored-by: dudtjr913 <[email protected]> * etc: ๋ฌธ์ ์ง ์ถ๊ฐ ๋ฒํผ ๋ณ๊ฒฝ Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * feat: ModalProvider ์ถ๊ฐ (#206) Co-authored-by: Kyle <[email protected]> Co-authored-by: Kyle <[email protected]> * Q05 - ํด์ฆ์์ '๋ ๋ณด๊ธฐ' ์นด๋๋ฅผ ๋จผ์ ๋ด์ ์ ์ ์๊ฒ ์ ๊ณตํ๋ค (#190) * feat: QuizResponse์ ๋ง์ฃผ์น ํ์ ํ๋ ์ถ๊ฐ * feat: ๋ค์์ ๋๋ณด๊ธฐ๊ฐ ํฌํจ๋ ํด์ฆ ์์ฑ * feat: ๋ค์์ ๋ ๋ณด๊ธฐ์ ์ถ๊ฐ๋ ์นด๋์ ๋๋ณด๊ธฐ ์ต์ ์ทจ์ ๊ตฌํ * refactor&test: Quiz ํด๋์ค ์์ฑ ๋ฐ createQuiz ์ฑ ์ ๋ถ๋ฆฌ, ๊ด๋ จ ํ ์คํธ ์ถ๊ฐ * etc: ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋ ์ญ์ * feat: ํ์, ๋นํ์ ๋๋ Role ์ถ๊ฐ (#195) * etc: pull request template ์ถ๊ฐ * etc: Jenkinsfiles ์ถ๊ฐ * W03- Workbook์ User์ถ๊ฐ, /workbooks//{id}/cards API์ ํ๋ ์ถ๊ฐ (#208) * feat: Workbook์ User ํ๋ ์ถ๊ฐ * refactor: ์ผ๋ถ ์ฃผ๊ด์ ์ธ ์คํ์ผ์ ๋ฐ์ * feat: CardResponse์ ํ๋ ์ถ๊ฐ * refactor: ํจํค์ง ์ด๋ dto -> dto/workbook // workResponse ํ๋ ์์ * feat: ๋ฌธ์ ์ง์ ์ฃผ์ธ์ ์์๋ด๋ ๊ธฐ๋ฅ ๊ตฌํ * feat: User ํ ์ด๋ธ์ Role ์ถ๊ฐ * etc: ddl, dml ์์ * refactor: DataLoader์์ ADMIN์ผ๋ก ์ ์ ์์ฑ ํ ๋ฐ์ดํฐ ์ด๊ธฐํ ์ ์ ๋ก ์ด์ฉ * refactor: CardResponse ํ๋ ์กฐ์ * refactor: ๋ฐ์ดํฐ๋ก๋์ ๋๋ฏธ ๋ฌธ์ ์ง ๊ณต๊ฐ์ฌ๋ถ true๋ก ๋ณ๊ฒฝ * refactor: ํ ์คํธ ์ฑ๊ณตํ๋๋ก ์์ * etc: api ๋ฌธ์ ๊ฒฝ๋ก ๋ณ๊ฒฝ (#212) * etc: Jenkinsfiles์ slack ์ค์ ์ถ๊ฐ * C05 - ์นด๋๋ฅผ ์ถ๊ฐ, ์์ , ์ญ์ ํ๋ api๋ฅผ ๋ง๋ ๋ค. (#210) * feat: ๋ชจ์๋ณด๊ธฐ ํ๋ฉด์์ ๋ณด์ฌ์ฃผ๋ ์นด๋์ ์ ๋ณด์ ๋ถ๋งํฌ ์ฌ๋ถ์ ๋ง์ฃผ์น ํ์ ์ถ๊ฐ * feat: ์นด๋ ์์ฑ api ์ถ๊ฐ * test: ์นด๋ ์์ฑ ๊ด๋ จ ์ธ์ ํ ์คํธ์ ์๋น์ค ํ ์คํธ ์ถ๊ฐ * feat: ์นด๋ ์์ฑ ์์ฒญ ๋ฐ ๋ ๋ณด๊ธฐ ์์ฒญ ๊ด๋ จ ๊ฒ์ฆ ์ถ๊ฐ * feat: ์นด๋ ์์ ๊ธฐ๋ฅ api ์ถ๊ฐ * test: ์นด๋ ์์ ๊ด๋ จ ์๋น์ค ํ ์คํธ ๋ฐ ์ธ์ ํ ์คํธ ์ถ๊ฐ * etc: Jenkinsfiles ์ถ๊ฐ * etc: Jenkinsfiles ์์ * etc: tools ์ถ๊ฐ * etc: frontend ๊ฒฝ๋ก ์ถ๊ฐ ์ค์ * etc: ssh ์ค์ ์ถ๊ฐ * docs: ์นด๋ ์์ฑ ๋ฐ ์์ api ๋ฌธ์ํ * refactor: Cards ๊ด๋ จ ํ ์คํธ ๋ณ๊ฒฝ๋ ํ ์คํธ ๋ฐฉ์ ์ ์ฉ * feat: ์นด๋ ์ญ์ ๊ด๋ จ api ์์ฑ ๋ฐ ๊ด๋ จ ํ ์คํธ, ๋ฌธ์ ์ถ๊ฐ * etc: ์ฝ๋ ์ ๋ฆฌ * test: ๋๋ฝ๋ ์นด๋ ์ถ๊ฐ ์คํจ ํ ์คํธ ์ถ๊ฐ * refactor: workbook ๊ด๋ จ ์๋ต์์ workbookName์ name์ผ๋ก ์์ * test: CardAcceptanceTest ํ ์คํธ ์ผ์ด์ค ์ถ๊ฐ * feat: ์นด๋ ์์ api ์์ฒญ๊ณผ ์๋ต ์์ ๋ณ๊ฒฝ * refactor: CardService workbook ์ฐพ๋ ๋ฉ์๋ ์ถ์ถ Co-authored-by: joanne <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * feat: form context ์ถ๊ฐ (#219) Co-authored-by: dudtjr913 <[email protected]> * etc: ์๋ธ๋ชจ๋ ์ ๋ฐ์ดํธ (#221) Co-authored-by: dudtjr913 <[email protected]> * feat: ํ ์คํธ ํ์ผ ์์ (#224) * test: ํ ์คํธ ํ์ผ ์ญ์ Co-authored-by: Kyle <[email protected]> * feat: ๊ณต์ ํ์ด์ง ์ด๋ ๋ฐฐ๋ ๋ง๋ค๊ธฐ (#226) * refactor: inputField focus ์ํ ์ถ๊ฐ * feat: ๊ณต์ ๋ฌธ์ ์ง ์ด๋ ๋ฐฐ๋ ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * Q04 - ๋ฐ๋ก ํ์ด๋ณด๊ธฐ API๋ฅผ ๊ตฌํํ๋ค (#216) * feat&test: ๋ฌธ์ ์ง์์ ๋ฐ๋ก ํ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * test: increaseEncounterCount ํ ์คํธ ์ถ๊ฐ * test: Quiz ๋๋ฉ์ธ์ incrementEncounterCount Test ์ถ๊ฐ * fix: ๋ฌธ์ ์ง์์ ๋ฐ๋กํ๊ธฐ ์ ๋ง์ฃผ์น ํ์ ์ฆ๊ฐ๋์ง ์๋๋ก ์์ * refactor: ๋ฌธ์ ์ง์์ ๋ฐ๋กํ๊ธฐ ์ ๋ค์์ ๋๋ณด๊ธฐ ์ทจ์ ๊ธฐ๋ฅ ์ญ์ * feat: ๋ฌธ์ ์ง์ด public์ธ์ง ํ์ธํ๋ ๊ธฐ๋ฅ ์ถ๊ฐ * feat: CardAddPage, CardEditPage ๊ตฌํ (#229) Co-authored-by: dudtjr913 <[email protected]> * U05 - Role์ด admin์ธ User๋ง admin api์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋๋ก AdminInterceptor๋ฅผ ์ถ๊ฐํ๋ค. (#217) * feat: GithubUserInfoResponse์์ Role์ ์ถ๊ฐํด์ User๋ก ๋ณํ๋๋๋ก ์ถ๊ฐ * feat: AdminInterceptor ๋ฐ ํ ์คํธ ์ถ๊ฐ * refactor: AdminAcceptanceTest๋ด Category๋ฅผ Workbook์ผ๋ก ์์ * UI10 - ์คํฌ๋กค ๋ฐ๋ฅผ ์ปค์คํ ํ๋ค (#233) * refactor: ์ปค์คํ ์คํฌ๋กค ๋ฐ ๊ตฌํ Co-authored-by: Kyle <[email protected]> * W04 - Workbook์ ์กฐํํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋ค. (#218) * feat: Workbook์ User ํ๋ ์ถ๊ฐ * refactor: ์ผ๋ถ ์ฃผ๊ด์ ์ธ ์คํ์ผ์ ๋ฐ์ * feat: CardResponse์ ํ๋ ์ถ๊ฐ * refactor: ํจํค์ง ์ด๋ dto -> dto/workbook // workResponse ํ๋ ์์ * feat: ๋ฌธ์ ์ง์ ์ฃผ์ธ์ ์์๋ด๋ ๊ธฐ๋ฅ ๊ตฌํ * feat: User ํ ์ด๋ธ์ Role ์ถ๊ฐ * etc: ddl, dml ์์ * refactor: DataLoader์์ ADMIN์ผ๋ก ์ ์ ์์ฑ ํ ๋ฐ์ดํฐ ์ด๊ธฐํ ์ ์ ๋ก ์ด์ฉ * refactor: CardResponse ํ๋ ์กฐ์ * refactor: ๋ฐ์ดํฐ๋ก๋์ ๋๋ฏธ ๋ฌธ์ ์ง ๊ณต๊ฐ์ฌ๋ถ true๋ก ๋ณ๊ฒฝ * refactor: ํ ์คํธ ์ฑ๊ณตํ๋๋ก ์์ * refactor: TestUtils์ ๋ฌธ์์ด ์์ฑ ๋ฉ์๋ ์ด๋ฆ ๋ณ๊ฒฝ * feat: ๊ฒ์์ด ๊ฐ์ฒด์ธ SearchKeyword ์์ฑ * feat: ๊ฒ์ ์กฐ๊ฑด ๊ฐ์ฒด์ธ WorkbookCriteria ์์ฑ * feat: ๋ฌธ์ ์ง ๊ฒ์์ ์ํ resolver ์์ฑ ๋ฐ API์ ์ ์ฉ * feat: ๊ฒ์์ ํ์ฉํ AccessType ํด๋์ค ๊ตฌํ * refactor: boolean ๋์ AccessType์ ์ฌ์ฉํ๋๋ก ์์ * refactor: ํญ ๋ฌธ์์ ๊ฐํ ๋ฌธ์๋ฅผ ๊ณ ๋ คํ์ฌ ์์ * refactor: ํ๋๋ช ์์ (workbookName -> name) * etc: dml ์์ * feat: ๋ฌธ์ ์ง์ ์ด๋ฆ์ ๋จ์ด๊ฐ ํฌํจ๋์ด ์๋์ง ๊ฒ์ฌํ๋ ๊ธฐ๋ฅ ์ถ๊ฐ * feat: ๊ฒ์์ ์ฃผ์ธ์ ์ค์ ํ๋ OwerType ํด๋์ค ์์ฑ * refactor: ์์ธ๋ช ๋ณ๊ฒฝ, ์ด์ธ ์์ํ ์์ * feat: ์์ ์๋น์ค ๋ก์ง ์ถ๊ฐ * feat: ๊นจ์ง๋ ํ ์คํธ๋ฅผ ์์ (๋ก๊ทธ์ธ ๋ฐ ๋ฌธ์ ์ง ๊ณต๊ฐ) * feat: RequestBuilder์ query parameter๋ฅผ ์ํ ๊ธฐ๋ฅ ์ถ๊ฐ * refactor: lombok.EqualsAndHashCode ์ฌ์ฉ * refactor: ํ ์คํธ ๊ตฌ์กฐ ์์ ๋ณต๊ตฌ * refactor: workbook resolver ์ญ์ * refactor: ๋๋ฉ์ธ์ผ๋ก์ ๋์์ด ์ ํฉํ๋๋ก WorkbookCriteria ์์ * feat: WorkbookCriteria๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์ ์ง์ ํํฐ๋งํ๋ ํด๋์ค ์์ฑ * feat: ๋ฌธ์ ์ง ์กฐํ, ๊ฒ์ Service ๋ฉ์๋ ๊ตฌํ * feat: ๋ก๊ทธ์ธ ์ ์ ๋ฌธ์ ์ง ์กฐํ API, ๋ฌธ์ ์ง ๊ฒ์ API ์ถ๊ฐ * refactor: ์คํจํ๋ ํ ์คํธ ์์ * refactor: @Param ์ถ๊ฐ ๋ฐ ํ ์คํธ ์์ * etc: ํจํค์ง ๊ตฌ์กฐ ๋ณ๊ฒฝ * refactor: ์ํฐํฐ boolean ํ๋์ด๋ฆ is์ ๊ฑฐ TINYINT(1) ์ถ๊ฐ, ์นด๋์ ์ง๋ฌธ ์ ๋ต 2000์ ์ดํ๋ก ์์ * W07 - ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌธ์ ์ง ์กฐํ์ ์ต์ ์์ผ๋ก ์กฐํ๋ ์ ์๋๋ก ๊ตฌํํ๋ค. (#241) * feat: ์ต์ ์์ผ๋ก Workbook์ด ์กฐํ๋๋๋ก ์์ ๋ฐ ํ ์คํธ ์ฝ๋ ์ถ๊ฐ * feat: admin์ด ๋ฌธ์ ์ง์ ์ถ๊ฐํ ๋ admin์ id๊ฐ ์ ์ฅ๋ ์ ์๋๋ก ์ฝ๋ ์ถ๊ฐ * refactor: ํผ๋๋ฐฑ ๋ฐ์ * C06 - ๋ชจ์๋ณด๊ธฐ์์ ์นด๋๋ฅผ ์ต์ ์์ผ๋ก ์ ๊ณตํ๋ค. (#237) * feat: ๋ชจ์๋ณด๊ธฐ ์์ฒญ์ ์นด๋ ์์ฑ ์๊ฐ ์ญ์์ผ๋ก ์ ๊ณต * refactor: ์ต์ ์์ผ๋ก ์นด๋ ์ ๋ ฌํ๋ ๋ฉ์๋ ๋จ์ํ * refactor: ์ต์ ์์ผ๋ก ์นด๋ ์ ๋ ฌํ๋ ๋ฉ์๋ jpql ์ฌ์ฉํ๋๋ก ๋ณ๊ฒฝ ๋ฐ CardSimpleResponse ์ ๊ฑฐ * feat: ์นด๋ ์ถ๊ฐ, ์์ , ์ญ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค (#244) * feat: ์นด๋ ์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ - FormProvider onBlur ์ถ๊ฐ - ๋ฆฌ์ฝ์ผ ์ํ ๊ด๋ฆฌ ๋ฐฉ์ ๋ณ๊ฒฝ Co-authored-by: Kyle <[email protected]> * feat: cardState ์บ์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ ํธ๋ฆฌ๊ฑฐ ์ถ๊ฐ Co-authored-by: dudtjr913 <[email protected]> * feat: ์นด๋ ์ถ๊ฐ validator ๊ตฌํ * feat: ๋ถ๋งํฌ ์์ ๊ตฌํ - debounce Co-authored-by: dudtjr913 <[email protected]> * feat: filter ํ fetch Co-authored-by: dudtjr913 <[email protected]> * feat: ์นด๋ ์์ ๊ธฐ๋ฅ ๊ตฌํ Co-authored-by: Kyle <[email protected]> * feat: ์นด๋ ์ญ์ ๊ธฐ๋ฅ ๊ตฌํ Co-authored-by: Kyle <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * fix: UPDATE ,DELETE ๋ฉ์๋ CORS ํ์ฉ (#243) * feat: DataLoader ์ค์ ์ด๋๋ฏผ ์ ๋ณด ์ถ๊ฐ * UI11 - ํ์ด์ง -> ๋ชจ๋ฌ (#248) * fix: PublicQnACard ํ์ ์ค๋ฅ ์์ * fix: ๋ถ๋งํฌ ์ ๋ ฌ ์ค๋ฅ ์์ Co-authored-by: dudtjr913 <[email protected]> * refactor: ์นด๋ ์ถ๊ฐ ํ์ด์ง -> ๋ชจ๋ฌ Co-authored-by: dudtjr913 <[email protected]> * refactor: ์นด๋ ์์ ํ์ด์ง => ๋ชจ๋ฌ ๊ต์ฒด Co-authored-by: Kyle <[email protected]> * feat: ์นด๋ ์ญ์ confirm ์ถ๊ฐ Co-authored-by: dudtjr913 <[email protected]> * fix: modal์์ ๋ค๋ก๊ฐ๊ธฐ ์ค๋ฅ ์์ * etc: ํ๋ก ํธ์๋ ํ์ดํ๋ผ์ธ ์๋ธ๋ชจ๋ ์ ๋ฐ์ดํธ ์ถ๊ฐ * W05 - ๊ณต์ ๋ฌธ์ ์ง ๊ฒ์ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋ค. (#238) * etc: ํจํค์ง ์์น ๋ณ๊ฒฝ * refactor: null๋ก ๊ฒ์ -> ๋๋ฏธ ๋ฌธ์ ์ง, ""๋ก ๊ฒ์ -> ๊ฒฐ๊ณผ์์ ์ผ๋ก ๋ณ๊ฒฝ * etc: ๋ถํ์ํ import ์ ๊ฑฐ * refactor: ์์ธ๋ช ์์ * refactor: ๊ฒ์์ ๋ฐ๋์ ๊ฒ์์ด๋ฅผ ์ ๋ ฅ๋ฐ๋๋ก ์์ , ์ ๋ ฅ๋ฐ์ง ๋ชปํ ์ ์์ธ ํธ๋ค๋ง ์ถ๊ฐ * refactor: ๊ฒ์์ ๋ฐ๋์ ๊ฒ์์ด๊ฐ ํ์ํ๋๋ก ๋๋ฉ์ธ ์์ *๋๋ฏธ ๋ฌธ์ ์ง ๊ฒ์์ ์ฌ์ฉ๋๋ NoSearchKeyword ์ ๊ฑฐ) * W06 - ๋ฌธ์ ์ง ๋ฌธ์ํ, ์ธ์ ํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ค. (#247) * etc: ํจํค์ง ์์น ๋ณ๊ฒฝ * refactor: null๋ก ๊ฒ์ -> ๋๋ฏธ ๋ฌธ์ ์ง, ""๋ก ๊ฒ์ -> ๊ฒฐ๊ณผ์์ ์ผ๋ก ๋ณ๊ฒฝ * test: ๋ฌธ์ ์ง ๋ฌธ์ํ ํ ์คํธ์ ๋นํ์ ์กฐํ, ๊ณต์ ๋ฌธ์ ์ง ๊ฒ์ ์ถ๊ฐ * refactor: ๋ฌธ์ ์ง๋ณ ์นด๋ ๋ชจ์๋ณด๊ธฐ API์ ๋ชจ๋ ์นด๋ ํ๋๋ฅผ ์ฃผ๋๋ก ๋ณ๊ฒฝ * refactor: ๋ฌธ์ ์ง ์กฐํ์ ๊ฒ์์ ํ์ํ ํ๋๋ง ๋ฐํํ๋๋ก ์์ * refactor: ๊ฐ๊ฐ ๋ฌธ์ํ ํ ์คํธ์ ์กด์ฌํ๋ AuthService, MockMvc ๋ถ๋ชจ ํ ์คํธ๋ก ์ด๋ * refactor: ํ์์๋ ์๋ตํ๋ ์ ๊ฑฐ, ํค์๋ ์์ด ๊ณต์ ๋ฌธ์ ์ง ๊ฒ์ ํ ์คํธ ์ ๊ฑฐ * etc: ์ธ์ฆ๊ด๋ จ ์ธํฐ์ ํฐ์์ /api/workbooks ์ ์ธ, ํ ํฐ ์ถ์ถ์ ์คํจํ๋ฉด null์ ๋ฐํํ๋๋ก ์์ * etc: ์ฝ๋ ์ ๋ฆฌ * test: ๋ฌธ์ ์ง ์ธ์ํ ์คํธ์ ๋นํ์ ๋ฌธ์ ์ง ์กฐํ, ๊ฒ์ ํ ์คํธ ์ถ๊ฐ * refactor: queryParam ์ฌ์ฉํ๋๋ก ์์ * feat: ๋ฌธ์ ์ง์ ์ถ๊ฐ, ์์ , ์ญ์ ํ๋ค. (#252) * feat: ํด์ํ๊ทธ ์ปดํฌ๋ํธ ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * feat: Toggle ์ถ๊ฐ Co-authored-by: dudtjr913 <[email protected]> * feat: ๋ฌธ์ ์ง ์ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ Co-authored-by: dudtjr913 <[email protected]> * feat: ๋ฌธ์ ์ง ์์ ๊ธฐ๋ฅ ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * feat: ๋ฌธ์ ์ง ์ญ์ ๊ธฐ๋ฅ ์ถ๊ฐ Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * W08 - ๋ฌธ์ ์ง ์ถ๊ฐ, ์กฐํ, ์์ , ์ญ์ ๊ธฐ๋ฅ์ User๋ฅผ ๋์ ํ๋ค. (#249) * feat: Workbook ์ถ๊ฐ api ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * refactor: put ๋ฉ์๋์ params ์ธ์๋ก ๋ฐ๋๋ก ์์ * feat: Workbook ์์ api ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * etc: test yml์ ์๋ show-sql true ์ญ์ * feat: Workbook ์ญ์ api ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * refactor: ํ์์๋ ๋ฉ์๋ ์ญ์ ๋ฐ ์ผ๋ถ ๋ฉ์๋๋ช ๋ณ๊ฒฝ * refactor: ์ํํธ ์ญ์ ๋ฅผ workbook ์ํฐํฐ ๋ณ๊ฒฝ๊ฐ์ง๋ฅผ ์ด์ฉํ๋๋ก ์์ * refactor: ๋ฉ์๋๋ช ์ ์๋ owned๋ฅผ author๋ก ์์ * feat: ๊ฒ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค (#260) * feat: ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * feat: ๊ณต์ ํ์ด์ง ์์ธ ๊ตฌํ Co-authored-by: dudtjr913 <[email protected]> * refactor: recoil state ์ ๋ฆฌ - public ์ญ์ - initialState ํ์ผ ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * refactor: hook ์ ๋ฆฌ Co-authored-by: dudtjr913 <[email protected]> * refactor: custom hook์ผ๋ก ๋ก์ง ์ด๋ Co-authored-by: Kyle <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * B37 - ๋ฐฑ์๋ ๋ ์ด๋ธ์ด ๋ถ์ง ์์ ๊ฒฝ์ฐ ๋ฐฑ์๋ ์ ํจ์ค ๋น๋๋ฅผ ํ์ง ์๋๋ค. (#266) * etc: ๋ถํ์ํ Jenkinsfile ์ ๊ฑฐ * etc: ๋ฐฑ์๋ ํ๊ฒฝ ์คํ ๋ฐฉ๋ฒ ์์ * B35 - api ์์ฒญ์ intelliJ ์์ ๋ณด๋ผ ์ ์๋๋ก http ํ์ผ์ ๋ง๋ ๋ค. (#258) * feat: ์นด๋์ ์ํฌ๋ถ ๊ด๋ จ ์์ฒญ ํ์ผ ์ถ๊ฐ * feat: ๋ฌธ์ ์ง ์ญ์ ์์ฒญ ์ ๋ณด ์ถ๊ฐ * feat: ๊ณต์ ๋ฌธ์ ์ง ๊ฒ์ ์์ฒญ ์ ๋ณด ์ถ๊ฐ * feat: ํด์ฆ ์์ฑ api ์์ฒญ ์ถ๊ฐ * feat: ๊ด๋ฆฌ์ ๋ฌธ์ ์ง ์ถ api ์์ฒญ ์ถ๊ฐ * feat: ๋ก๊ทธ์ธ ๋ฐ ์ ์ ๊ด๋ จ ์์ฒญ ์ ๋ณด ์ถ๊ฐ * B36 - ์ผ๋ฐ ์ ์ ์์ฑ์ DataLoader ์ ์ถ๊ฐํ๋ค. (#263) * feat: ๋ก์ปฌ ํ๊ฒฝ์ ์ผ๋ฐ ์ ์ ์ ๋ณด ์ถ๊ฐ * refactor: DataJpaTest ์์ show sql ์ค์ false ๋ก ๋ณ๊ฒฝ * refactor: dml์ ์์๋ก ์์ฑํ ์ ์ ์ ๋ณด ์ถ๊ฐ * feat: DataLoader๋ก ์ ์ฅ๋๋ ๋ฌธ์ ์ง ์ค ์ฒซ ์ธ ๊ฐ๋ ์ด๋๋ฏผ์ผ๋ก ๋ฑ๋กํ๊ณ ๋๋จธ์ง๋ ์ผ๋ฐ ์ ์ ๋ก ๋ฑ๋ก * C07 - Card CRUD์ ์ ์ ์ถ๊ฐ (#256) * fix&feat: CardUpdate ์ 2๊ฐ ์ถ๊ฐ๋๋ ๋ฒ๊ทธ ์์ ๋ฐ ๋ก๊ทธ์ธํ ํ์๋ง ์นด๋ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ ๊ตฌํ * feat&test: ์นด๋ ์์ , ์ญ์ ๊ธฐ๋ฅ์ ๋ก๊ทธ์ธ ์ฌ์ฉ์๋ง ๊ฐ๋ฅํ๋๋ก ๊ตฌํ ๋ฐ ํ ์คํธ * refactor&test: soft delete ๋ฐฉ์ ์์ ๋ฐ ์นด๋ CUD ๋ฐ ๋๋ฉ์ธ ๊ด๋ จ ํ ์คํธ ์ถ๊ฐ * refactor: Workbook null ํ์ฉํ๋๋ก ๋ณ๊ฒฝ ๋ฐ ์์ ์ํฌ๋ถ ์ ๊ฑฐ * etc: jenkins ํ ์คํธ ์ปค๋ฐ * feat: ์นด๋ ์ญ์ ์ ๋ฌธ์ ์ง์์๋ ์ญ์ ๋๋๋ก ๋ณ๊ฒฝ * fix: ์นด๋ ์ญ์ ์ workbook์ด ๋์ผ ๋ ์กฐ๊ฑด ์ถ๊ฐ ๋ฐ C07 ๋ฐ์ ์๋ ๋ณ๊ฒฝ์ฌํญ ์ถ๊ฐ (#273) * feat: ๋ฐ๋ก ํ์ด๋ณด๊ธฐ ๊ธฐ๋ฅ ๋ฐ ๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ UI๋ฅผ ๊ตฌํํ๋ค (#276) * etc: ํ๊ฒฝ์ค์ - react-refresh - fort-ts-checker-webpack-plugin Co-authored-by: dudtjr913 <[email protected]> * etc: ํ๊ฒฝ์ค์ - babel.config.js ์ ๋ฆฌ Co-authored-by: dudtjr913 <[email protected]> * feat: ๋ฐ๋ก ํ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ * etc: cross-env ์ถ๊ฐ - QuizPage์์ผ๋ก Header ์ด๋ Co-authored-by: Kyle <[email protected]> * fix: ๋ฌธ์ ์ง์ด ์์ ๊ฒฝ์ฐ ํด์ฆ ์ค์ ํ์ด์ง๋ก ์ด๋ ๋ชปํ๋๋ก ๋ณ๊ฒฝ Co-authored-by: Kyle <[email protected]> * feat: SelectBox ์ปดํฌ๋ํธ ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * feat: SelectBox Modal UI ๊ตฌํ ์๋ฃ Co-authored-by: Kyle <[email protected]> * etc: ํ์ดํ๋ผ์ธ ์์ ๋ณ๊ฒฝ - test ํ build Co-authored-by: Kyle <[email protected]> Co-authored-by: imgwang-yeol <[email protected]> * fix: http-file-appender.xml ์คํ ์์ * fix: ์คํ๋ง ์ฌ์์์ ๋ก๊ทธ ํ์ผ ์ ๋ชฉ์ ๋ ์ง ํฌํจ๋๋๋ก ์์ (#278) * feat: ๋ค์์ ๋ ๋ณด๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ (#280) Co-authored-by: dudtjr913 <[email protected]> * fix: ํด์ฆ ์์ฑ์ ๋ ๋ณด๊ธฐ ์ทจ์ ๊ธฐ๋ฅ ์ค์๋ ์์ * etc: application ์ค์ ์์ ๋ก๊น ์ค์ ์ ๊ฑฐ (#282) * feat: ๋ด ๋ฌธ์ ์ง์ผ๋ก ๊ฐ์ ธ๊ฐ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค (#284) * etc: import ์ ๋ฆฌ Co-authored-by: dudtjr913 <[email protected]> * feat: ๋ฌธ์ ์ง์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ Co-authored-by: dudtjr913 <[email protected]> * fix: ์ ์ฒด์ ์ธ ์ฝ๋ ํ๋ฆ ๋ณ๊ฒฝ Co-authored-by: Kyle <[email protected]> Co-authored-by: imgwang-yeol <[email protected]> * F18 - ์ ์ฒด์ ์ธ ๋์์ธ ๋ฆฌํฐ์น (#286) * feat: ๊ฒ์ ์ค ๊ฐ๊ตฌ๋ฆฌ ์ด๋ฏธ์ง ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * feat: PublicCardLoadable ๊ตฌํ Co-authored-by: dudtjr913 <[email protected]> * etc: textarea ํฌ์ปค์ค ์ ์ฉ Co-authored-by: dudtjr913 [email protected] [email protected] <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * W09 - ๋ฌธ์ ์ง์ผ๋ก ์นด๋ ๊ฐ์ ธ๊ฐ๊ธฐ (#267) * fix&feat: CardUpdate ์ 2๊ฐ ์ถ๊ฐ๋๋ ๋ฒ๊ทธ ์์ ๋ฐ ๋ก๊ทธ์ธํ ํ์๋ง ์นด๋ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ ๊ตฌํ * feat&test: ์นด๋ ์์ , ์ญ์ ๊ธฐ๋ฅ์ ๋ก๊ทธ์ธ ์ฌ์ฉ์๋ง ๊ฐ๋ฅํ๋๋ก ๊ตฌํ ๋ฐ ํ ์คํธ * refactor&test: soft delete ๋ฐฉ์ ์์ ๋ฐ ์นด๋ CUD ๋ฐ ๋๋ฉ์ธ ๊ด๋ จ ํ ์คํธ ์ถ๊ฐ * feat: ๋ด ๋ฌธ์ ์ง์ผ๋ก ์นด๋ ๊ฐ์ ธ์ค๊ธฐ ๊ธฐ๋ฅ ์ด์ ๊ตฌํ * refactor: Workbook null ํ์ฉํ๋๋ก ๋ณ๊ฒฝ ๋ฐ ์์ ์ํฌ๋ถ ์ ๊ฑฐ * feat: Card ๋ณ๊ฒฝ์ฌํญ ๋ฐ์ * refactor: workbook์์ ์นด๋๋ฅผ ์ถ๊ฐํ๋๋ก ์์ * refactor: scrapCard ๋ฉ์๋ ์์ * refactor&test: ๋ฉ์๋ ๋ถ๋ฆฌ ๋ฐ ํ ์คํธ ์ถ๊ฐ * test: ๋ฌธ์ ์ง์ผ๋ก ์นด๋ ๊ฐ์ ธ์ค๊ธฐ ๊ด๋ จ ํ ์คํธ ๊ตฌํ * fix: ํ ์คํธ ๋ฉ์๋๋ฅผ delete -> post๋ก ์์ * feat: ํผ์ผ์ด, ์ค์ฆ ๋ฆฌ๋ทฐ ๋ฐ์ ๋ฐ DataLoader ์ด๋๋ฏผ์ ์ profile url ๋ณ๊ฒฝ * refactor: ๋ฌธ์ ์ง์ผ๋ก ์นด๋ ๊ฐ์ ธ์ค๊ธฐ ์๋ต ๋ณ๊ฒฝ * refactor: ์นด๋ ์คํฌ๋ฉ ์ ์นด๋ ์์ด๋์ ๋ํ ๊ฒฝ์ฐ์ ์ ์ถ๊ฐ ๋ฐ ํ ์คํธ ์ถ๊ฐ * test: ์์ฒญ์ด ๋น์ด์๋ ๊ฒฝ์ฐ์ ๋ํ ํ ์คํธ ์ถ๊ฐ * refactor: ํผ์ผ์ด ๋ฆฌ๋ทฐ ๋ฐ์ ๋ฐ ํ ์คํธ ์ถ๊ฐ * W10 - ๋ฌธ์ ์ง ์ญ์ ์ ๊ฐ์ง๊ณ ์๋ ์นด๋๋ ์ญ์ ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์ฝ๋ ์ผ๋ถ๋ฅผ ๋ฆฌํฉํฐ๋งํ๋ค. (#271) * refactor: WorkbookService ๋ด ๋ฉ์๋ ๋ถ๋ฆฌ * feat: ๋ฌธ์ ์ง ์ญ์ ์ ์นด๋๋ ์ญ์ ๋๋๋ก ์์ * refactor: ์์ฑ์ ๊ฒ์ฆ ๋ก์ง์ ์๋น์ค๋ก ์ด๋ ๋ฐ ํ ์คํธ ์์ * refactor: ๋ฌธ์ ์ง ์ญ์ ์ ์นด๋ ์ญ์ ํ ์คํธ ์ถ๊ฐ ๋ฐ ๊ด๋ จ ๋ฉ์๋ ์์ * refactor: ๋ฌธ์ ์ง ์์ฑ api created uri ๋ณ๊ฒฝ * refactor: ํผ์ผ์ด ๋ฆฌ๋ทฐ ๋ฐ์ * refactor: ์ค๊ฐ๊ณฐ ๋ฆฌ๋ทฐ ๋ฐ์ * refactor: ํ์์๋ ๋ฉ์๋ ์ญ์ ๋ฐ ๋ฉ์๋๋ช ์์ * refactor: ๋ผ์ฐํฐ ์ ๋ฆฌ (#290) Co-authored-by: dudtjr913 <[email protected]> * etc: react-ga ์ถ๊ฐ (#293) Co-authored-by: Kyle <[email protected]> * etc: ์๋ธ๋ชจ๋ ์ ๋ฐ์ดํธ Co-authored-by: Kyle <[email protected]> * etc: main.js ํ์ผ ์ด๋ฆ ๋ฒ์ ์ ๋ง๋๋ก ๋ณ๊ฒฝ * T01 - ๋ฌธ์ ์ง CRUD์ ํ๊ทธ ์ถ๊ฐ (#275) * feat: TagName ๋๋ฉ์ธ ์์ฑ * feat: TagNames ๋๋ฉ์ธ ์์ฑ * feat: ํ๊ทธ ์ํฐํฐ ์์ฑ * feat: TagRepository ์ถ๊ฐ * feat: Tag ์์ฑ ์ null ๊ฒ์ฆ ์ถ๊ฐ * feat: ๋ฌธ์ ์ง๊ณผ ํ๊ทธ์ n:m ๊ด๊ณ์ ์ค๊ฐ ํ ์ด๋ธ ์์ฑ ๋ชฉ์ ์ผ๋ก WorkbookTag ์ํฐํฐ ์ถ๊ฐ * feat: ๋ฌธ์ ์ง ์์ ์ฐ์ด๋ DTO์ ํ๊ทธ ๊ด๋ จ ํ๋ ๋ฐ ๊ฒ์ฆ ์ถ๊ฐ * feat: Tag๋ฅผ String์ผ๋ก ์์ฑํ๋ ํฉํ ๋ฆฌ ๋ฉ์๋ ์ถ๊ฐ * feat: TagService ์ถ๊ฐ * feat: ์์ฑ์ ์ธ์๋ฅผ ํ๋์ ๊ฐ์ ํ์ ์ผ๋ก ์์ , null ํ ์คํธ ์ถ๊ฐ * feat: ์์ธ ๋ฉ์์ง ์์ * feat: Tags ๋ถ๋ฆฌ * feat: ๋ฌธ์ ์ง ์ถ๊ฐ์ ํจ๊ป ํ๊ทธ๋ ์ถ๊ฐ * feat: ๋ฌธ์ ์ง ์์ ๊ณผ ์ญ์ ์ ํ๊ทธ ์ถ๊ฐ * feat: ๋ฌธ์ํ ํ ์คํธ ์์ * etc: import ์ ๋ฆฌ * etc: ddl, dml, DataLoader ์ถ๊ฐ * etc: ํ ์ด๋ธ ์์ฑ ์ ํ๋ ์ด๋ฆ name์ผ๋ก ์์ฑ๋๊ฒ ๋ณ๊ฒฝ * feat: WorkbookTagRepository ์ถ๊ฐ * test: Workbook ์ถ๊ฐ, ์ญ์ ์ WorkbookTag ์ Tag์ cascade์ ๋ํ ํ ์คํธ ์ถ๊ฐ * test: ๋ฌธ์ ์ง ์์ ์์ฒญ์์ opened ํ๋๊ฐ ์๋ ๊ฒฝ์ฐ ํ ์คํธ ์ถ๊ฐ * refactor: ํตํฉ ํ ์คํธ์์ ๋ฐ์ดํฐ ๋ก๋๊ฐ ์คํ๋์ด ์ถ๊ฐ * refactor: TagService๋ก TagRequest๋ฅผ ์ ๋ฌํ๋๋ก ์์ , TagNames ์ญ์ ์ค๋ณต ์ ๊ฑฐ ๋ก์ง์ converTags ๋ฉ์๋๋ก ์์ * feat: WorkbookTag ์ํํธ ๋๋ฆฌํธ๋ก ์์ * feat: ์กฐ์ค ๋ฆฌ๋ทฐ ๋ฐ์ (from -> of, new ArrayList<>() ์ญ์ ) * fix: Post ์์ฒญ์ tags๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด ๋ฐ์ํ๋ ์๋ฌ ์์ * fix: ๋ฌธ์ ์ง api ์์ (#296) Co-authored-by: Kyle <[email protected]> * W13 - ๊ณต์ ๋ฌธ์ ์ง ์์ธ๋ณด๊ธฐ api๋ฅผ ๊ตฌํํ๋ค. (#295) * feat: TagName ๋๋ฉ์ธ ์์ฑ * feat: TagNames ๋๋ฉ์ธ ์์ฑ * feat: ํ๊ทธ ์ํฐํฐ ์์ฑ * feat: TagRepository ์ถ๊ฐ * feat: Tag ์์ฑ ์ null ๊ฒ์ฆ ์ถ๊ฐ * feat: ๋ฌธ์ ์ง๊ณผ ํ๊ทธ์ n:m ๊ด๊ณ์ ์ค๊ฐ ํ ์ด๋ธ ์์ฑ ๋ชฉ์ ์ผ๋ก WorkbookTag ์ํฐํฐ ์ถ๊ฐ * feat: ๋ฌธ์ ์ง ์์ ์ฐ์ด๋ DTO์ ํ๊ทธ ๊ด๋ จ ํ๋ ๋ฐ ๊ฒ์ฆ ์ถ๊ฐ * feat: Tag๋ฅผ String์ผ๋ก ์์ฑํ๋ ํฉํ ๋ฆฌ ๋ฉ์๋ ์ถ๊ฐ * feat: TagService ์ถ๊ฐ * feat: ์์ฑ์ ์ธ์๋ฅผ ํ๋์ ๊ฐ์ ํ์ ์ผ๋ก ์์ , null ํ ์คํธ ์ถ๊ฐ * feat: ์์ธ ๋ฉ์์ง ์์ * feat: Tags ๋ถ๋ฆฌ * feat: ๋ฌธ์ ์ง ์ถ๊ฐ์ ํจ๊ป ํ๊ทธ๋ ์ถ๊ฐ * feat: ๋ฌธ์ ์ง ์์ ๊ณผ ์ญ์ ์ ํ๊ทธ ์ถ๊ฐ * feat: ๋ฌธ์ํ ํ ์คํธ ์์ * etc: import ์ ๋ฆฌ * etc: ddl, dml, DataLoader ์ถ๊ฐ * etc: ํ ์ด๋ธ ์์ฑ ์ ํ๋ ์ด๋ฆ name์ผ๋ก ์์ฑ๋๊ฒ ๋ณ๊ฒฝ * feat: WorkbookTagRepository ์ถ๊ฐ * test: Workbook ์ถ๊ฐ, ์ญ์ ์ WorkbookTag ์ Tag์ cascade์ ๋ํ ํ ์คํธ ์ถ๊ฐ * test: ๋ฌธ์ ์ง ์์ ์์ฒญ์์ opened ํ๋๊ฐ ์๋ ๊ฒฝ์ฐ ํ ์คํธ ์ถ๊ฐ * refactor: ํตํฉ ํ ์คํธ์์ ๋ฐ์ดํฐ ๋ก๋๊ฐ ์คํ๋์ด ์ถ๊ฐ * refactor: TagService๋ก TagRequest๋ฅผ ์ ๋ฌํ๋๋ก ์์ , TagNames ์ญ์ ์ค๋ณต ์ ๊ฑฐ ๋ก์ง์ converTags ๋ฉ์๋๋ก ์์ * feat: WorkbookTag ์ํํธ ๋๋ฆฌํธ๋ก ์์ * feat: ์กฐ์ค ๋ฆฌ๋ทฐ ๋ฐ์ (from -> of, new ArrayList<>() ์ญ์ ) * feat: ์ธํฐ์ ํฐ ํต๊ณผํ์ง ์๋ ๊ณต์ ๋ฌธ์ ์ง ์กฐํ ๊ฒฝ๋ก ์ถ๊ฐ * feat: ์ํฉ์ ๋ฐ๋ฅธ ๋ค๋ฅธ ์ ๋ณด๋ฅผ ๋ด๊ธฐ ์ํด CardResponse์ JsonInclude ์ถ๊ฐ * feat: ๊ณต์ ๋ฌธ์ ์ง ์์ธ์กฐํ api ๊ตฌํ * test: ๊ณต์ ๋ฌธ์ ์ง ์์ธ์กฐํ api ํ ์คํธ ์ถ๊ฐ * refactor: WorkbookCardResponse ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋ ์ถ๊ฐ * feat: ๊ณต์ ๋ฌธ์ ์ง ์์ธ๋ณด๊ธฐ api ๋ฌธ์ํ ๋ฐ ์์ฒญ ์ ๋ณด ์ถ๊ฐ * refactor: WorkbookCardResponse ์ ํ๊ทธ ์๋ต ํ๋ ์ด๋ฆ ๋ณ๊ฒฝ Co-authored-by: seunghyun <[email protected]> * etc: ddl, dml ๋ณ๊ฒฝ * refactor: ์ ์ฒด์ ์ธ ๋์์ธ ์์ ๋ฐ ๋ฒ๊ทธ ํด๊ฒฐ (#299) Co-authored-by: Kyle <[email protected]> * fix: ๊ณต์ ํ์ด์ง์ ํน์ ์์ ์ ์บ์ฑ ๋ฌดํจํ Co-authored-by: Kyle <[email protected]> * etc: ๋ฒ์ 0.2.0 ์ ๋ฐ์ดํธ Co-authored-by: Kyle <[email protected]> * C09 - ๋ก๊ทธ์ธํ ํ์๋ง ๋ค์์ ๋๋ณด๊ธฐ ๊ฐ๋ฅํ๋๋ก API ์์ (#288) * feat&test: ๋ก๊ทธ์ธํ ์ฌ์ฉ์๋ง ๋ค์์ ๋๋ณด๊ธฐ ๊ฐ๋ฅํ๋๋ก ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ํ ์คํธ * etc: ์คํ ์์ * etc: ์๋ธ๋ชจ๋ ์ ๋ฐ์ดํธ * etc: ๋ก๊ทธ์ธ oauth ์ ๋ณด botobo-team ์ ๋ณด๋ก ๊ต์ฒด (#306) * refactor: ๋ชจ๋ฌ ๊ด๋ จ ์ด์ ์ ๋ฆฌ (#309) - ์นด๋ ์ถ๊ฐ, ์์ - selectbox Co-authored-by: dudtjr913 <[email protected]> * refactor: ์๊ท๋ชจ ๋ฆฌํฉํ ๋ง (#317) * etc: ์ถฉ๋ ํด๊ฒฐ * refactor: CardsPage ๋ฆฌํฉํ ๋ง - cardInfo ์ง์ญ ์ํ๋ก ๋ณ๊ฒฝ Co-authored-by: Kyle <[email protected]> * refactor: ์ ์ญ ์ํ -> ์ง์ญ ์ํ๋ก ๋ณ๊ฒฝ - publicCardState Co-authored-by: dudtjr913 <[email protected]> * etc: xmldom ์ทจ์ฝ์ฑ ํด๊ฒฐ Co-authored-by: Kyle <[email protected]> Co-authored-by: seovalue <[email protected]> Co-authored-by: Kyle <[email protected]> * refactor: ํ์ด์ง ํค๋ -> ๋ฉ์ธ ํค๋ ๊ต์ฒด (#319) Co-authored-by: Kyle <[email protected]> * refactor: ๋๊ท๋ชจ ๋ฆฌํฉํ ๋ง (#321) * refactor: ๋ฆฌํฉํ ๋ง - cardform autofocus - workbookadd ๋น ํ๊ทธ ์ ๋ ฅ ์ค๋ฅ ์์ - route ๊ฒฝ๋ก ์ ๋ฆฌ - ๋ก๋ฉ ์ ๋๋ฉ์ด์ ์์ Co-authored-by: dudtjr913 <[email protected]> * feat: ๋ด ๋ฌธ์ ์ง์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ default option ๊ตฌํ Co-authored-by: dudtjr913 <[email protected]> * C10 - ๋ ๋ณด๊ธฐ ์นด๋ ๋ฑ๋ก ๊ด๋ จ ํ ์คํธ ๋ฆฌํฉํ ๋ง์ ํ๋ค. (#303) * test: ํด์ฆ๋ฅผ ์ํ ์นด๋์ ๋๋ณด๊ธฐ ์ต์ ์ด false ๋ก ๋ฐ๋์๋์ง ํ์ธํ๋ค * etc: ์นดํ ๊ณ ๋ฆฌ ๊ด๋ จ ๋ด์ฉ ์์ * etc: import.sql ์ ๊ฑฐ * fix: ๋ ๋ณด๊ธฐ ํฌํจ ํด์ฆ ์์ฑ ์ธ์ ํ ์คํธ ๋ฒ๊ทธ ์์ * etc: ์กฐ์ค ๋ฆฌ๋ทฐ ๋ฐ์ ๋ฐ ํด์ฆ ์์ฒญ ์ ๋ณด Host ๋ณ๊ฒฝ * W11, W12, W14 - ์์ ์ ๋ฌธ์ ์ง๋ง ์นด๋ ๋ชจ์๋ณด๊ธฐ ์ถ๊ฐ ๋ฐ ๋ฌธ์ ์ง ์ธ์ํ ์คํธ ๋ฆฌํฉํฐ๋ง (#307) * feat: ์นด๋ ๋ชจ์๋ณด๊ธฐ์์ ์์ ์ ๋ฌธ์ ์ง๋ง ๋ณผ ์ ์๋๋ก ์์ * refactor: ๋ฌธ์ ์ง ์ธ์ํ ์คํธ ์ ์ฒด ๋ฆฌํฉํฐ๋ง * docs: ๋ฌธ์ ์ง ๊ฐ์ ธ์ค๊ธฐ asciidoc ์ถ๊ฐ * refactor: ํผ๋๋ฐฑ ๋ฐ์ * refactor: ์ค๊ฐ๊ณฐ ํผ๋๋ฐฑ ๋ฐ์ * B38 - RequestBuilder ๋ฆฌํฉํ ๋ง (#310) * refactor: RequestBuilder ๋ฆฌํฉํ ๋ง ๋ฐ ์ฌ์ฉํ์ง ์๋ ํด๋์ค ์ ๊ฑฐ * etc: DocumentationUtils host๋ฅผ botobo.kro.kr๋ก ๋ณ๊ฒฝ * refactor: PK ๋ฆฌ๋ทฐ ๋ฐ์ * refactor: parameter ์์ด ์ฌ์ฉํ๋ ์ ์ ์์ ํ ์คํธ ์ ์ฌ์ฉํ๋ auth๋ฅผ failAuth๋ก ๋ช ์นญ ๋ณ๊ฒฝ * etc: requestBuilder ์ค๋ช ์ถ๊ฐ * refactor: ๋ฌธ์ ์ง ๊ฐ์ ธ๊ฐ๊ธฐ์์ [๊ณต์ ] ์ถ๊ฐ (#324) Co-authored-by: Kyle <[email protected]> * etc: submodule ๋๊ธฐํ * B41 - ๊ฒฝ๋ก์ HttpMethod๋ฅผ ์ด์ฉํด ์ธํฐ์ ํฐ ์ค์ ๊ฐ๋ฅํ๋๋ก ์์ ๋ฐ /api/workbooks ๊ฒฝ๋ก๋ฅผ ์ธํฐ์ ํฐ์ ์ถ๊ฐํ๋ค. (#322) * feat: ๊ฒฝ๋ก์ HttpMethod๋ก interceptor ์ค์ ๊ฐ๋ฅํ๋๋ก ๊ตฌํ * refactor: ํผ๋๋ฐฑ ๋ฐ์ * test: PathMatcherInterceptor ๊ด๋ จ ํ ์คํธ ์ถ๊ฐ * feat: ํด์ฆ ํ์ด์ง์ ์นด๋ ์ฌ๋ผ์ด๋๋ฅผ ๊ตฌํํ๋ค (#326) * feat: ์นด๋ ์ฌ๋ผ์ด๋ ๊ธฐ๋ฅ ๊ตฌํ * fix: ์นด๋ ์์ง์ด๋ ์๊ฐ 0.1์ด๋ก ์์ * Q15 - ํด์ฆ ์ค์ ์ ํด์ฆ ๊ฐ์๋ฅผ ์ถ๊ฐํ๋ค. (#316) * feat&test: Quiz ์์ฑ ์ ํ์์ธ์ง ํ์ธ ๋ฐ ํด์ฆ ์์ฒญ์ ๊ฐ์ ์ถ๊ฐ * etc: develop ๋ณ๊ฒฝ์ฌํญ ๋ฐ์ * feat: ๋ด ์ํฌ๋ถ์์ ์์ฑ๋ ํด์ฆ์ธ์ง ๊ฒ์ฆ ์ถ๊ฐ * feat: ๋ฉ์ธ ํค๋์ ๋ฉ๋ด๋ฅผ ๊ตฌํํ๋ค (#330) * feat: ๋๋กญ๋ค์ด ๋ฉ๋ด ๊ตฌํ * feat: LogoutPage ๊ตฌํ * etc: ๋ฆฌ๋ทฐ ๋ฐ์ - ์ปจ๋ฒค์ - role naming - ์ ๋๋ฉ์ด์ ์๋ * etc: ์๋ธ๋ชจ๋ ๋๊ธฐํ * feat: ์ ์ ์ ๋ง์ด ํ์ด์ง๋ฅผ ๊ตฌํํ๋ค (#333) * etc: ํ์์๋ import ๊ตฌ๋ฌธ ์ ๋ฆฌ * feat: ์ ์ ํ๋กํ ํ์ด์ง ๊ตฌํ * etc: ImageEditor ์์น ๊ณ ์ * feat: TextField ์ถ๊ฐ * fix: z-index ์ค๋ฅ ์์ * etc: ํ์์๋ css ์์ฑ ์ ๊ฑฐ * etc: ์๋ธ๋ชจ๋ ๋๊ธฐํ * U06 - ๋ง์ดํ์ด์ง ํ๋กํ ์ฌ์ง ์์ api ๊ตฌํ (#332) * feat: ๋ด ์ ๋ณด ์์ api ๋ผ๋ ์ฝ๋ ์์ฑ * feat: S3 ํ์ผ ์ ๋ก๋ ๊ธฐ๋ฅ ๊ตฌํ * feat: Multipartfile ์ ๋ก๋ ๊ด๋ จ ์ค์ ์ถ๊ฐ * feat: FileNameGenerator์ BASE DIR์ถ๊ฐ ๋ฐ ์๋ต ๋ฐํํ๋๋ก ์์ * feat: ์๋ธ๋ชจ๋ ์์ ๋ฐ build.gradle ์ ๋ฐ์ดํธ * etc: ์๋ธ๋ชจ๋ ์์ ๋ฐ์ * Merge develop into feature/U06-B * feat: S3Uploader, FileNameGenerator url ๋ฃจํธ ๋ณ๊ฒฝ * feat: S3 ๊ด๋ จ ์์ธ ํด๋์ค ์ถ๊ฐ ๋ฐ ํธ๋ค๋ง * etc: ํ ์คํธ์ ํ์ํ ๋ฆฌ์์ค ํ์ผ ์ถ๊ฐ * test&feat: S3 ํ ์คํธ๋ฅผ ์ํ ์ค์ ํ์ผ ์ถ๊ฐ ๋ฐ ํ ์คํธ ๊ตฌํ * etc: ์ฝ๋ ํฌ๋งทํ * feat: 10MB ์ด์์ ํ์ผ ์์ฒญ ์ ์์ธ์ฒ๋ฆฌ ๊ตฌํ * etc: ์๋ธ๋ชจ๋ ์ ๋ฐ์ดํธ * etc: Merge develop into feature/U06-B * feat&test: MultipartFile์ด ๋น์ด์๊ฑฐ๋ ์๋ ๊ฒฝ์ฐ ๋ํดํธ ์ด๋ฏธ์ง๋ก ๋์ฒด * etc: println ์ญ์ * refactor: ๋ถํ์ํ ์ฃผ์ ์ญ์ ๋ฐ ์ค์ฆ ๋ฆฌ๋ทฐ ๋ฐ์ * feat: ์ค๊ฐ๊ณฐ ๋ฆฌ๋ทฐ ๋ฐ์ * feat: ๊ฒ์ ํ์ด์ง UI ๋ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค (#334) * feat: ๊ณต์ ๊ฒ์ ํ์ด์ง ๋ผ์ฐํ ๊ธฐ๋ฅ ๊ตฌํ * refactor: ๊ณต์ ๋ฌธ์ ์ง ํ์ด์ง ์ญ์ * feat: util type ์ถ๊ฐ - ValueOf: ๊ฐ์ฒด์ value๋ฅผ ํ์ ์ผ๋ก ์ง์ ํด์ฃผ๋ ์ญํ * feat: ๊ฒ์ ๊ธฐ๋ฅ api์ ์ฉ * feat: searchState ํ์ผ ์ถ๊ฐ - search ๊ด๋ จ recoil(atom) ๋ชจ์ * feat: ํ๊ทธ, ์์ฑ์ ๊ฒ์ UI ๋ฐ ๊ธฐ๋ฅ ๊ตฌํ * refactor: ๊ฒ์ ์ปดํฌ๋ํธ์ ํ์ฅ์ฑ์ ์ํด ์ ์ฐํ๊ฒ ๋ณ๊ฒฝ * refactor: ๋ณ์ ์ด๋ฆ ๋ณ๊ฒฝ ๋ฐ ์ถ์ํ๋ searchResponse ์ ๊ฑฐ - response๋ผ๋ ์ด๋ฆ์ด ์ ์ ํ์ง ์์ ๊ฒ ๊ฐ์์ result๋ก ๋ณ๊ฒฝ - searchResponse์์ ๋ ๊ฐ์ง์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ณด๋ ํ์ฅ์ฑ์ด ์ด๋ ต๊ณ , ํ์ ๊ฐ๋๋ฅผ ํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์ ๋ณ๊ฒฝ * feat: ๊ณต์ ๋ฌธ์ ์ง ํ์ด์ง ์ถ๊ฐ * feat: ๊ณต์ ๋ฌธ์ ์ง ํํฐ ๊ธฐ๋ฅ ์ถ๊ฐ ๊ตฌํ * fix: ๊ฒ์ํ ๋ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ด์ง ์๋๋ก ์์ * fix: ํค์๋๊ฐ ์ ๋ ฅ๋์ง ์์์ ๋ api ์์ฒญ ๋ณด๋ด๋ ๋ฒ๊ทธ ์์ * fix: ๊ณต์ ๋ฌธ์ ์ง ํ์ด์ง์ ์ฒซ ๋๋๋ง ์ ๋๊ธฐํ๊ฐ ๋์ง ์๋ ๋ฒ๊ทธ ํด๊ฒฐ * feat: intersection Observer ์ ์ฉ - ์ธํผ๋ํฐ ์คํฌ๋กค * refactor: ๊ณต์ ๋ฌธ์ ์ง ์ปดํฌ๋ํธ๋ก intersection ์ด๋ - ๊ณต์ ๊ฒ์ ํ์ด์ง์ ๊ณต์ ๋ฌธ์ ์ง ํ์ด์ง ๋ ๊ตฐ๋ฐ์์ ์ฌ์ฉํด์ผ ํ๊ธฐ์ ๋์ ๊ณตํต์ ์ธ ๊ณต์ ๋ฌธ์ ์ง ์ปดํฌ๋ํธ๋ก ์ด๋ * refactor: keyword, type์ recoil์์ ๊ฐ์ ธ๋ค๊ฐ ์ฐ๋๋ก ๋ณ๊ฒฝ - onClickItem ์ญ์ , ์ด์ ๋ ํ์ํ์ง ์์ ์ ๋ณด์๊ธฐ ๋๋ฌธ - ๊ฒ์ ํ ๋ค๋ก๊ฐ๊ธฐ๋ฅผ ํ์ ๋, ํด๋น ํญ์ด ์ ์ง๋๋๋ก ๋ณ๊ฒฝ * refactor: ๊ฒ์ ํ ๋ค์ ๋์์์ ๋, ๋ฐ์ดํฐ๊ฐ ๋ณด์กด๋๋๋ก ๋ณ๊ฒฝ * fix: ๋ฌดํ ์คํฌ๋กค ๋ฒ๊ทธ ์์ ๋ฐ startIndex 1์ฉ ์ฆ๊ฐํ๋๋ก ๋ณ๊ฒฝ * fix: ํค์๋์ ์ ๋ชฉ์ผ๋ก ๊ฒ์ํ ์ ์๋๋ก ์์ - ๊ฒ์ ํ์ด์ง์ ๋ค์ด์์ ๋ ํญ์ ๊ฒ์์ด๊ฐ ์ด๊ธฐํ๋๋๋ก ๋ณ๊ฒฝ - ๊ฒ์ ์๋ ์ค์ผ ๋ loading true๋ก ๋ณ๊ฒฝ * fix: ํํฐ๋ง ๋ฒํผ ํด๋ฆญ ์ ์ด์ ๋ฐ์ดํฐ ๋์ ๋๋ ๋ฒ๊ทธ ํด๊ฒฐ * refactor: ์ข์์ like => heart ๋ณ๊ฒฝ * feat: ๊ณต์ ๋ฌธ์ ์ง ํ์ด์ง ์ค์ผ๋ ํค ๊ตฌํ * fix: searchKeyword๊ฐ ์ธํ ๋๊ธฐ ์ ์ ๋ผ์ฐํ ํ๋ ๋ฌธ์ ํด๊ฒฐ * fix: ๊ณต์ ๋ฌธ์ ์ง ํ์ด์ง ์ค์ผ๋ ํค์ title height ์์ * refactor: ๋ก๋ฉ์ setํ๋ ๋ถ๋ถ์ ํ์ด์ง๋ก ์์ * fix: ์ฌ์ฉํ์ง ์๋ snackbar ์ญ์ * refactor: PublicWorkbook => PublicSearchResultPage * etc: eol ํด๊ฒฐ * refactor: Intersection Observer์ entries =>[entry] * fix: MainHeader์ z-index ์ถ๊ฐ * fix: ํํฐ ํด๋ฆญ ์ startIndex๊ฐ ์ฆ๊ฐํ๋ ๋ฒ๊ทธ ์์ * refactor: query๋ก ์๋ก๊ณ ์นจ ์์๋ ๊ฒ์์ด ๊ฐ๋ฅํ๋๋ก ๋ณ๊ฒฝ * refactor: searchForKeyword ๋ถ๋ฆฌ * etc: ๋ณ์ ๋ช ๋ณ๊ฒฝ searchInfo => searchInfos * fix: input์ ๊ฐ ์ ๋ ฅ ์ start๊ฐ 0์ผ๋ก ๋์ง ์๋ ๋ฒ๊ทธ ์์ * feat: ๊ฒ์ ์ฐฝ sticky ์์ฑ ์ ์ฉ * etc: ์ฝ์๋ก๊ทธ ์ญ์ * W15 - ์ ์ ๋ง๋ค ๋ฌธ์ ์ง์ ํํธ๋ฅผ ๋๋ฅด๊ณ ์ทจ์ํ ์ ์๋ ํ ๊ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. (#336) * feat: Heart ์ํฐํฐ ์์ฑ * feat: Hearts ์ผ๊ธ์ปฌ๋ ์ ์์ฑ * feat: Workbook์ Heart ์ฐ๊ฒฐ * feat: WorkbookService์ ํํธ ํ ๊ธ ๊ธฐ๋ฅ ์ถ๊ฐ * feat: ์ข์์์ ๊ฒฐ๊ณผ์ธ HeartResponse ๋ฐํํ๋ ๊ธฐ๋ฅ ์ถ๊ฐ * feat: ํํธ ํ ๊ธ api ์ถ๊ฐ * feat: heartCount ์ถ๊ฐ์ ๊ทธ์ ๋ฐ๋ฅธ ํ ์คํธ ์ถ๊ฐ, ๋ณ๊ฒฝ * feat: ๊ณต์ ๋ฌธ์ ์ง ์์ธ ์กฐํ์๋ heartCount ๋์ค๋๋ก ์ถ๊ฐ * feat: ๊ณต์ ๋ฌธ์ ์ง ์์ธ์กฐํ api ์์ - ํด๋น api๋ฅผ ์ฌ์ฉํ๋ ์ ์ ๊ฐ ํด๋น ๋ฌธ์ ์ง์ ํํธ๋ฅผ ๋๋ ๋์ง ์ฌ๋ถ๋ฅผ ์๋ ค์ฃผ๋ heart ํ๋ ์ถ๊ฐ * refactor: ๋ฌธ์ํ ํ ์คํธ์์ botobo.access.token์ ์ฌ์ฉํ๋ ์์ฒญ์ด AppUser๋ฅผ ๋ง๋ค์ด ๋ด๋๋ก findAppUserByToken ๋ฉ์๋๋ฅผ ๋ชจํน // ๋ฌธ์ ์ง ๋ฌธ์ํ ํ ์คํธ์ ์ ์ฉ * feat: Token์ ์ ๋ ฅํ์ง ์์ ๊ฒฝ์ฐ ๋นํ์์ผ๋ก ๋ฐํํ๋๋ก ๋ชจํน * feat: ํ ์คํธ์์ body๊ฐ ์๋ ์์ฒญ์ ์์๋ก DummyRequest๋ฅผ ์ฌ์ฉํ๋ ๋์ putWithoutBody ๋ฉ์๋๋ฅผ ์ฌ์ฉ * etc: heart ddl ์ถ๊ฐ * refactor: ๋นํ์์ด ๊ณต์ ๋ฌธ์ ์ง ์์ธ ์กฐํ๊ฐ ๊ฐ๋ฅํ๋๋ก ๋ณ๊ฒฝ * etc: build ์ copyDev๊ฐ ์คํ๋๋๋ก ๋ณ๊ฒฝ * feat: ์นด๋ ์์ธ ํ์ด์ง์ ํํธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค (#340) * feat: ํํธ ๊ธฐ๋ฅ ๊ตฌํ * fix: ํํธ ํ ๊ธ ๋ก์ง ๋ณ๊ฒฝ * feat: ์นด๋ ์ฌ๋ผ์ด๋ ๋ฉ์์ง๊ฐ ๋ชจ๋ฐ์ผ์์๋ง ๋ณด์ด๋๋ก ์์ ํ๋ค (#348) * feat: ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ํ์ธ ๊ธฐ๋ฅ ์ถ๊ฐ * fix: ๋นํ์์ธ ๊ฒฝ์ฐ key๊ฐ 0์ธ ๋ฒ๊ทธ ์์ * fix: isMobile ๋ก์ง ๋ณ๊ฒฝ ๋ฐ GUEST์ผ ๋ id๊ฐ ์ค์ * fix: ๊ฐํ ๋ฐ ๋์ด์ฐ๊ธฐ ์ ์ง๋๋๋ก ๋ณ๊ฒฝ (#352) * U07 - ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ค (#337) * refactor: OauthManager ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ๋ฐ ์์ ๋ก๊ทธ์ธ ์ฝ๋ ๋ฆฌํฉํฐ๋ง * feat: ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * refactor: interceptor url ์์ ๋ฐ import ๋ณ๊ฒฝ * refactor: ํผ๋๋ฐฑ ๋ฐ์ * refactor: ๋ฉ์๋๋ช ์์ ๋ฐ ํ์์๋ ์ฝ๋ ์ญ์ * etc: ์๋ธ๋ชจ๋ ๋๊ธฐํ * feat: ๋ง์ดํ์ด์ง์ ์ ๋ณด๋ฅผ ์์ ํ๋ค (#354) * etc: UserInfo ํ์ ์ bio ํ๋ ์ถ๊ฐ * etc: ProfilePage UI ๋ณด์ * feat: ํ๋กํ ์์ ๊ตฌํ * feat: ์ด๋ฏธ์ง ์ ๋ก๋ ๊ตฌํ * etc: ํฌ์ธํฐ ๋ณ๊ฒฝ * feat: ์ ์ ์ด๋ฆ validation ๊ฐํ * etc: ์ฝ๋ ์คํ์ผ ์ ๋ฆฌ * U11 - ๋ง์ดํ์ด์ง ํ๋กํ ๋๋ค์ ๋ฐ ๋ฐ์ด์ค ์์ api ๊ตฌํ, U12 - ํ์๋ช ์ค๋ณต ๊ฒ์ฌ api๋ฅผ ๊ตฌํํ๋ค. (#343) * feat: User ์ํฐํฐ์ bio ํ๋ ์ถ๊ฐ * feat: ๋ด ์ ๋ณด ์์ ๊ธฐ๋ฅ ๊ตฌํ * test: ๋ด ์ ๋ณด ์์ Acceptance Test * test: UserUpdateRequest Validation ํ ์คํธ ์ถ๊ฐ * test: UserDocumentationTest ์ถ๊ฐ * test: ๋ด ์ ๋ณด ์์ ๊ด๋ จ UserServiceTest ๋ฐ UserTest ์ถ๊ฐ * feat&test: ์ ์ ์ด๋ฆ ์ค๋ณต ๊ฒ์ฆ ์ถ๊ฐ ๋ฐ ํ ์คํธ ๊ตฌํ * feat: ํ์๋ช ์ค๋ณต์กฐํ api ๊ตฌํ * test: ํ์๋ช ์ค๋ณต ์กฐํ ํ ์คํธ ๊ตฌํ * refactor: ์ค๋ณต ๋ฉ์๋ ์์ํ๋๋ก ๋ณ๊ฒฝ * feat&test: pk ๋ฆฌ๋ทฐ ๋ฐ์, ํ์๋ช ๊ณต๋ฐฑ ๋ถ๊ฐ ๊ฒ์ฆ ๊ตฌํ ๋ฐ ํ ์คํธ ์ถ๊ฐ * refactor: ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ ์ถ๊ฐ๋ User ๋์ ๋ฐ ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋ ์ ๊ฑฐ * fix: UserDocumentTest ์๋ต ์์ ๋ฐ ์์ ์ฒ๋ฆฌ * refactor: ํ์ ์ ๋ณด ์์ ์ ํ์๋ช ์ค๋ณต ์กฐํ๋ฅผ ์ฐ์ ํ๋๋ก ์์ * etc: ์ฝ๋ ์ ๋ฆฌ ๋ฐ http ํ์ผ ์ถ๊ฐ * feat: UserName ์ปค์คํ Validator ์ถ๊ฐ * feat: sonarqube ๋์ ๋ฐ CORS ์ค์ ๋ณ๊ฒฝ (#362) * B45 - ์๋ํ๋ธ๋ฅผ CI ๊ณผ์ ์ ๋์ ํ๋ค - 2 (#364) * feat: sonarqube ๋์ ๋ฐ CORS ์ค์ ๋ณ๊ฒฝ * fix: build.gradle ํ๋ฌ๊ทธ์ธ ๋ถํ์ํ ์ค์ ์ ๊ฑฐ * feat: ํด์ฆ ์ค์ ํ์ด์ง UI ๋ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค (#356) * refactor: SelectBox์์ list์ height๋ฅผ ๋ฐ์ ์ ์๊ฒ ๋ณ๊ฒฝ * feat: ํด์ฆ ์ค์ ํ์ด์ง UI ๊ตฌํ * feat: ํด์ฆ ์ค์ ๊ธฐ๋ฅ ๊ตฌํ * feat: ํด์ฆ ํ์ด์ง ์๊ฐ ๊ธฐ๋ฅ ๊ตฌํ * fix: ์๊ฐ ๊ตฌํ๋ ์ ํธ ํจ์ ๋ณ๊ฒฝ * feat: ํด์ฆ ๊ฒฐ๊ณผ ํ์ด์ง ์๊ฐ ํ์ ๊ธฐ๋ฅ ๊ตฌํ * feat: useInterval ์ถ๊ฐ * fix: alert => snackbar ๊ต์ฒด * feat: ํด์ฆ ์ธํ ํ์ด์ง ์ค์ผ๋ ํค ๊ตฌํ * etc: ํ์ํ์ง ์์ style ์ญ์ * refactor: ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ํฐ์น ์ฌ๋ผ์ด๋ ๋ฐ ๊ตฌํ * etc: Clock => Timer ๋ณ๊ฒฝ ๋ฐ ๋ณ์๋ช ์์ * etc: import ๋ณ๊ฒฝ * feat: ๋ง์ฃผ์น ํ์๋ฅผ ํ์ํ๋ค(ํด์ฆ ํ์ด์ง ๋ฐ ์นด๋ ๋ชจ์๋ณด๊ธฐ ํ์ด์ง) (#350) * feat: ํ์ด๋ณธ ํ์ ๊ธฐ๋ฅ ์ถ๊ฐ * fix: resize ์ด๋ฒคํธ ๋ฐ์ ์ ์นด๋ width๊ฐ ๋ณํ์ง ์๋ ๋ฒ๊ทธ ํด๊ฒฐ * fix: resize ์ ์ฆ์ ์นด๋ ๋ณ๊ฒฝ๋๋๋ก ๋ณ๊ฒฝ * etc: ์ ์ ์ ๋ณด ์์ ํ๋์์ id ์ ๊ฑฐ (#363) * feat: ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ค (#359) * feat: OAtuh component ํ์ฅ ๊ฐ๋ฅํ ํํ๋ก ๋ณ๊ฒฝ * feat: ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ ๊ตฌํ * etc: oauth ์คํ์ผ ๋ฐฉ์ ๋ณ๊ฒฝ * refactor: OAuthCallbackPage๋ก ํต์ผ * fix: ๋ฌธ์ ์ง ์ถ๊ฐ ํ์ด์ง์์ ๋ฐ์ํ๋ ๋ฉ์ธ ํค๋ z-index ์ค๋ฅ๋ฅผ ์์ ํ๋ค (#366) * fix: ๋ฌธ์ ์ง ์ถ๊ฐ ํ์ด์ง์์ z-index ์ค๋ฅ ์์ * etc: ๋ฉ์ธ ํค๋์ shadow prop ๋ฐ๊ฒ ์์ * etc: CORS ์ค์ ๋ณ๊ฒฝ * etc: ๋ฒ๋ค ์ฌ์ด์ฆ ์ค์ด๊ธฐ (#368) - ํฐํธ html๋ก ์ด๋(๋ค์ด๋๋ฏน import) - gzip ์ต์ ์ถ๊ฐ - browser ๋ชฉ๋ก ์ถ๊ฐ * S01 - ํ๊ทธ, ์์ฑ์ ๊ธฐ์ค์ผ๋ก ๊ฒ์ ๊ฐ๋ฅํ๋๋ก ์ธ๋ถํํ๋ค. (#341) * feat: ๋ฌธ์ ์ง ์ด๋ฆ, ํ๊ทธ, ๊ทธ๋ฆฌ๊ณ ์์ฑ์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์ ์ง ์กฐํ ์ฟผ๋ฆฌ ์ถ๊ฐ * feat: ๊ณต์ ๋ฌธ์ ์ง ์กฐํ ๋ฐฉ์ ๋ณ๊ฒฝ * feat: ๊ฒ์ ์์ฒญ ๊ด๋ จ ์ด๋ ธํ ์ด์ ๋ฐ ๋ฆฌ์กธ๋ฒ ์ถ๊ฐ * test: ๊ฒ์ ๊ด๋ จ ์ ๋ ํ ์คํธ ์ถ๊ฐ * test: ๋ฌธ์ ์ง ๊ฒ์ ๊ด๋ จ ์ธ์ํ ์คํธ ์ถ๊ฐ * etc: ๋ถํ์ํ ํ์ผ ์ญ์ * etc: ๋ถํ์ํ ๊ธฐ๋ฅ ์ ๊ฑฐ ๋ฐ ์ฝ๋ ์ ๋ฆฌ * feat: ํ๊ทธ ๊ฒ์ ์๋์์ฑ ๊ธฐ๋ฅ ์ถ๊ฐ * feat: ์ ์ ๊ฒ์ ์๋์์ฑ ๊ธฐ๋ฅ ์ถ๊ฐ * feat: ๊ฒ์ ๊ธฐ๋ฅ ๊ตฌํ * ํ๊ทธ, ์ ์ , ๋ฌธ์ ์ง ์ด๋ฆ์ผ๋ก ์ฐพ๊ธฐ ๊ฐ๋ฅ * ์นด๋ ์, ๋ฌธ์ ์ง ์ด๋ฆ, ์ต์ ์ ์ ๋ ฌ ๊ฐ๋ฅ * ์ ๋ ฌ ๋ฐฉ์ ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์ ์ ํ ๊ฐ๋ฅ * feat: ์นด๋ ์ 0๊ฐ์ธ ๋ฌธ์ ์ง ๊ฒ์์์ ์ ๊ฑฐํ๋ ๊ธฐ๋ฅ ๊ตฌํ * test: ๋ฌธ์ ์ง ๊ฒ์ ๊ด๋ จ ์ธ์ ํ ์คํธ ์ถ๊ฐ * test: ์ ์ , ํ๊ทธ ์๋์์ฑ ๊ด๋ จ ์ธ์ํ ์คํธ ์ถ๊ฐ * feat: ํ๊ทธ ์๋์์ฑ ์ ๋์ ๊ตฌ๋ถํ์ง ์๋๋ก ๋ณ๊ฒฝ * feat: ๋ฌธ์ ์ง ๊ฒ์์ ๋ฌธ์ ์ง ์ด๋ฆ๊ณผ ํ๊ทธ ํค์๋์ ๊ฒฝ์ฐ ๋์ ๊ตฌ๋ถํ์ง ์๋๋ก ๋ณ๊ฒฝ * refactor: ์ ์ ์ด๋ฆ ์๋์์ฑ ์๋ต ํ๋ userName ์์ name ์ผ๋ก ๋ณ๊ฒฝ * etc: ๋ฐ์ดํฐ๋ก๋ ๋ฐ ๋๋ฏธ๋ฐ์ดํฐ ๋ณ๊ฒฝ * refactor: ์ ์ ์๋์์ฑ ์๋ต ํด๋์ค ์ด๋ฆ ๋ณ๊ฒฝ * test: ๊ฒ์ ๊ด๋ จ ๋ํ๋จผํธ ํ ์คํธ ๋ฐ ์์คํค๋ ์ถ๊ฐ * test: ๊ฒ์ ์๋น์ค ํ ์คํธ ์ถ๊ฐ * refactor: ๊ฒ์ ๊ธฐ๋ฅ ๋ฆฌํฉํ ๋ง * etc: ๋ถํ์ํ ์ํฌํธ๋ฌธ ์ ๊ฑฐ * etc: feature/W15-B ๋ธ๋์น ์ค์ฟผ์ ๋จธ์ง * feat: ๊ฒ์ ๊ฒฐ๊ณผ ์ข์์ ์ ์ ๋ ฌ ๊ธฐ๋ฅ ์ถ๊ฐ * test: ๊ฒ์์ ํํธ ์ ๋ ฌ ๊ด๋ จ ์ธ์ํ ์คํธ ์ถ๊ฐ * etc: DataLoader ํํธ ์ ๋ณด ์ถ๊ฐ * etc: ์ค๋ณต๋๋ ๋ฉ์๋ ์ ๊ฑฐ * refactor: ๊ฒ์์ด trim ๊ธฐ๋ฅ ์ญ์ ๋ฐ ์ ์ ์๋์์ฑ ๊ฒฐ๊ณผ ์ ์ ํ * refactor: ๋ฉ์๋ ๋ฆฌํฉํ ๋ง * refactor: merge ํ ์ ๋ฆฌ ๋ฐ Exception ๋ก๊น ๋ฐฉ์ ๋ณ๊ฒฝ * feat: ๊ฒ์ ์์ฒญ http ์ ๋ณด ์ถ๊ฐ Co-authored-by: seunghyun <[email protected]> * fix: ์ ์ ์ด๋ฆ ์ค๋ณต ์กฐํ ์ค๋ฅ๋ฅผ ์์ ํ๋ค (#370) * fix: ์ ์ ์ด๋ฆ ์ค๋ณต ์กฐํ ์ค๋ฅ ์์ * fix: ํ์์๋ return ์ ๊ฑฐ * fix: ๊ณต์ ์นด๋ ํ์ด์ง์ ํํธ ๊ธฐ๋ฅ์ ์ค์๋์ ์์ ํ๋ค (#373) * fix: ์ฒ์ ํํธ ๊ฐ์๊ฐ ์ด๊ธฐํ๋๋ ๋ฒ๊ทธ ์์ * etc: ๊ฐํ ์ ๊ฑฐ * fix: ๊ณต์ ์นด๋ ํ์ด์ง ๋ฉ์ธ ํค๋์ shadow ํด์ (#375) * refactor: ์ค์ผ๋ ํค UI๋ฅผ ๋ฆฌํฉํ ๋งํ๋ค (#377) * refactor: ์ค์ผ๋ ํค์ ์กฐ๊ธ ๋ ์ธ๋ถ์ ์ผ๋ก ๊พธ๋ฐ ์ ์๋๋ก ๋ณ๊ฒฝ * refactor: ํค๋์ ์์ด์ฝ ๋์ ํ๋ฒ๊ฑฐ ๋ฉ๋ด ์ฝ์ * feat: ํ๋กํ ํ์ด์ง ์คํฌ๋กค ๊ฐ๋ฅํ๊ฒ ๋ณ๊ฒฝ (#381) * etc: ํ์ํ์ง ์์ webpack ์ค์ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ญ์ (#383) * etc: compression-webpack-plugin ์ญ์ * etc: cross-env ์ญ์ * etc: react-ga ์ญ์ ๋ฐ script tag๋ก ๋ณ๊ฒฝ * etc: ์ทจ์ฝ์ฑ ํด๊ฒฐ * etc: ์ทจ์ฝ์ฑ ํด๊ฒฐ * refactor: ๋นํ์๋ ๊ฒ์์ด ๊ฐ๋ฅํ๋๋ก ์์ ํ๊ธฐ (#386) * fix: ๋นํ์์ธ ๊ฒฝ์ฐ์๋ Bearer์ด ๋ค์ด๊ฐ๋ ๋ฒ๊ทธ ์์ - ๋ก๊ทธ์์ ํ์ด์ง๋ ๋ก๊ทธ์ธ ํ์ด์ง์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์ด๊ฐ๋ฉด ๋ฐ๋ก ์คํ๋ ์ ์๋๋ก ๋ณ๊ฒฝ - ํ ํฐ์ setํ๊ณ removeํ๋ ๊ฒ์ ๋ก๊ทธ์ธ, ๋ก๊ทธ์์ ๋ฉ์๋๊ฐ ๋ด๋น * refactor: ๋นํ์๋ ๊ฒ์์ด ๊ฐ๋ฅํ๋๋ก ๋ณ๊ฒฝ * fix: ๋ฌธ์ ์ง ๊ฐ์ ธ๊ฐ๊ธฐ ์ z-index ๋ฌธ์ ํด๊ฒฐ * fix: ๋ฌธ์ ์ง ์์ ํ์ด์ง ํค๋ shadow ์ ๊ฑฐ * B46 - sonarqube ์ปค๋ฒ๋ฆฌ์ง ๊ธฐ์ค์ ์ค์ ํ๋ค (#387) * jacoco ์ปค๋ฒ๋ฆฌ์ง ๊ฒ์ฆ task ๋ฐ ๋กฌ๋ณต ๋ฌด์ ์ค์ ์ถ๊ฐ * test: ๋๋ฝ๋ ํ ์คํธ ์ถ๊ฐ * test: sonarqube exclusion ์ค์ ์ถ๊ฐ * feat: flyway ์ ์ฉ ๋ฐ ์ค์ ์ถ๊ฐ * feat: custom ga ์ ์ฉ * etc: ga script ์ถ๊ฐ * etc: ga devserver ์ค์ * refactor: active profiles ๋ฐ test yml flyway ์ค์ ์ถ๊ฐ * etc: ์๋ธ๋ชจ๋ ๋๊ธฐํ * etc: ddl, dml, flyway sql ์์ * etc: ํ๋น์ฝ ์ถ๊ฐ ๋ฐ meta og ์์ฑ ์ถ๊ฐ (#391) * etc: ์๊ฐ ๋ณ๊ฒฝ * refactor: ํด์ํ๊ทธ ์ ๋ณ๊ฒฝ * feat: ํ๊ทธ ์ต๋ ๊ฐ์ ์ฆ๊ฐ ๋ฐ sonarqube ์ค์ ๋ณ๊ฒฝ (#395) * feat: ๊ฒ์ ๋ก๋ฉ ์ ๋๋ฉ์ด์ ์์ (#393) * feat: ๊ฒ์์ด ์ ์ trim ๊ธฐ๋ฅ ์ ๊ฑฐ ๋ฐ ์๋ธ๋ชจ๋ ์ ๋ฐ์ดํธ (#398) * feat: ํํธ ์์น ๋ณ๊ฒฝ ๋ฐ ํ๊ทธ ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐ (#402) * fix: ํด์ํ๊ทธ 20๊ธ์ ์ ํ * fix: LoadImage ๋ง์ง ๋ณ๊ฒฝ * fix: ์ ๋ชฉ์ ์์ด๋ก width๊ฐ ๋์ด๊ฐ ๊ฒฝ์ฐ ํ๋ฉด์ ๋์ด๊ฐ๋ ๋ฒ๊ทธ ์์ * refactor: selectBox์ (์ผ) ์ถ๊ฐ * feat: ํํธ ์์น ๋ณ๊ฒฝ ๋ฐ ์คํ์ผ ๋ณ๊ฒฝ, ํ๊ทธ ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐ - ํ๊ทธ inline-block์ผ๋ก ๋ณ๊ฒฝ(์์์ ๋์ด๋ฅผ ๊ทธ๋๋ก ๊ฐ์ง๊ธฐ ์ํจ) - ํ๊ทธ ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐ * fix: ํด์ํ๊ทธ ๋ฉ์์ง ๋ด์ฉ ์์ * E01 - ์๋ฌ๋ฅผ ์ฝ๋๋ก ๊ด๋ฆฌํ๋ค. (#378) * feat: ErrorType ์์ฑ, ์์ ์์ธ ์์ฑ * feat: ์ค๊ฐ ๊ณ์ธต ์์ธ ์ถ๊ฐ, ์ถํ์ Botobo prefix ์ญ์ ์์ * feat: ErrorResponse ์์ , ControllerAdvice ์์ * feat: Request message๋ฅผ ์๋ฌ์ฝ๋๋ก ์์ * feat: ์ปค์คํ ์์ธ ์์ , ์ญ์ , ์ ์ฉ * test: ๋ฌธ์ ์ง ๊ด๋ จ ์์ ๋ ์ฝ๋ ํ ์คํธ์๋ ๋ฐ์ * feat: ์ธ์ฆ, ์ ์ ๊ด๋ จ ์์ธ ์ถ๊ฐ, ํ ํฐ ๋ง๋ฃ ์์ธ ์ถ๊ฐ * feat: ๋ฌธ์ ์ง ์์ ๊ด๋ จ ErrorType ์ถ๊ฐ * feat: Card ๊ด๋ จ Request ๋ฉ์์ง ์ฝ๋๋ก ์์ , ์์ธ ์ถ๊ฐ * feat: ํด์ฆ ๊ด๋ จ ์์ธ ์ฝ๋ ์ถ๊ฐ * etc: ๊ฒ์ ๊ด๋ จ ์ฝ๋ ์ญ์ * feat: Auth, User ๊ด๋ จ ์ฝ๋ ์ถ๊ฐ * feat: ๊ด๋ฆฌ์ Request ๊ด๋ จ code ์ถ๊ฐ * feat: ๋๋ฉ์ธ ๊ด๋ จ ์๋ฌ Internal Error ๊ณ์ธต ๊ด๊ณ ์ถ๊ฐ * test: ์คํจํ๋ ํ ์คํธ ์์ * etc: ๊ธฐ์กด common์ ์์ธ๋ฅผ ์ง์ฐ๊ณ , botobo http ์์ธ๋ก ์์ * etc: import ๋ฌธ ์ ๋ฆฌ * etc: DisplayName์ ์ฑ๊ณต, ์คํจ ๋น ์ง ํ ์คํธ์ ์ถ๊ฐ * feat: ์ ์ ์์ , ๋๋ค์ ์ฒดํฌ ๊ด๋ จ ErrorType ์ถ๊ฐ * test: ErrorType ํ ์คํธ ์ถ๊ฐ * feat: ๊ฒ์ ๊ด๋ จ ๊ธฐ๋ฅ์ ๋ํ ErrorType ์ถ๊ฐ ๋ฐ Controller Advice ์์ * feat: Controller Advice์ ๋ก๊ทธ ๋ฉ์์ง ์ ๋ฆฌ * feat: InternalServerError ๋ถ๋ถ ๋ก๊ทธ ๋ฉ์ธ์ง ์์ * fix: ํ ํฐ ๋ง๋ฃ ์์ธ๊ฐ ๋ฐ์ํ๋๋ก ์์ * fix: ๋ณํฉ ๊ณผ์ ์์ ๋ฐ์ํ ์คํจํ๋ ํ ์คํธ ์์ * refactor: ์ ์ฒด ๋ฉ์์ง ์์ ๋ฐ ํผ ๋น๊ฐ ์ ๋ ฅ ์ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ํ๋ธ๋ค (#404) * etc: FormProvider์์ ๋น๊ฐ์ ๋ํ ์ฒ๋ฆฌ ๊ตฌํ * etc: ๋ฉ์์ง ๋์์ค ์์ (~ํฉ๋๋ค -> ~์) * etc: ๋น๊ฐ ์ฒ๋ฆฌ ์กฐ๊ฑด๋ฌธ ์์ * etc: return ๋ฌธ ์ถ๊ฐ * refactor: api ๋ ์ด์ด ์ ๋ฆฌ (#406) * etc: ๋ฌธ์ ์ง ๊ฐ์ ธ๊ฐ๊ธฐ ๋ชจ๋ฌ ๊ธฐ๋ณธ๊ฐ ์ค์ (#408) * feat: ๋ก๋ฉ ์คํผ๋ ๋ง๋ค๊ธฐ (#410) * feat: ๋ก๋ฉ ์คํผ๋ ๊ตฌํ * refactor: ๋ก๋ฉ ์คํผ๋ ์ ์ฉ ๋ฐ ํ์ํ์ง ์์ ๊ตฌ๋ฌธ ์ญ์ - isLastItem์ด ํ์ํ์ง ์์์ -> ํญ์ ์ต์ ๋ฒ ํ์๋ ์ต์ ๋ฒ๋ฅผ ํด์ ํ๊ณ ์๊ธฐ ๋๋ฌธ * refactor: ์์ธ์ฒ๋ฆฌ๋ฅผ ์์ ํ๋ค (#389) * refactor: ์์ธ์ฒ๋ฆฌ ๋ฐฉ์ ๋ณ๊ฒฝ Co-authored-by: dudtjr913 <[email protected]> * refactor: ์์ธ์ฒ๋ฆฌ ์์ Co-authored-by: dudtjr913 <[email protected]> * B43 - ์ธ์ํ ์คํธ ๋ฆฌํฉํ ๋ง (#396) * feat: dirties context ์ ๊ฑฐ ๋ฐ db cleaner ๊ฐ์ฒด ์ถ๊ฐ * refactor: ์ธ์ํ ์คํธ ๋ฆฌํฉํ ๋ง * U14 - ์ด๋ฏธ์ง ์์ /์ญ์ ์ ๊ธฐ์กด์ ๋ฑ๋ก๋ ์ด๋ฏธ์ง๋ฅผ s3์์ ์ญ์ ํ๋ค. (#409) * feat: S3 ํ์ผ ์ ๋ก๋ ์ ๊ธฐ์กด ํ์ผ์ด default๊ฐ ์๋๋ฉด ์ ๊ฑฐํ๋ ๊ธฐ๋ฅ ๊ตฌํ * refactor: user update ์คํจ ์ ์ด์ ์ฌ์ง์ด ์ญ์ ๋์ง ์๋๋ก ์์ * etc: ์ฝ๋ ์ ๋ฆฌ * fix: ImageExtensionException์ BADREQUEST๋ก ์์ * feat: ๋ฐ์ํ ๊ตฌํ (#413) Co-authored-by: Kyle <[email protected]> * refactor: ๋ฐ์ํ์ ๊ตฌํํ๋ค (#416) * refactor: ๋ฐ์ํ ๊ตฌํ * refactor: ๊ฒ์ ๊ฒฐ๊ณผ ์์ ๋ ์๋ฆผ ํ์ Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: dudtjr913 <[email protected]> * fix: ๋นํ์ ๊ธฐ๋ฅ์์ ์ ํจํ์ง ์์ ํ ํฐ ๊ด๋ จ ์๋ ค ์ฌ๋ฐ๋ฅด๊ฒ ์ถ๋ ฅํ๋๋ก ์์ * feat: ๊ฒ์ ์ฐฝ ๋ฏธ๋์ด ์ฟผ๋ฆฌ ์ ์ฉ Co-authored-by: Kyle <[email protected]> * feat: ์ธ๋ก ํ์ px์ธ ๋ชจ๋ฐ์ผ์ ๋ง์ถฐ width ํฌ๊ธฐ 1% ์ถ๊ฐ Co-authored-by: Kyle <[email protected]> * B50 - ๋ฌธ์ํ ํ ์คํธ ๋ฆฌํฉํฐ๋ง (#415) * etc: ์๋ฌ์ฝ๋ ๊ด๋ จ adoc ์ถ๊ฐ * test: ์ ์ฒด์ ์ผ๋ก ๋ฌธ์ํ ํ ์คํธ ๋ฆฌํฉํฐ๋ง - ๋ชจ๋ ํ ์คํธ any(xxxx.class)๋ก ๊ท ์ผํ๊ฒ ๋ณ๊ฒฝ - ๋ฆฌ์กธ๋ฒ ํ ์คํธ ๊ด๋ จ ์์ - ์คํจํ๋ ํ ์คํธ ์ญ์ - ์์ฑ๋ ๋ฌธ์์ ํ์ธํ์ฌ ๋น ์ง ํ๋, ์๋ต ์๋ ๋ถ๋ถ ์ฒดํฌ * etc: ๋ฒ์ 1.0.0์ผ๋ก ๋ณ๊ฒฝ ๋ฐ ga main์ผ๋ก ์ ์ฉ Co-authored-by: Kyle <[email protected]> * fix: ๋์ผํ ์ด๋ฏธ์ง ์ ๋ก๋ ์ค๋ฅ ์์ * etc: textarea resize ์ด๋ฒคํธ ์ ๊ฑฐ * etc: Guest Quiz์์ ํ์ด๋ณธ ํ์ ํ์ ํ์ง ์๊ฒ ์์ * etc: textAreaHeight ์ํ ๋ณ์๋ก ๊ณ ์ * fix: ์คํฌ๋กค ๋ฒ๊ทธ ์์ * etc: BotoboException ๊ด๋ จ ๋ก๊ทธ์ ๋ฉ์์ง ๋์ค๋๋ก ๋ณ๊ฒฝ * docs: README ์์ฑ Co-authored-by: Eugine Park <[email protected]> Co-authored-by: seovalue <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: Kyle <[email protected]> Co-authored-by: ohjoohyung <[email protected]> Co-authored-by: dudtjr913 <[email protected]> Co-authored-by: DESKTOP-VDP6SAT\xntm3 <[email protected]>
- Loading branch information