Skip to content

Commit ccf5598

Browse files
LEE DAEUNxlffm3yjkswTanney-102bperhaps
authored
[v2.0.0] pick-git ๋ฐฐํฌ (#715)
* [#35 #36] ์„ ํƒํ•œ Github ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์‚ฌ์šฉ ์–ธ์–ด ํƒœ๊ทธ ์ถ”์ถœ ๋ฐ ํƒœ๊ทธ ์ €์žฅ/์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#52) * chore: ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ RestAssured ์˜์กด์„ฑ ์ถ”๊ฐ€ ๋ฐ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ (#35) * feat: GIthub ํŠน์ • Repository์—์„œ Language Tags ์ถ”์ถœ (#35) * feat: Github Tag ์ถ”์ถœ ์„œ๋น„์Šค ๊ตฌํ˜„ (#35) * feat: Github Tag ์ถ”์ถœ ํ‘œํ˜„ ๊ณ„์ธต ๊ตฌํ˜„ (#35) * refactor: ํƒœ๊ทธ ์ถ”์ถœ ๊ธฐ๋Šฅ ์ค‘ Github API ํ˜ธ์ถœ ๋ถ€๋ถ„ ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ (#35) * refactor: stub token์œผ๋กœ ๋ณ€๊ฒฝ * refactor: controlleradvice tag ํŒจํ‚ค์ง€ ๋ฒ”์œ„ ์ง€์ • * refactor: GithubTagExtractor ๊ตฌํ˜„์ฒด ObjectMapper ์ฃผ์ž… (#35) * refactor: TagExtractor ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ ๋ฐ ์ปจํŠธ๋กค๋Ÿฌ ์Šฌ๋ผ์ด์‹ฑ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#35) * refactor: ํƒœ๊ทธ ์ถ”์ถœ์— ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ํฌํ•จ (#35) * feat: Post ์ €์žฅ์‹œ ๋“ฑ๋ก๋œ Tag๋„ ํ•จ๊ป˜ ์ €์žฅ (#36) * feat: ์ด๋ฆ„์— ํ•ด๋‹นํ•˜๋Š” Tag๊ฐ€ ์—†์„๋•Œ๋งŒ Tag ์ƒ์„ฑํ•˜๋Š” ์„œ๋น„์Šค ๊ตฌํ˜„ (#36) * refactor: ํ˜„์žฌ ๊ธ€์— ์กด์žฌํ•˜๋Š” Tag์™€ ์ค‘๋ณต๋˜๋Š” ์ด๋ฆ„์˜ ํƒœ๊ทธ ์ถ”๊ฐ€์‹œ ์˜ˆ์™ธ ๋ฐœ์ƒ (#35) * refactor: Post์— Tag ์ •์ƒ ๋“ฑ๋กํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#36) * refactor: ํƒœ๊ทธ unique ์ œ์•ฝ ์ถ”๊ฐ€ ๋ฐ @transactional ์ ์šฉ (#36) * refactor: ํƒœ๊ทธ ๋„๋ฉ”์ธ ์ƒ์„ฑ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ถ”๊ฐ€ (#36) * refactor: ํƒœ๊ทธ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ ๋ฐ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ (#36) * chore: secret ์‚ญ์ œ * refactor: Rebase ์ดํ›„ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ์— ๋กœ๊ทธ์ธ ์š”์ฒญ ๋ชจ๋“ˆ ์ถ”๊ฐ€ (#35) * refactor: ์ž˜๋ชป๋œ ํ† ํฐ์œผ๋กœ ์š”์ฒญ์‹œ ์˜ˆ์™ธ ํ™•์ธ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#35) * fix: rebase ์ดํ›„ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋ณด์™„ * refactor: ํƒœ๊ทธ ์ถ”๊ฐ€ ์‹คํŒจ ์—๋Ÿฌ ๋ฐ ํ”Œ๋žซํผ ์—๋Ÿฌ๋ฅผ ์ปค์Šคํ…€ ์˜ˆ์™ธ๋กœ ๋ณ€ํ™˜ ๋ฐ TagController ๋ฐ˜ํ™˜ํƒ€์ž… ๋ณ€๊ฒฝ (#35) * [#55 #57] ์œ ์ € ํ”„๋กœํ•„ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ํŒ”๋กœ์šฐ ํŒ”๋กœ์ž‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#61) * feat: ์œ ์ € ํ”„๋กœํ•„ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#55) * feat: ์œ ์ € ํ”„๋กœํ•„ ์ •๋ณด์— github url ์ถ”๊ฐ€ ๋ฐ ๋ˆ„๋ฝ ํŒŒ์ผ ์ถ”๊ฐ€ (#55) * feat: ์œ ์ € ํŒ”๋กœ์šฐ ํŒ”๋กœ์ž‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#57) * test: ์œ ์ € ํ”„๋กœํ•„ ๋ฐ ํŒ”๋กœ์šฐ/ํŒ”๋กœ์ž‰ ํ…Œ์ŠคํŠธ ๊ตฌํ˜„ (#55 #57) * test: ์œ ์ € ํ”„๋กœํ•„ ๋ฐ ํŒ”๋กœ์šฐ/ํŒ”๋กœ์ž‰ ํ…Œ์ŠคํŠธ ๊ตฌํ˜„(#55 #57) * refactor: ์œ ์ € ํ”„๋กœํ•„ ๋ฐ ํŒ”๋กœ์šฐ/ํŒ”๋กœ์ž‰ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ (#55 #57) * test: verify() ์ถ”๊ฐ€ (#55 #57) * [#88] LoginPage ๊ตฌํ˜„ (#98) * fix: ์˜คํƒ€ ์ˆ˜์ • * chore: storybook ์„ค์ •์— full screen ์˜ต์…˜ ์ถ”๊ฐ€ * feat: ์›นํฐํŠธ ์ถ”๊ฐ€ * feat: GithubIconLarge svg ์ถ”๊ฐ€ * fix: button attribute type ์˜ค๋ฅ˜ ํ•ด๊ฒฐ * feat: github login mock api ์ถ”๊ฐ€ * feat: user context ๊ตฌํ˜„ * fix: ProfileQuery accessToken type error ํ•ด๊ฒฐ * feat: github login link ์กฐํšŒ api ๊ตฌํ˜„ * feat: github login ํŽ˜์ด์ง€ ๊ตฌํ˜„(#88) * fix: UserContextProvider Props ํƒ€์ดํ•‘ ๊ฐ„์†Œํ™” * feat: Provider ๋ถ„๋ฆฌ ๋ฐ UserContextProvider ์ถ”๊ฐ€ * feat: access token ์กฐํšŒ api ๊ตฌํ˜„(#88) * feat: github OAuth ๋กœ๊ทธ์ธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํŽ˜์ด์ง€ ๊ตฌํ˜„ * [#104] merge์‹œ ๋ˆ„๋ฝ๋œ ์ฝ”๋“œ ์ถ”๊ฐ€ (#105) * fix: ๋ˆ„๋ฝ๋œ interface ์ •์˜ ์ถ”๊ฐ€ * fix: ๋ˆ„๋ฝ๋œ prop ์ถ”๊ฐ€(commentId) * fix: ๋ˆ„๋ฝ๋œ url constants ์ถ”๊ฐ€ * feat: ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#100) * [#108] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ „๋žต ๊ตฌํ˜„ (#112) * feat: ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ „๋žต ๊ตฌํ˜„ * refactor: GlobalExceptionHandler์—์„œ ์ตœ์ƒ์œ„ ์นดํ…Œ๊ณ ๋ฆฌ์ธ ApplicationException๋งŒ ๋ฐ›๋„๋ก ์ˆ˜์ • * refactor: RestControllerAdvice๋กœ ์ˆ˜์ • * refactor: ์˜ˆ์™ธ ๋กœ๊น…์šฉ ์˜ˆ์™ธ message ์ƒ์„ฑ์ž ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€ * feat: Button ์ปดํฌ๋„ŒํŠธ kind type ์ถ”๊ฐ€(#107) (#111) - SquaredBlock, RoundedInline์ถ”๊ฐ€ * [#102] ๊ฒŒ์‹œ๋ฌผ์— Github Repository ์ฃผ์†Œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#109) * feat: post ์—…๋กœ๋“œ ์‹œ github repository ์ฃผ์†Œ ํ•จ๊ป˜ ์ €์žฅ (#102) * fix: ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ์‚ญ์ œ (#102) * refactor: ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ (#102) * [#34] ๋Œ“๊ธ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#84) * feat: Comment ์œ ํšจ์„ฑ ๊ฒ€์ฆ ๋กœ์ง ์ถ”๊ฐ€ (#34) * feat: Post ์˜์†์‹œ Comment ํ•จ๊ป˜ ์˜์†ํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (#34) * feat: User๊ฐ€ ํŠน์ • Post์— Comment ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#34) * feat: ๋“ฑ๋ก๋œ ๊ฒŒ์‹œ๋ฌผ์— Comment ์ถ”๊ฐ€ํ•˜๋Š” ์„œ๋น„์Šค ๊ตฌํ˜„ (#34) * test: Service ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#34) * feat: ๋Œ“๊ธ€ ์ถ”๊ฐ€ API ๋‹จ์œ„ ๋ฐ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#34) * refactor: CommentFormat ์˜ˆ์™ธ ์ƒํƒœ์ฝ”๋“œ ๋ณ€๊ฒฝ ๋ฐ ์—๋Ÿฌ ์ฝ”๋“œ ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ (#34) * refactor: ControllerAdvice ์ด๋ฆ„์„ ํŠน์ • ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ช…์‹œ (#34) * refactor: ์ฝ”๋“œ ๋ณ‘ํ•ฉ์œผ๋กœ ์ธํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฐ ์„ค์ • ์ˆ˜์ • (#34) * refactor: rebase ๋ณ‘ํ•ฉ ํ•ด๊ฒฐ (#34) * [#37] Github Repositories ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#58) * feat: Github Repositories ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ * test: ์Šฌ๋ผ์ด์Šค ํ…Œ์ŠคํŠธ ์ž‘์„ฑ * refactor: get -> show ๋ฉ”์†Œ๋“œ๋ช… ์ˆ˜์ • * refactor: ํด๋ž˜์Šค๋ช… ์ˆ˜์ • * refactor: Repository -> Repositories ํด๋ž˜์Šค๋ช… ๋ณ€๊ฒฝ * fix: rebase conflict ํ•ด๊ฒฐ * refactor: application -> domain <- infrastructure ๋ฐฉํ–ฅ์œผ๋กœ ์˜์กด์„ฑ ํ๋ฅด๋„๋ก ์ˆ˜์ • * test: given-when-then ๊ตฌ๋ฌธ ์ˆ˜์ • * refactor: HttpEntity -> RequestEntity ๋ณ€๊ฒฝ * test: given-when-then ๊ตฌ๋ฌธ ์ˆ˜์ • * refactor: Github Repositories ์กฐํšŒ ๊ธฐ๋Šฅ ์ˆ˜์ • * test: ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ ์ˆ˜์ • * test: ์Šฌ๋ผ์ด์Šค ํ…Œ์ŠคํŠธ ์ˆ˜์ • * test: ์Šฌ๋ผ์ด์Šค ํ…Œ์ŠคํŠธ ์ž‘์„ฑ * test: ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ * test: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ * test: rebase conflict ํ•ด๊ฒฐ * feat: ํ”„๋กœํ•„ ์กฐํšŒ์‹œ ํŒ”๋กœ์šฐ ์—ฌ๋ถ€ ํŒ๋‹จ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#113) (#117) * [#95] ํ™ˆ ํ”ผ๋“œ ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ (#114) * feat: ํŽ˜์ด์ง•์„ ํ†ตํ•ด ๊ฒŒ์‹œ๋ฌผ์„ ์กฐํšŒํ•˜๊ณ  DTO๋กœ ๋ณ€ํ™˜ (#95) * refactor: rebase ๋ณ‘ํ•ฉ์œผ๋กœ ์ธํ•œ ์ถฉ๋Œ ํ•ด๊ฒฐ (#95) * feat: ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ ํŽ˜์ด์ง• ๊ธฐ๋Šฅ ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#95) * refactor: ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ ๊ธฐ๋Šฅ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ ๋ฐ ํƒœ๊ทธ DTO ์ •๋ฆฌ (#95) * refactor: Post ์กฐํšŒ RestAssured ๋ฉ”์„œ๋“œ ์ค‘๋ณต ๋ฆฌํŒฉํ† ๋ง (#95) * refactor: ๋ณ‘ํ•ฉ์œผ๋กœ ์ธํ•œ ์ถฉ๋Œ ํ•ด๊ฒฐ (#95) * refactor: batch size๋ฅผ ํ†ตํ•œ ํŽ˜์ด์ง• ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๊ฐœ์„  (#95) * refactor: ํŽ˜์ด์ง• fetch join ์ถ”๊ฐ€ (#95) * [#119] ์„œ๋ธŒ๋ชจ๋“ˆ ์ ์šฉ (#120) * chore: ์„œ๋ธŒ๋ชจ๋“ˆ ์ถ”๊ฐ€ (#119) * chore: ์„œ๋ธŒ๋ชจ๋“ˆ ์ ์šฉ (#119) * chore: ์„œ๋ธŒ๋ชจ๋“ˆ ์ˆ˜์ • (#119) * [#87] HomeFeedPage ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#121) * refactor: Provider ์™€ Global Style ์ ์šฉ์„ App.tsx -> Index.tsx ์—์„œ ์ˆ˜ํ–‰ Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com> * feat: Profile ํŽ˜์ด์ง€ query ์ดˆ๊ธฐํ™” * refactor: CommentData ํƒ€์ž… ๋ณ€๊ฒฝ & Comment ์ปดํฌ๋„ŒํŠธ Props ์˜ CommentData ํƒ€์ž… ์˜์กด์„ฑ ์ œ๊ฑฐ * fix: PostItem ์ปดํฌ๋„ŒํŠธ์— ๋Œ“๊ธ€ ๋‹ฌ๊ธฐ ๋ฒ„ํŠผ ์ถ”๊ฐ€ & Tag ๋“ค์„ ๋‚˜ํƒ€๋‚ด๋Š” Chip ๋“ค ์ถ”๊ฐ€ - send.svg ์ถ”๊ฐ€ - PostItem ์Šคํƒ€์ผ๋ง ๋ณ€๊ฒฝ * chore: webpack ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋กœ๋” ๋ฃฐ ์ถ”๊ฐ€ * feat: TextEditor ์ปดํฌ๋„ŒํŠธ ๋ฐฐ๊ฒฝ์ƒ‰ prop ์ œ๊ฑฐ - ๊ธฐ๋ณธ border-radius ์ œ๊ฑฐ * feat: Button kind ๋ณ„ padding ๋ณ€ํ™” ์ ์šฉ * feat: ์ƒ์†์šฉ Styled Component ์ œ์ž‘ * feat: Header ์ปดํฌ๋„ŒํŠธ๋“ค์— ๋ชจ๋“ˆ Styled Component ์ƒ์† ์ ์šฉ * chore: .vscode ๋ฅผ gitignore ๋ชฉ๋ก์— ์ถ”๊ฐ€ * feat: PostItem ์ปดํฌ๋„ŒํŠธ ๋งˆํฌ์—… ๊ตฌ์กฐ ์ˆ˜์ • - ํ•„์š”ํ•˜์ง€ ์•Š์€ prop ํ• ๋‹น ์‚ญ์ œ * feat: Header ์ปดํฌ๋„ŒํŠธ์— ์ผ๊ด„์ ์œผ๋กœ ์ ์šฉํ•  ๋†’์ด๊ฐ’ ์ƒ์ˆ˜ํ™” * feat: PostItem ์Šคํƒ€์ผ ์†์„ฑ ์ˆ˜์ • * feat: Feed ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * feat: HomeFeedPage ํŽ˜์ด์ง€ ๊ตฌํ˜„ * feat: FAILURE_MESSAGE & LIMIT ์ƒ์ˆ˜ ์ถ”๊ฐ€ - LIMIT ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ œํ•œํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒ์ˆ˜๋“ค์„ ๋‹ด์€ ๊ฐ์ฒด - FAILURE_MESSAGE ๋Š” ์š”์ฒญ ํ˜น์€ ๋™์ž‘์ด ์‹คํŒจํ–ˆ์„ ๋•Œ ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ์— ํ™œ์šฉ๋  ๋ฉ”์„ธ์ง€๋“ค์„ ๋‹ด์€ ๊ฐ์ฒด * feat: HomeFeedPage ๋ผ์šฐํŒ… ์ ์šฉ Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com> * [#118] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ „๋žต์„ ์ ์šฉ ๋ฐ Entity์— id ๋™๋“ฑ์„ฑ ์ถ”๊ฐ€ (#122) * refactor: Authentication ์ปค์Šคํ…€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๊ตฌํ˜„ * refactor: User, Tag ์ปค์Šคํ…€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๊ตฌํ˜„ * refactor: Post, Comment ์ปค์Šคํ…€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๊ตฌํ˜„ * refactor: ์—”ํ‹ฐํ‹ฐ id ๋™๋“ฑ์„ฑ ์ •์˜ * refactor: ํ”Œ๋žซํผ ์ด๋‹ˆ์…œ V๋กœ ์ˆ˜์ • * fix: DataJpaTest์— Date ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์„ค์ • ์ถ”๊ฐ€ (#123) * [#89] Profile Page ๊ตฌํ˜„ (#126) * refactor: Provider ์™€ Global Style ์ ์šฉ์„ App.tsx -> Index.tsx ์—์„œ ์ˆ˜ํ–‰ Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com> * feat: Profile ํŽ˜์ด์ง€ query ์ดˆ๊ธฐํ™” * feat: Avatar ์ปดํฌ๋„ŒํŠธ name์˜ fontWeight์„ bold๋กœ ๋ณ€๊ฒฝ * feat: storybook dummy token ์ถ”๊ฐ€ * feat: mock data ๋ฐ routes ์ถ”๊ฐ€ * chore: svg ์•„์ด์ฝ˜ ์ถ”๊ฐ€ * fix: Profile interface ์ˆ˜์ • * Revert "feat: mock data ๋ฐ routes ์ถ”๊ฐ€" This reverts commit ea74c1bfda40c4bacf71283d193fad62927859d7. * feat: ProfileHeader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#89) * feat: Profile ์ปดํฌ๋„ŒํŠธ์˜ api๋กœ์ง ๋ฐ query ๊ตฌํ˜„ * feat: Profile ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„(#89) * chore: assets/images์˜ ํŒŒ์ผ์„ .png, .jpg ๋กœ ํ†ต์ผ * chore: ์ด๋ฏธ์ง€ ํ™•์žฅ์ž์— ๋Œ€ํ•ด url loader์ถ”๊ฐ€ * feat: profile ๊ด€๋ จ mock api ์ถ”๊ฐ€ * feat: default Profile ์ด๋ฏธ์ง€๋ฅผ svg์—์„œ png ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝ * refactor: profile page url์„ ํ•˜๋‚˜๋กœ ํ†ต์ผ * feat: main ํƒœ๊ทธ ์ถ”๊ฐ€ * feat: Profile์ปดํฌ๋„ŒํŠธ story ์ถ”๊ฐ€ * refactor: Profile url์— userType param ์ถ”๊ฐ€ * refactor: isMyProfile ์†์„ฑ์„ Profile์ปดํฌ๋„ŒํŠธ์˜ ์ƒ์œ„๋กœ ์ด๋™ * feat: Tabs ์ปดํฌ๋„ŒํŠธ์— ํ•ด๋‹น ํƒญ์— ๋Œ€ํ•œ ์ปจํ…์ธ  ์ถ”๊ฐ€ * feat: LoggedInWrapper util๋กœ ๋ถ„๋ฆฌ * feat: ProfileFeed ์ปดํฌ๋„ŒํŠธ ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„ * feat: mock data ์ถ”๊ฐ€ * feat: svg icon ์ถ”๊ฐ€ * refactor: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ ๋ฐ ๋ˆ„๋ฝ ์ฝ”๋“œ ๋ณด์ถฉ - ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ - ๋ˆ„๋ฝ๋œ key prop ์ถ”๊ฐ€ - tab ์Šคํƒ€์ผ ๋ณ€๊ฒฝ - ์ค‘๋ณต๋œ ์ฝ”๋“œ ์ œ๊ฑฐ * feat: ํ”„๋กœํ•„ ํ”ผ๋“œ์— ๋น„๋™๊ธฐ ๋กœ์ง ์ถ”๊ฐ€ * feat: GithubStatistics ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * feat: Profile Page ๊ตฌํ˜„(#89) * refactor: ๋ถˆํ•„์š”ํ•œ interface ์ œ๊ฑฐ * feat: ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ ์ˆ˜์ • ๋ฐ ํ™ˆ ๋ฒ„ํŠผ ์ถ”๊ฐ€ * feat: ๋ ˆ์ด์•„์›ƒ ์ˆ˜์ • * fix: ๋ˆ„๋ฝ๋œ accessToken ์ถ”๊ฐ€ * refactor: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ * feat: ์Šคํƒ€์ผ ๋ณ€๊ฒฝ - main widht๋ฅผ ๋ชจ๋ฐ”์ผ ์‚ฌ์ด์ฆˆ๋กœ ๊ณ ์ • - black button ํŒจ๋”ฉ ์กฐ์ • * feat: ๋ฐ๋ชจ๋ฅผ ์œ„ํ•ด ํ•ญ์ƒ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ์ˆ˜์ • * feat: ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ ์ ์šฉ * refactor: optionalํ•œ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ JSX๋กœ ์ฒ˜๋ฆฌ * refactor: error์— ๋”ฐ๋ฅธ ui ๋ถ„๊ธฐ๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๋ช…์‹œ Co-authored-by: SONG WON LEE <swon3210@gmail.com> Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com> * feat: ์  ํ‚จ์Šค ์„ค์ • ํŒŒ์ผ ์ƒ์„ฑ (#133) * refactor: ๋น„๋กœ๊ทธ์ธ ์œ ์ €๋กœ๋„ ํ™ˆ ํ”ผ๋“œ ์กฐํšŒ๋ฅผ ํ•˜๋„๋ก ์ˆ˜์ • (#134) (#135) * fix: ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์ด routeํ•˜๋„๋ก url ๋ฐ ๊ด€๋ จ ์ฝ”๋“œ ์ˆ˜์ • (#131) * fix: s3storage bean ํƒ์ƒ‰์„ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • (#136) * [hotfix] CORS ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#138) * fix: CORS ๋ฒ„๊ทธ ํ•ด๊ฒฐ * chore: security ์ˆ˜์ • * [#137] ๋‚ด ํ”„๋กœํ•„ ๊ณ„์ •์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์กฐํšŒํ•œ๋‹ค. (#139) * feat: ๋‚ด ํ”„๋กœํ•„ ๊ณ„์ •์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#137) * refactor: Jenkins ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ sleep์„ 3์—์„œ 10์œผ๋กœ ๋ณ€๊ฒฝ * [chore] api mocking ๊ด€๋ จ ์ฝ”๋“œ ์ˆ˜์ • (#140) * feat: ๋ฌดํ•œ์Šคํฌ๋กค ๊ตฌํ˜„ ์ „์ž„์„ ๊ฐ์•ˆํ•˜์—ฌ posts ์กฐํšŒ์‹œ page, limit mock * feat: login mock ์ œ๊ฑฐ * chore: ๋ฐฐํฌ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ api proxy์—ฌ๋ถ€ ๋ถ„๊ธฐ * chore: ์šด์˜ ํ™˜๊ฒฝ ์„ค์ • ์„œ๋ธŒ ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ (#143) (#144) * [#141] ๋‹ค๋ฅธ ์œ ์ €์˜ ํ”„๋กœํ•„ ๊ณ„์ •์˜ ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ (#142) * feat: ๋‹ค๋ฅธ ์œ ์ €์˜ ํ”„๋กœํ•„ ํ”ผ๋“œ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#141) * refactor: Pageable ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ • (#141) * fix: PostRepository์— @param ์ถ”๊ฐ€ (#145) * [#146] ๋กœ๊ทธ์ธ ๋ฐ˜ํ™˜ ๊ฐ’์— ์œ ์ € ๋„ค์ž„ ์ถ”๊ฐ€ ๋ฐ ์ธํ„ฐ์…‰ํ„ฐ ๋งค์น˜ ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง (#147) * refactor: PathPattern ์ธํ„ฐ์…‰ํ„ฐ URL๊ณผ Method๋ฅผ ํ†ตํ•ด ๋งค์น˜๋˜๋„๋ก ๋ฆฌํŒฉํ† ๋ง * refactor: ๋กœ๊ทธ์ธํ›„ ๋ฐ˜ํ™˜ํ•  ๋•Œ ํ† ํฐ๊ณผ ํ•จ๊ป˜ ์œ ์ € ๋„ค์ž„๋„ ๋ณด๋‚ด๋„๋ก ์ˆ˜์ • * fix: ์‘๋‹ต ํŒŒ์‹ฑ ์—๋Ÿฌ ์ˆ˜์ • (#148) * [#129] follow ์ถ”๊ฐ€, ์ทจ์†Œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#149) * fix: ํฐํŠธ import ์œ„์น˜ ๋ณ€๊ฒฝ * feat: follow ์ถ”๊ฐ€, ์ทจ์†Œ ๊ธฐ๋Šฅ ๊ตฌํ˜„(#129) * feat: ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ง„์ž…์‹œ ๋กœ๊ทธ์ธ ์ƒํƒœ ํ™•์ธ * refactor: submodule์˜ remote branch ๊ธฐ์ค€์„ main์œผ๋กœ ๋ณ€๊ฒฝ (#155) master -> main * refactor: ์  ํ‚จ์Šจ ๋นŒ๋“œ ์œ ๋ฐœ ๋ฐฉ์‹ ๋ณ€๊ฒฝ์— ๋”ฐ๋ฅธ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ • (#157) * [#152] ์‘๋‹ต ํŒŒ์‹ฑ ์—๋Ÿฌ ์ˆ˜์ • (#153) * fix: ์‘๋‹ต ํŒŒ์‹ฑ ์—๋Ÿฌ ์ˆ˜์ • * refactor: build.gradle ํ˜•์‹ ํ†ต์ผ * fix: ๋น„์ •์ƒ ํŒŒ์ผ ์ด๋ฆ„๋ฐ ํ™•์žฅ์ž ๋„์ถœ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#160) * [#163] ๋นŒ๋“œ ์—๋Ÿฌ๋ฅผ ํ™•์ธํ•˜๋‹ค. (#164) * fix: ๋น„์ •์ƒ ํŒŒ์ผ ์ด๋ฆ„๋ฐ ํ™•์žฅ์ž ๋„์ถœ ๋ฒ„๊ทธ ํ•ด๊ฒฐ * fix: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“ˆ import๋กœ ์ธํ•œ ๋นŒ๋“œ ์—๋Ÿฌ ์ˆ˜์ • * fix: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“ˆ import๋กœ ์ธํ•œ ๋นŒ๋“œ ์—๋Ÿฌ ์ˆ˜์ • (#165) * [#106] request DTO ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ถ”๊ฐ€ (#151) * refactor: Client - Controller DTO๋ช… ๋ณ€๊ฒฝ (#106) * style: ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐœํ–‰ ์ˆ˜์ • (#106) * style: ๋ฉ”์†Œ๋“œ ๊ฐœํ–‰ ์ˆ˜์ • (#106) * test: ํด๋ž˜์Šค๋ช… ๋ณ€๊ฒฝ ๋ฐ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ (#106) * test: ๋ถˆํ•„์š”ํ•œ ์ฃผ์„ ์‚ญ์ œ (#106) * feat: ์„œ๋ธŒ๋ชจ๋“ˆ ์ถ”๊ฐ€ (#143) * refactor: ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ์ ‘๊ทผ ์ œ์–ด์ž ๋ณ€๊ฒฝ (#106) * refactor: application-prod.yml ์‚ญ์ œ (#106) * refactor: ์ ์šฉ๋˜์ง€ ์•Š๋Š” Bean Validation ์‚ญ์ œ (#106) * refactor: request DTO์— Bean Validation ์ถ”๊ฐ€ (#106) * refactor: application-prod.yml ์‚ญ์ œ (#106) * refactor: ์„œ๋ธŒ๋ชจ๋“ˆ ์ˆ˜์ • * refactor: ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ˆ˜์ • (#106) * refactor: DTO ๋„ค์ด๋ฐ ์ˆ˜์ • (#106) * [#169] ํŒŒ์ผ ์ฃผ์†Œ๊ฐ€ ์ œ๋Œ€๋กœ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • (#170) * fix: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“ˆ import๋กœ ์ธํ•œ ๋นŒ๋“œ ์—๋Ÿฌ ์ˆ˜์ • * fix: ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ์ œ๋Œ€๋กœ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • * refactor:์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” import ์ œ๊ฑฐ * [fix] ํ”„๋ก ํŠธ์—”๋“œ ์ด์Šˆ ์ˆ˜์ • (#171) * fix: ์ƒˆ๋กœ๊ณ ์นจ์‹œ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ์ˆ˜์ • * fix: ์˜คํƒ€์ˆ˜์ • * fix: query์— ์ž๊ธฐ ์ด๋ฆ„์œผ๋กœ profileํŽ˜์ด์ง€ ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ redirect * feat: ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ๋นˆ ๊ฒŒ์‹œ๋ฌผ ํ‘œ์‹œ ์ถ”๊ฐ€ * [fix] ํ”„๋ก ํŠธ์—”๋“œ ๋ฒ„๊ทธ ์ˆ˜์ • (#172) * refactor: ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ * fix: url ์˜คํƒ€ ์ˆ˜์ • * fix: ๊ฒŒ์‹œ๋ฌผ ํƒœ๊ทธ ๋ฌธ์ž์—ด ํŒŒ์‹ฑ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ * [#173] Feature/loader and infinite scroll container (#175) * feat: Loader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * feat: InfiniteScrollContainer ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * [#90] AddPostPage ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#176) * feat: AddPostPage ๊ตฌ์„ฑ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - PostAddStepHeader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - PostContentUploader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - RepositorySelector ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - TagInputForm ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - githube ์•„์ด์ฝ˜ ์ถ”๊ฐ€ * feat: separatorColor theme ์ƒ‰์ƒ ์ถ”๊ฐ€ * feat: AddPostPage ๊ตฌํ˜„ - ImageUploader ์ปดํฌ๋„ŒํŠธ prop ๋ช… ๋ณ€๊ฒฝ - ๊ฒŒ์‹œ๋ฌผ ์—…๋กœ๋“œ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋“ค์˜ ํƒ€์ž… ์ถ”๊ฐ€ - ๊ฒŒ์‹œ๋ฌผ ์—…๋กœ๋“œ์— ์‚ฌ์šฉ๋˜๋Š” API_URL, GITHUB_URL, STEPS ์ƒ์ˆ˜ ์ถ”๊ฐ€ - PostAddDataContext & PostAddStepContext ์ถ”๊ฐ€ * fix: Noto Sans ์›นํฐํŠธ๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ * feat: requestAddPost ์š”์ฒญ ํ•จ์ˆ˜ ๊ตฌํ˜„ * feat: Input ์ปดํฌ๋„ŒํŠธ์— name prop ์ถ”๊ฐ€ * feat: LIMIT ์ƒ์ˆ˜ ๊ฐ์ฒด์— FEED_COUNT_PER_FETCH ์†์„ฑ ์ถ”๊ฐ€ * feat: requestGetHomeFeedPosts ์š”์ฒญ ํ•จ์ˆ˜์— ๊ธฐ๋ณธ pageIndex ์ œ๊ณต * feat: PostAddDataContextProvider ์ ์šฉ ์ง€์  ๋ณ€๊ฒฝ App -> AddPostPage ์ปดํฌ๋„ŒํŠธ ๋ฐ”๋กœ ์œ„ * feat: ํƒœ๊ทธ ์ถ”๊ฐ€ ํ›„ ํƒœ๊ทธ ์ž…๋ ฅ Input ๋‚ด์šฉ์ด ๋น„์›Œ์ง€๋„๋ก ์„ค์ • * [#161] ํšŒ์›/๋น„ํšŒ์› ๋ชจ๋‘ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” API ํ† ํฐ ๊ฒ€์ฆ ๋กœ์ง ์ˆ˜์ • (#167) * refactor: ํ‘œํ˜„ ๊ณ„์ธต๊ณผ ์‘์šฉ ๊ณ„์ธต์˜ ๋ฐ˜ํ™˜ํ•˜๋Š” DTO ๋„ค์ด๋ฐ ํ†ต์ผ * refactor: ํšŒ์›/๋น„ํšŒ์› ๋ชจ๋‘ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” API ํ† ํฐ ๊ฒ€์ฆ ๋กœ์ง์„ ์ˆ˜์ •ํ•œ๋‹ค. - ๊ธฐ์กด ๋กœ์ง: ํšŒ์›/๋น„ํšŒ์› ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๋Š” API (ex. /api/posts)์—์„œ ํ† ํฐ์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ GuestUser๋กœ ์ฒ˜๋ฆฌ. - ์ˆ˜์ • ๋กœ์ง: ํšŒ์›/๋น„ํšŒ์› ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๋Š” API (ex. /api/posts)์—์„œ ํ† ํฐ์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ 401 ์˜ˆ์™ธ ๋ฐœ์ƒ. * chore: ์„ค์ • ์ˆ˜์ • * refactor: ์ƒ์ˆ˜ํ™” * refactor: ํฌ๋งทํŒ… ์ˆ˜์ • * [#128] Infinite Scroll ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#178) * feat: Infinite Scroll ๊ธฐ๋Šฅ ๊ตฌํ˜„ * feat: ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ fetch ๋ฐ›๋„๋ก ์ˆ˜์ • * feat: TagFeedPage & UserFeed ํŽ˜์ด์ง€ ์ถ”๊ฐ€ - ๊ธฐ๋Šฅ ๊ตฌํ˜„ X - PAGE_URL ์ƒ์ˆ˜ ์ถ”๊ฐ€ * feat: ๊ธฐ์กด์˜ ํ‰๋ฌธ์œผ๋กœ ์ œ๊ณต๋˜๋˜ userName ์„ ๋กœ๊ทธ์ธ ๋œ ์œ ์ € ์ด๋ฆ„์ด ์ œ๊ณต๋˜๋„๋ก ๋ณ€๊ฒฝ * [#177] ๊ฒŒ์‹œ๋ฌผ ์‹œ๊ฐ„ ํ˜•์‹ ์ถ”๊ฐ€ (#180) * feat: ๊ฒŒ์‹œ๋ฌผ ์‹œ๊ฐ„ ์ •๋ณด ์ˆ˜์ • * fix: ์‹œ๊ฐ„ ํ˜•์‹ ์ˆ˜์ • * [#181] ์š”์ฒญ์— userName ์ด ๋™์ ์œผ๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ (#182) * feat: Infinite Scroll ๊ธฐ๋Šฅ ๊ตฌํ˜„ * feat: ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ fetch ๋ฐ›๋„๋ก ์ˆ˜์ • * feat: TagFeedPage & UserFeed ํŽ˜์ด์ง€ ์ถ”๊ฐ€ - ๊ธฐ๋Šฅ ๊ตฌํ˜„ X - PAGE_URL ์ƒ์ˆ˜ ์ถ”๊ฐ€ * feat: ๊ธฐ์กด์˜ ํ‰๋ฌธ์œผ๋กœ ์ œ๊ณต๋˜๋˜ userName ์„ ๋กœ๊ทธ์ธ ๋œ ์œ ์ € ์ด๋ฆ„์ด ์ œ๊ณต๋˜๋„๋ก ๋ณ€๊ฒฝ * fix: ์š”์ฒญ์— userName ์ด ๋™์ ์œผ๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ - ํ•„์š”์—†๋Š” console.log ์ œ๊ฑฐ * fix: userName ๊ณผ repositoryName ์ด ์—†์„ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ fetch ๋˜๋Š” ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐ (#186) - userName ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š์€ ๋ฌธ์ œ ํ•ด๊ฒฐ * refactor: ํ™ˆํ”ผ๋“œ๋ฅผ ์ตœ์‹  ์ˆœ์œผ๋กœ ์กฐํšŒํ•˜๋„๋ก ์ˆ˜์ • (#189) (#191) * [#162] ํƒœ๊ทธ ์ถ”์ถœ API ๋ช…์„ธ ๋ณ€๊ฒฝ (#166) * refactor: ํƒœ๊ทธ ์ถ”์ถœ api์—์„œ name ์ œ์™ธ (#162) * [#106] request DTO ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ถ”๊ฐ€ (#151) * refactor: Client - Controller DTO๋ช… ๋ณ€๊ฒฝ (#106) * style: ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐœํ–‰ ์ˆ˜์ • (#106) * style: ๋ฉ”์†Œ๋“œ ๊ฐœํ–‰ ์ˆ˜์ • (#106) * test: ํด๋ž˜์Šค๋ช… ๋ณ€๊ฒฝ ๋ฐ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ (#106) * test: ๋ถˆํ•„์š”ํ•œ ์ฃผ์„ ์‚ญ์ œ (#106) * feat: ์„œ๋ธŒ๋ชจ๋“ˆ ์ถ”๊ฐ€ (#143) * refactor: ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ์ ‘๊ทผ ์ œ์–ด์ž ๋ณ€๊ฒฝ (#106) * refactor: application-prod.yml ์‚ญ์ œ (#106) * refactor: ์ ์šฉ๋˜์ง€ ์•Š๋Š” Bean Validation ์‚ญ์ œ (#106) * refactor: request DTO์— Bean Validation ์ถ”๊ฐ€ (#106) * refactor: application-prod.yml ์‚ญ์ œ (#106) * refactor: ์„œ๋ธŒ๋ชจ๋“ˆ ์ˆ˜์ • * refactor: ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ˆ˜์ • (#106) * refactor: DTO ๋„ค์ด๋ฐ ์ˆ˜์ • (#106) * [#169] ํŒŒ์ผ ์ฃผ์†Œ๊ฐ€ ์ œ๋Œ€๋กœ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • (#170) * fix: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“ˆ import๋กœ ์ธํ•œ ๋นŒ๋“œ ์—๋Ÿฌ ์ˆ˜์ • * fix: ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ์ œ๋Œ€๋กœ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • * refactor:์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” import ์ œ๊ฑฐ * [fix] ํ”„๋ก ํŠธ์—”๋“œ ์ด์Šˆ ์ˆ˜์ • (#171) * fix: ์ƒˆ๋กœ๊ณ ์นจ์‹œ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ์ˆ˜์ • * fix: ์˜คํƒ€์ˆ˜์ • * fix: query์— ์ž๊ธฐ ์ด๋ฆ„์œผ๋กœ profileํŽ˜์ด์ง€ ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ redirect * feat: ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ๋นˆ ๊ฒŒ์‹œ๋ฌผ ํ‘œ์‹œ ์ถ”๊ฐ€ * [fix] ํ”„๋ก ํŠธ์—”๋“œ ๋ฒ„๊ทธ ์ˆ˜์ • (#172) * refactor: ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ * fix: url ์˜คํƒ€ ์ˆ˜์ • * fix: ๊ฒŒ์‹œ๋ฌผ ํƒœ๊ทธ ๋ฌธ์ž์—ด ํŒŒ์‹ฑ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ * [#173] Feature/loader and infinite scroll container (#175) * feat: Loader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * feat: InfiniteScrollContainer ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * [#90] AddPostPage ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ (#176) * feat: AddPostPage ๊ตฌ์„ฑ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - PostAddStepHeader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - PostContentUploader ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - RepositorySelector ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - TagInputForm ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - githube ์•„์ด์ฝ˜ ์ถ”๊ฐ€ * feat: separatorColor theme ์ƒ‰์ƒ ์ถ”๊ฐ€ * feat: AddPostPage ๊ตฌํ˜„ - ImageUploader ์ปดํฌ๋„ŒํŠธ prop ๋ช… ๋ณ€๊ฒฝ - ๊ฒŒ์‹œ๋ฌผ ์—…๋กœ๋“œ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋“ค์˜ ํƒ€์ž… ์ถ”๊ฐ€ - ๊ฒŒ์‹œ๋ฌผ ์—…๋กœ๋“œ์— ์‚ฌ์šฉ๋˜๋Š” API_URL, GITHUB_URL, STEPS ์ƒ์ˆ˜ ์ถ”๊ฐ€ - PostAddDataContext & PostAddStepContext ์ถ”๊ฐ€ * fix: Noto Sans ์›นํฐํŠธ๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ * feat: requestAddPost ์š”์ฒญ ํ•จ์ˆ˜ ๊ตฌํ˜„ * feat: Input ์ปดํฌ๋„ŒํŠธ์— name prop ์ถ”๊ฐ€ * feat: LIMIT ์ƒ์ˆ˜ ๊ฐ์ฒด์— FEED_COUNT_PER_FETCH ์†์„ฑ ์ถ”๊ฐ€ * feat: requestGetHomeFeedPosts ์š”์ฒญ ํ•จ์ˆ˜์— ๊ธฐ๋ณธ pageIndex ์ œ๊ณต * feat: PostAddDataContextProvider ์ ์šฉ ์ง€์  ๋ณ€๊ฒฝ App -> AddPostPage ์ปดํฌ๋„ŒํŠธ ๋ฐ”๋กœ ์œ„ * feat: ํƒœ๊ทธ ์ถ”๊ฐ€ ํ›„ ํƒœ๊ทธ ์ž…๋ ฅ Input ๋‚ด์šฉ์ด ๋น„์›Œ์ง€๋„๋ก ์„ค์ • * [#161] ํšŒ์›/๋น„ํšŒ์› ๋ชจ๋‘ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” API ํ† ํฐ ๊ฒ€์ฆ ๋กœ์ง ์ˆ˜์ • (#167) * refactor: ํ‘œํ˜„ ๊ณ„์ธต๊ณผ ์‘์šฉ ๊ณ„์ธต์˜ ๋ฐ˜ํ™˜ํ•˜๋Š” DTO ๋„ค์ด๋ฐ ํ†ต์ผ * refactor: ํšŒ์›/๋น„ํšŒ์› ๋ชจ๋‘ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” API ํ† ํฐ ๊ฒ€์ฆ ๋กœ์ง์„ ์ˆ˜์ •ํ•œ๋‹ค. - ๊ธฐ์กด ๋กœ์ง: ํšŒ์›/๋น„ํšŒ์› ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๋Š” API (ex. /api/posts)์—์„œ ํ† ํฐ์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ GuestUser๋กœ ์ฒ˜๋ฆฌ. - ์ˆ˜์ • ๋กœ์ง: ํšŒ์›/๋น„ํšŒ์› ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๋Š” API (ex. /api/posts)์—์„œ ํ† ํฐ์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ 401 ์˜ˆ์™ธ ๋ฐœ์ƒ. * chore: ์„ค์ • ์ˆ˜์ • * refactor: ์ƒ์ˆ˜ํ™” * refactor: ํฌ๋งทํŒ… ์ˆ˜์ • * [#128] Infinite Scroll ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#178) * feat: Infinite Scroll ๊ธฐ๋Šฅ ๊ตฌํ˜„ * feat: ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ fetch ๋ฐ›๋„๋ก ์ˆ˜์ • * feat: TagFeedPage & UserFeed ํŽ˜์ด์ง€ ์ถ”๊ฐ€ - ๊ธฐ๋Šฅ ๊ตฌํ˜„ X - PAGE_URL ์ƒ์ˆ˜ ์ถ”๊ฐ€ * feat: ๊ธฐ์กด์˜ ํ‰๋ฌธ์œผ๋กœ ์ œ๊ณต๋˜๋˜ userName ์„ ๋กœ๊ทธ์ธ ๋œ ์œ ์ € ์ด๋ฆ„์ด ์ œ๊ณต๋˜๋„๋ก ๋ณ€๊ฒฝ * [#177] ๊ฒŒ์‹œ๋ฌผ ์‹œ๊ฐ„ ํ˜•์‹ ์ถ”๊ฐ€ (#180) * feat: ๊ฒŒ์‹œ๋ฌผ ์‹œ๊ฐ„ ์ •๋ณด ์ˆ˜์ • * fix: ์‹œ๊ฐ„ ํ˜•์‹ ์ˆ˜์ • * [#181] ์š”์ฒญ์— userName ์ด ๋™์ ์œผ๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ (#182) * feat: Infinite Scroll ๊ธฐ๋Šฅ ๊ตฌํ˜„ * feat: ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ fetch ๋ฐ›๋„๋ก ์ˆ˜์ • * feat: TagFeedPage & UserFeed ํŽ˜์ด์ง€ ์ถ”๊ฐ€ - ๊ธฐ๋Šฅ ๊ตฌํ˜„ X - PAGE_URL ์ƒ์ˆ˜ ์ถ”๊ฐ€ * feat: ๊ธฐ์กด์˜ ํ‰๋ฌธ์œผ๋กœ ์ œ๊ณต๋˜๋˜ userName ์„ ๋กœ๊ทธ์ธ ๋œ ์œ ์ € ์ด๋ฆ„์ด ์ œ๊ณต๋˜๋„๋ก ๋ณ€๊ฒฝ * fix: ์š”์ฒญ์— userName ์ด ๋™์ ์œผ๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ - ํ•„์š”์—†๋Š” console.log ์ œ๊ฑฐ * fix: userName ๊ณผ repositoryName ์ด ์—†์„ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ fetch ๋˜๋Š” ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐ (#186) - userName ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š์€ ๋ฌธ์ œ ํ•ด๊ฒฐ * refactor: ํ™ˆํ”ผ๋“œ๋ฅผ ์ตœ์‹  ์ˆœ์œผ๋กœ ์กฐํšŒํ•˜๋„๋ก ์ˆ˜์ • (#189) (#191) * refactor: ํƒœ๊ทธ ์ถ”์ถœ api์—์„œ name ์ œ์™ธ (#162) Co-authored-by: DAEUN LEE <leede0418@gmail.com> Co-authored-by: Minsung Son <sns2831@gmail.com> Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com> Co-authored-by: SONG WON LEE <swon3210@gmail.com> Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com> * [#192] ํ”„๋กœํ•„ ํŽ˜์ด์ง€ 401์—๋Ÿฌ ๋ฏธ์ฒ˜๋ฆฌ ์ด์Šˆ ํ•ด๊ฒฐ (#196) * refactor: ๋ณ€์ˆ˜ ์ด๋ฆ„ ์ˆ˜์ •, userName์„ username์œผ๋กœ ํ†ต์ผ * refactor: localStorage๊ด€๋ จ ๋กœ์ง ๋ณ€๊ฒฝ * fix: ์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ์— ๋Œ€ํ•ด ํ”„๋กœํ•„ ์ •๋ณด ๋ฆฌํŒจ์น˜ * refactor: storage ๋ชจ๋“ˆ์ด ๊ฐ ํ•จ์ˆ˜๋ฅผ export ํ•˜๋„๋ก ๋ณ€๊ฒฝ * fix: ์œ ํšจํ•˜์ง€ ์•Š์€ ํ† ํฐ์— ๋Œ€ํ•ด ํ”„๋กœํ•„ ํ”ผ๋“œ ๋ฆฌํŒจ์น˜ * fix: github tas api url ๋ณ€๊ฒฝ ๋ฐ˜์˜ * refactor: ํƒ€์ž…๊ฐ€๋“œ ์ถ”๊ฐ€ * [#179] Github Repositories ์กฐํšŒ ๊ธฐ๋Šฅ ์ˆ˜์ • (#195) * refactor: ์„œ๋ธŒ๋ชจ๋“ˆ ์ˆ˜์ • * refactor: Github Repository URL๋„ ํ•จ๊ป˜ ์‘๋‹ต (#179) * refactor: htmlUrl -> url ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ (#179) * [#197] ๋ ˆ์ด์•„์›ƒ ๋ฐ UI๋ฅผ ๊ฐœ์„  (#198) * feat: ๋” ์ด์ƒ ๋ถˆ๋Ÿฌ์˜ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด Loader ๊ฐ€ ์‚ฌ๋ผ์ง€๋„๋ก Infinite Scroll ๊ธฐ๋Šฅ ์ˆ˜์ • - Feed ๋ฐ์ดํ„ฐ๋ฅผ Page ์—์„œ ๋„˜๊ฒจ์ฃผ๋„๋ก ์žฌ์„ค์ • - ์„ธ๋ถ€ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์ง€ ์•Š์€ TagFeedPage, UserFeedPage ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€(HomeFeedPage ์™€ ํ˜„์žฌ๋Š” ๊ธฐ๋Šฅ ๋™์ผ) - ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ์‹œ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ผ PageLoading ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * feat: ๋ชจ๋“  ul ํƒœ๊ทธ์˜ margin์„ 0์œผ๋กœ ํ•˜๋Š” ์ „์—ญ ์Šคํƒ€์ผ๋ง ์ ์šฉ * feat: ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ์‹œ PageLoading ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋„๋ก ์„ค์ • - Profile, RepositorySelector, TagInputForm ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉ * feat: PostItem ์ปดํฌ๋„ŒํŠธ padding ๊ฐ’ ์ˆ˜์ • * feat: ๋ชจ๋ฐ”์ผ ๋ฐ˜์‘ํ˜• break point ์žฌ์„ค์ • & ๊ฐ ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ์˜ Container ์— Page ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ ํ™•์žฅ ์ ์šฉ * feat: RepositorySelector ์ปดํฌ๋„ŒํŠธ์˜ RepositoryList ์— ๊ณ ์ • ๋†’์ด ๊ฐ’ ์ ์šฉ - ๋‚ด์šฉ๋ฌผ์ด ๋†’์ด๊ฐ’์„ ์ดˆ๊ณผํ•  ์‹œ ์Šคํฌ๋กค์ด ๋‚˜ํƒ€๋‚˜๋„๋ก ์„ค์ • * feat: ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ ์ถ”๊ฐ€ (#203) * [#194] REST Docs ์ ์šฉ (#201) * feat: ๋ฌธ์„œํ™” ์ฝ”๋“œ ์ž‘์„ฑ * feature: ๋ฌธ์„œํ™” ๋กœ์ง ๋ฐ ๊ธฐ๋ฐ˜ ํŒŒ์ผ ๊ตฌ์„ฑ * [#207] ๋ฐฐํฌ ์ž๋™ํ™” ๋ฒ„๊ทธ ์ˆ˜์ • (#208) * refactor: ๋นŒ๋“œ์™€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜์˜ stage๋กœ ํ•ฉ์นจ. * refactor: ๊ธฐ์กด process ์ œ๊ฑฐ ์‹œ SIGKILL๋กœ ๋ณ€๊ฒฝ * fix: ๋ˆ„๋ฝ๋œ ์Šคํฌ๋ฆฝํŠธ ์ถ”๊ฐ€. * [#91] Snackbar ๊ตฌํ˜„ (#209) * fix: ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„๊ณผ ์ค‘๋ณต๋˜๋Š” interface ์ด๋ฆ„ ๋ณ€๊ฒฝ * feat: ์Šค๋‚ต๋ฐ” ๊ตฌํ˜„ * chore: ๋ฐฐํฌ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ api url ๋ถ„๊ธฐ (#211) * chore: ํ”„๋ก ํŠธ์—”๋“œ ๋นŒ๋“œ ์ปค๋งจ๋“œ ์ˆ˜์ • (#214) * [#200, #205] ํƒœ๊ทธ ๊ด€๋ จ ์ด์Šˆ ํ•ด๊ฒฐ (#216) * fix: ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์‹œ, ์ดˆ๊ธฐ์— ๋ถˆ๋Ÿฌ์˜จ ๊ธฐ๋ณธ tag ๋“ค์ด ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ * feat: ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์ค‘ ํƒœ๊ทธ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ * fix: break point ์— ๋งž๊ฒŒ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ตœ๋Œ€ ๋„ˆ๋น„๋ฅผ 375px -> 425px ๋กœ ์กฐ์ • * [#217, #110] ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ์ •๋ฆฌ (#218) * chore: ์ธ์ˆ˜/ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฐ common(ํ”ฝ์Šค์ณ ํŒฉํ† ๋ฆฌ, mock api) ํŒจํ‚ค์ง€ ๋ถ„๋ฆฌ (#217) * chore: ๊ธฐ์กด ๋„๋ฉ”์ธ ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€๋“ค์„ unit ํ•˜์œ„๋กœ ์ด๋™ (#217) * refactor: Tag ๊ด€๋ จ Github ํ”Œ๋žซํผ ํด๋ž˜์Šค ์ด๋ฆ„์— Tag ๋ช…์‹œ (#217) * chore: Test ๊ด€๋ จ Configuration ํ†ต์ผ ๋ฐ Github API ๊ด€๋ จ ํด๋ž˜์Šค ํ”„๋กœํ•„ ์„ค์ • (#217) * chore: ๋กฌ๋ณต ์˜์กด์„ฑ ์ถ”๊ฐ€ (#217) * refactor: TestConfiguration ํด๋ž˜์Šค๋ช…์— Infrastructure ๋ช…์‹œ (#217) * refactor: PostFactory ๋นŒ๋” ํŒจํ„ด ์ ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ * refactor: ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: UserFactory ๋นŒ๋” ํŒจํ„ด ์ ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ * refactor: PostFactory ์˜๋ฏธ ์—†๋Š” ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ * refactor: Test Configuration ์ด๋ฆ„ ๋ณ€๊ฒฝ * refactor: user fixture setUp๋กœ์ง ์œ„์น˜ ๋ณ€๊ฒฝ * refactor: DTO Builder ์–ด๋…ธํ…Œ์ด์…˜ ์ ์šฉ ๋ฐ Builder ์ œ๊ณต ํด๋ž˜์Šค ์ œ๊ฑฐ * refactor: gradle.build ํŒŒ์ผ ์ •๋ฆฌ * style: ์˜๋ฏธ์—†๋Š” ๊ณต๋ฐฑ ์ œ๊ฑฐ Co-authored-by: Minsung <sns2831@gmail.com> * [#223, #229] API ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ˜์˜ ๋ฐ Post ์ค‘๋ณต์ œ๊ฑฐ (#235) * fix: API ๋ช…์„ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ˜์˜ - image์™€ imageUrl์— ๋Œ€ํ•œ ํ‚ค๊ฐ’ ๊ตฌ๋ถ„ - public repo๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” api ๋ช…์—์„œ username ์ œ๊ฑฐ * refactor: ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ * feat: ์ƒˆ๋กœ ํŒจ์น˜๋œ post ์ค‘๋ณต์ œ๊ฑฐ * fix: InfiniteScrollContainer effect ์˜์กด์„ฑ ์ˆ˜์ • * refactor: Snackbar ์ปดํฌ๋„ŒํŠธ์˜ ์œ„์น˜๋ฅผ @layout์œผ๋กœ ๋ณ€๊ฒฝ * fix: post interface ์ˆ˜์ • * refactor: ์Šค๋‚ต๋ฐ” ๋ฉ”์‹œ์ง€๋ฅผ push ํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ๋” ๋ช…์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝ * fix: ์ค‘๋ณต๋œ key prop ์ˆ˜์ • * feat: http error ์ฒ˜๋ฆฌ ์œ ํ‹ธ ๊ตฌํ˜„ * refactor: HomeFeedPage์˜ ์ƒํƒœ๋กœ์ง์„ ํ›…์œผ๋กœ ๋ถ„๋ฆฌ * [#204] Issue ๋ฐ PR Template ์ˆ˜์ • (#239) * docs: PR ํ…œํ”Œ๋ฆฟ ์ˆ˜์ • * docs: ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ๋“ฑ๋ก * docs: ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์ˆ˜์ • * docs: ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์ˆ˜์ • * [#222] ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ํ”ผ๋“œ ๋ฒ„๊ทธ ์ˆ˜์ • (#242) * refactor: ์ค‘๋ณต๋œ ๊ฒŒ์‹œ๋ฌผ์„ ์ œ๊ฑฐํ•˜๋Š” ๋กœ์ง์„ util๋กœ ๋ถ„๋ฆฌ * feat: ํ”„๋กœํ•„ ํ”ผ๋“œ์— ๋ฌดํ•œ ์Šคํฌ๋กค ๊ธฐ๋Šฅ ์ถ”๊ฐ€ * refactor: profile page์˜ ์ƒํƒœ๋ฅผ context๋กœ ๋ถ„๋ฆฌ * feat: ํŒ”๋กœ์šฐ ๋ฒ„ํŠผ์— ๋กœ๋”ฉ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€ * refactor: ๋ถˆํ•„์š”ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐ * refactor: ProfilePage ๊ตฌ์กฐ ๊ฐœ์„  - ํ›…์„ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ์ˆ˜์ค€์„ ์ž‘์€ ๋ฒ”์œ„๋กœ ์ˆ˜์ • - context๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ์„ ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ * [#219] ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ, ํ•ธ๋“ค๋ง ๊ตฌํ˜„ (#241) * feat: BackDrop & MessageModalPortal ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - index.html ์— div#modal ํƒœ๊ทธ ์ถ”๊ฐ€ - MessageModalPortal ์€ ๋ฆฌ์•กํŠธ ํฌํ„ธ์„ ์ ์šฉํ•˜์—ฌ ๊ตฌํ˜„ - ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•˜๋„๋ก useMessageModal ์ปค์Šคํ…€ ํ›… ์ œ์ž‘ * refactor: ํ•„์š” ์—†๋Š” import ๊ตฌ๋ฌธ ์‚ญ์ œ * feat: PostContentUploader ์ปดํฌ๋„ŒํŠธ ์•ˆ์˜ ImageSlider & ImageUploader ์™€ TextEditor ๊ฐ„์˜ margin ์ถ”๊ฐ€ * feat: ์ƒˆ๋กœ์šด limits, messages ์ƒ์ˆ˜ ์ถ”๊ฐ€ - message -> messages ๋กœ ํŒŒ์ผ ์ด๋ฆ„ ๋ณ€๊ฒฝ * feat: ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ step ๋ผ์šฐํŒ… path ์— ํ•œ๊ธ€์ด ๋“ค์–ด๊ฐ€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ * fix: ํ•„์š”ํ•œ ๋ณ€์ˆ˜ import ๊ฒฝ๋กœ ์ˆ˜์ • * feat: ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์ค‘ ๊ฐ๊ฐ์˜ ์—๋Ÿฌ์— ๋Œ€ํ•œ ์ด์šฉ์ž ํ”ผ๋“œ๋ฐฑ ๊ตฌํ˜„ - PostAddFormData -> PostUploadData์œผ๋กœ ๋ณ€๊ฒฝ - ์ด์šฉ์ž์˜ ๊นƒํ—ˆ๋ธŒ ์ƒ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” public repository ๊ฐ€ ์—†์œผ๋ฉด ํ”ผ๋“œ๋ฐฑ ํ›„ ์ด์ „ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‹œํ‚จ๋‹ค. - repository ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๊ณ  ์ด๋ฏธ์ง€ & ๊ธ€ ์ž‘์„ฑ์œผ๋กœ ๋„˜์–ด๊ฐ€๋ ค ํ•œ๋‹ค๋ฉด ์ด๋ฅผ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์ •ํ•ด์ง„ ์šฉ๋Ÿ‰์„ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€ ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ง„ ๊ฐœ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ์ด๋ฏธ์ง€ ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ง„ ๊ฐœ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ํ…์ŠคํŠธ ๊ธธ์ด๊ฐ€ ์ •ํ•ด์ง„ ๊ธธ์ด๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ๋“ค์–ด๊ฐ„ ํƒœ๊ทธ๋“ค ์ค‘ ์ค‘๋ณต์ด ์žˆ์œผ๋ฉด ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ํƒœ๊ทธ์— '-', '_' ๋ฅผ ์ œ์™ธํ•œ ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ๋“ค์–ด๊ฐ”๋‹ค๋ฉด ์ด๋ฅผ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. * feat: ErrorResponse ํƒ€์ž… ์ƒ์„ฑ ๋ฐ ์ ์šฉ * feat: API ์š”์ฒญ ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๊ตฌํ˜„ * [#232] ์œ ์ € ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (#249) * refactor: ์ฝ”๋“œ ์ •๋ฆฌ (#232) * refactor: ์‚ฌ์šฉ์ž ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์ถ”๊ฐ€ (#232) - ๊ฒŒ์ŠคํŠธ์ธ ๊ฒฝ์šฐ UnauthorizedException ๋ฐœ์ƒ * refactor: DTO ๊ด€๋ จ ๋„ค์ด๋ฐ ์ •๋ฆฌ (#232) * test: ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * test: Data JPA ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * test: ๋ถˆํ•„์š”ํ•œ ์ƒ์ˆ˜ ์‚ญ์ œ (#232) * test: ์œ ์ € ์ด๋ฆ„ ๋ณ€๊ฒฝ (#232) - loginUser/guestUser -> testUser๋กœ ํ†ต์ผ * test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#232) * test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * test: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * test: ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * refactor: Builder ์‚ฌ์šฉ (#232) * refactor: Follow ๊ฐ์ฒด์— ์ฑ…์ž„ ์œ„์ž„ (#232) * test: ์ ‘๊ทผ ์ œ์–ด์ž ์ˆ˜์ • (#232) * refactor: DTO ๋ฆฌํŒฉํ† ๋ง (#232) * test: ๋ถˆํ•„์š”ํ•œ ํ•„๋“œ ์‚ญ์ œ (#232) * test: WebEnvironment ์˜ต์…˜์„ RANDOM_PORT -> NONE์œผ๋กœ ๋ณ€๊ฒฝ (#232) * test: @SpringBootTest -> @DataJpaTest ๋ณ€๊ฒฝ (#232) * refactor: API ๋ช…์„ธ์— ๋งž๊ฒŒ ํ•„๋“œ๋ช… ๋ณ€๊ฒฝ (#232) - image -> imageUrl ๋ณ€๊ฒฝ * [#240] Authentication ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (#247) * test: authentication ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (#240) * test: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (#240) * refactor: ๊นƒํ—™ ์ธ์ฆ ์˜ˆ์™ธ ๋ณ€๊ฒฝ (#240) * test: Authentication ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ํ”ผ๋“œ๋ฐฑ ์ ์šฉ (#240) * test: HttpHeaders.AUTHORIZATION ์œผ๋กœ ๋ณ€๊ฒฝ (#240) * [#226, #227] ํ”„๋กœํ•„ ์ˆ˜์ • ๋ชจ๋‹ฌ ๊ตฌํ˜„ (#255) * feat: Button ์ปดํฌ๋„ŒํŠธ์— padding prop ์ถ”๊ฐ€ * feat: cancel-no-circle ์•„์ด์ฝ˜ ์ถ”๊ฐ€ * refactpr: BackDrop์„ ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ๋กœ ์ˆ˜์ • * refactor: textEditor ๋ฐฐ๊ฒฝ์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ˆ˜์ • * chore: eslint no empty function ์˜ต์…˜ off * refactor: css keyframes ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌ * feat: ์นด๋ฉ”๋ผ ์•„์ด์ฝ˜ ์ถ”๊ฐ€ * feat: TextEditor ์ปดํฌ๋„ŒํŠธ์— indicator ์ถ”๊ฐ€(#226) * refactor: z-index๋ฅผ ์ปจ๋ฒค์…˜์— ๋งž๊ฒŒ ์ˆ˜์ • * feat: ํ”„๋กœํ•„ ์ˆ˜์ • ๋ชจ๋‹ฌ ๊ตฌํ˜„(#227) * [#246] ๋Œ“๊ธ€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง (#250) * refactor: ๋Œ“๊ธ€ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: ์ผ€๋นˆ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ * refactor: ๋Œ“๊ธ€ ์กฐํšŒ ๋ฐ˜ํ™˜์‹œ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ๋‚˜์˜ค๋„๋ก ์ˆ˜์ • * [#220, #226] ๋„ค๋น„๊ฒŒ์ด์…˜ ui ์ˆ˜์ • ๋ฐ ์ด๋ฏธ์ง€ ์ธ๋””์ผ€์ดํ„ฐ ์ถ”๊ฐ€ (#256) * refactor: ๋น„๋กœ๊ทธ์ธ ์‹œ์—๋„ ํ™ˆ๋„ค์ด๊ฒŒ์ด์…˜ ๋…ธ์ถœ * fix: header์™€ image slider์˜ ์Œ“์ž„ ์ˆœ์„œ ๋ฒ„๊ทธ ํ•ด๊ฒฐ * feat: ์ด๋ฏธ์ง€ ์ธ๋””์ผ€์ดํ„ฐ ๊ตฌํ˜„ * [#234] ํƒœ๊ทธ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง (#245) * refactor: ํƒœ๊ทธ ๋„๋ฉ”์ธ ๋ถ€๋ถ„ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: ํƒœ๊ทธ ์Šฌ๋ผ์ด์‹ฑ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: ํƒœ๊ทธ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: ํƒœ๊ทธ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: connection pool ์‚ฌ์šฉํ•˜๋Š” ์ปค์Šคํ…€ RestTemplate ์ ์šฉ * refactor: Post์™€ Tag ์—ฐ๊ด€๊ด€๊ณ„ ๋ถ€๋ถ„ ํ”„๋กœ๋•์…˜ ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง * refactor: ์ผ€๋นˆ ํ”ผ๋“œ๋ฐฑ ์ ์šฉ - ParameterizedTest ์ด์šฉํ•˜๋„๋ก ์ˆ˜์ • - ์ค‘๋ณต๋œ ํ…Œ์ŠคํŠธ ์ œ๊ฑฐ * refactor: ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ * refactor: ์†Œ๋ฌธ์ž๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜๋„๋ก ์ˆ˜์ • * refactor: ๋„ˆ์ž˜ ํ”ผ๋“œ๋ฐฑ ์ ์šฉ * refactor: ๊นƒํ—™์—์„œ ํƒœ๊ทธ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜๋˜๋„๋ก ๋ฆฌํŒฉํ† ๋ง * [#221, #225] ํ”„๋กœํ•„ ํ”ผ๋“œ ํด๋ฆญ์‹œ ์œ ์ € ํ”ผ๋“œ ํŽ˜์ด์ง€๋กœ ์ด๋™ (#260) * fix: ํ—ค๋”์—์„œ height๊ฐ€ ํฐ ์š”์†Œ๋“ค์˜ ๋ ˆ์ด์•„์›ƒ์ด ๊นจ์ง€๋Š” ๋ฒ„๊ทธ ํ•ด๊ฒฐ * fix: slideButtonKind ๋ณต๊ตฌ * refactor: ํƒ€์ž… ๋‹จ์–ธ ์ œ๊ฑฐ * feat: ํ”„๋กœํ•„ํ”ผ๋“œ์—์„œ ํฌ์ŠคํŠธ ํด๋ฆญ์‹œ ์œ ์ € ํ”ผ๋“œ ํŽ˜์ด์ง€๋กœ ์ด๋™ * [#251] Post ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง (#252) * refactor: infrastructure ์œ ๋‹›ํ…Œ์ŠคํŠธ, comment ์œ ๋‹›ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: Post ๊ด€๋ จ ์œ ๋‹›ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: Post application ๋ ˆ์ด์–ด ๊ด€๋ จ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: Post ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: PostControllerTest ๋ฆฌํŒฉํ† ๋ง ์ถ”๊ฐ€ * test: post builder๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ * refactor: ๋ฆฌ๋ฒ ์ด์Šค ํ›„ ๊นจ์ง€๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜์ • ๋ฐ ๋ˆ„๋ฝ๋œ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ * [#183] ๊ฒŒ์‹œ๊ธ€ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ (#265) * feat: Feed ์ปดํฌ๋„ŒํŠธ ๋ช…์นญ์„ HomeFeed ๋กœ ๋ณ€๊ฒฝ * feat: HomeFeed ์ปดํฌ๋„ŒํŠธ์—์„œ ๋กœ๊ทธ์ธ ๋œ ์ƒํƒœ์—์„œ ์ž์‹ ์˜ ๊ฐœ์‹œ๊ธ€๋งŒ ์ˆ˜์ • ์•„์ด์ฝ˜์ด ๋œจ๋„๋ก ๋ณ€๊ฒฝ * feat: BottomSliderPortal ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * feat: CommentSlider ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * chore: Layout ์ƒ์ˆ˜ ๊ฐ์ฒด ์ด๋ฆ„ LAYOUT ์œผ๋กœ ๋ณ€๊ฒฝ * feat: getLastHash util ํ•จ์ˆ˜ ๊ตฌํ˜„ * feat: getTabTextColor util ํ•จ์ˆ˜ ๊ตฌํ˜„ * feat: useBottomSlider ํ›… ๊ตฌํ˜„ * refactor: PostItem ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ • - ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์—์„œ ๋Œ“๊ธ€ ์ž…๋ ฅ ๊ฐ’ ์ €์žฅ ๋ฐ ์ˆ˜์ •์„ ๋‹ด๋‹นํ•˜์ง€ ์•Š๋„๋ก ์ˆ˜์ • - ๋Œ“๊ธ€ ์ถ”๊ฐ€ ์•„์ด์ฝ˜ ๋ฒ„ํŠผ ์‚ญ์ œ - Post, CommentData ํƒ€์ž…์˜ id ์†์„ฑ ํƒ€์ž…์„ string -> number ๋กœ ์ˆ˜์ • * feat: ๋Œ“๊ธ€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - Tabs ์ปดํฌ๋„ŒํŠธ๊ฐ€ tabIndicatorKind ๊ฐ’์— ๋”ฐ๋ผ ๋‹ค๋ฅธ indicator ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ • - useFeed -> useFeedMutation ์œผ๋กœ ์ˆ˜์ • - HomeFeedPage ์ƒ์—์„œ useFeed ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ useHomeFeed ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ • - COMMENT_INPUT_HEIGHT ๋ ˆ์ด์•„์›ƒ ์ƒ์ˆ˜ ์ถ”๊ฐ€ - ์ž„์‹œ์šฉ UserFeedPage ์™€ TagFeedPage ์—…๋ฐ์ดํŠธ (์—ฌ์ „ํžˆ ์ž„์‹œ์šฉ) * fix: CommentSlider ํ•ด์‹œ ๋ผ์šฐํŒ…์œผ๋กœ ์ธํ•ด ํŠน์ • UserFeedPage ๋ Œ๋”๋ง์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ - CommentSlider ๋ฅผ ํ† ๊ธ€ํ•  ๋•Œ๋„ history.location ์˜ state ์™€ query param ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ • - NavigationHeader ์ปดํฌ๋„ŒํŠธ์˜ height: content-fit ์†์„ฑ ์‚ญ์ œ & ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์˜ padding ๊ฐ’ ์ˆ˜์ • - HomeFeed -> Feed ๋กœ ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ ์ˆ˜์ • * feat: ๋Œ“๊ธ€ ์ €์žฅ ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€ * [#199, #248, #184] ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ & ๊ฒŒ์‹œ๊ธ€ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ๊ตฌํ˜„ (#271) * feat: Feed ์ปดํฌ๋„ŒํŠธ ๋ช…์นญ์„ HomeFeed ๋กœ ๋ณ€๊ฒฝ * feat: ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ & ์ด๋ฏธ์ง€๊ฐ€ ์—†์„ ์‹œ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ ๊ตฌํ˜„ - ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ButtonDrawer ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * feat: TagInputForm ์ƒ์—์„œ Tag ์ž…๋ ฅ ์ค‘ ๋ชจ๋ฐ”์ผ ๊ฐ€์ƒ ํ‚ค๋ณด๋“œ๊ฐ€ ๋ ˆ์ด์•„์›ƒ์„ ๊นจ๋œจ๋ฆฌ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ - ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ tag input ์„ blur ์ฒ˜๋ฆฌ * [#243] s3 proxy ๊ด€๋ จ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#244) * chore: s3-proxy properties ํฌ๋งท์„ yaml๋กœ ์ˆ˜์ • (#243) * chore: ํ”„๋กœ๋•์…˜ ํŒจํ‚ค์ง€๋ช… ์ปจ๋ฒค์…˜๋งž๊ฒŒ ์ˆ˜์ • (#243) * test: S3Storage ์Šฌ๋ผ์ด์‹ฑ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#243) * test: StorageService ์Šฌ๋ผ์ด์‹ฑ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ถ”๊ฐ€ (#243) * refactor: StorageController ์Šฌ๋ผ์ด์‹ฑ ํ…Œ์ŠคํŠธ ๋ถˆํ•„์š”ํ•œ given์ ˆ ์‚ญ์ œ (#243) * refactor: ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ๋ถˆํ•„์š”ํ•œ throws์ ˆ ์‚ญ์ œ (#243) * refactor: ์ปค์Šคํ…€ ์˜ˆ์™ธ ์ปจ๋ฒค์…˜์— ๋งž๊ฒŒ ์—๋Ÿฌ ์ฝ”๋“œ ์ถ”๊ฐ€ (#243) * refactor: ํŒจํ‚ค์ง€๋ช… ๋ณ€๊ฒฝ ๋ฐ ๊ตฌ๊ธ€ ์ปจ๋ฒค์…˜์— ๋งž๊ฒŒ ์ˆ˜์ • (#243) * refactor: 1์žฅ์ด๋ผ๋„ ์—…๋กœ๋“œ ์‹คํŒจ์‹œ ์˜ˆ์™ธ ๋ฐœ์ƒํ•˜๋„๋ก ๋ณ€๊ฒฝ (#243) * [#230] ๊ฒ€์ƒ‰ํŽ˜์ด์ง€ ๊ตฌํ˜„ (#274) * feat: ๊ฒ€์ƒ‰ mock data ์ถ”๊ฐ€ * fix: LoginWrapper children ํƒ€์ž… ์ˆ˜์ • * feat: search context ์ถ”๊ฐ€ * feat: SearchHeader์— SearchContext ์ ์šฉ * feat: SearchPage ๋ฐ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ * fix: ์˜คํƒ€์ˆ˜์ • * ์ถ”๊ฐ€ * refactor: ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ * refactor: useFollow๋ถ„๋ฆฌ ๋ฐ follow mutation ์—๋Ÿฌ์ฒ˜๋ฆฌ ์ˆ˜์ค€ ๋ณ€๊ฒฝ * feat: ์œ ์ € ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—์„œ ํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„ * fix: ๊ฒ€์ƒ‰ํŽ˜์ด์ง€ ์ง„์ž…์‹œ ์ด์ „ ๊ฒ€์ƒ‰ ๊ธฐ๋ก ์ดˆ๊ธฐํ™” * [#253] Github ํ†ต๊ณ„ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#263) * feat: Github ํ†ต๊ณ„ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#253) * test: ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#253) * test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#253) * test: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#253) * test: ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#253) * test: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#253) * style: ๊ฐœํ–‰ ์ถ”๊ฐ€ (#253) * refactor: ํด๋ž˜์Šค๋ช… ๋ณ€๊ฒฝ (#253) - PlatformExtractor -> PlatformContributionExtractor - PlatformApiRequester -> PlatformContributionApiRequester * refactor: @Profile ์ถ”๊ฐ€ (#253) * refactor: ์ƒ์ˆ˜ -> @value ๋ณ€๊ฒฝ (#253) * refactor: ์ปค์Šคํ…€ ์˜ˆ์™ธ ์ถ”๊ฐ€ (#253) * test: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#253) * refactor: Calculator ๊ฐ์ฒด๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ถ„๋ฆฌ (#253) - Service์— ์žˆ๋˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ Calculator ๊ฐ์ฒด๋กœ ์ด๋™ - ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ * test: ๋ถˆํ•„์š”ํ•œ import ์‚ญ์ œ * refactor: ํŒจํ‚ค์ง€ ์œ„์น˜ ๋ณ€๊ฒฝ (#253) - ์ธํ„ฐํŽ˜์ด์Šค๋Š” domain, ๊ตฌํ˜„์ฒด๋Š” infrastructure์— ์œ„์น˜ * style: ์ ‘๊ทผ ์ œ์–ด์ž ์‚ญ์ œ (#253) * refactor: Calculator ์ธํ„ฐํŽ˜์ด์Šค ๋ฉ”์†Œ๋“œ ๋ฐ˜ํ™˜ ํƒ€์ž… ๋ณ€๊ฒฝ (#253) * refactor: try-catch ๋ฌธ์œผ๋กœ ์˜ˆ์™ธ ํ•ธ๋“ค๋ง (#253) * test: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ˆ˜์ • (#253) * refactor: Calculator ์ธํ„ฐํŽ˜์ด์Šค ๋ฉ”์†Œ๋“œ ๋ฐ˜ํ™˜ ํƒ€์ž… ๋ณ€๊ฒฝ (#253) - DTO -> Domain Object * [#277] useFollow ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#278) * feat: SearchPage ๋ฐ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ * refactor: useFollow๋ถ„๋ฆฌ ๋ฐ follow mutation ์—๋Ÿฌ์ฒ˜๋ฆฌ ์ˆ˜์ค€ ๋ณ€๊ฒฝ * refactor: acceessToken์ด ์—†๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์—๋Ÿฌ์ฝ”๋“œ ์ถ”๊ฐ€ * chore: hook ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ๋ฐ ์„ค์ • * refactor: ErrorCode ํƒ€์ž… ์ถ”๊ฐ€ * refactor: handleHTTPError ๋ชจ๋“ˆ ๋ถ„๋ฆฌ - handleHTTPError ํ•จ์ˆ˜๋ฅผ utils/error.ts๋กœ ์ด๋™ - ์ƒ์ˆ˜ ๋ฐ ํƒ€์ž… ๋ถ„๋ฆฌ * test: useFollow ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ * refactor: ํŒŒ์ผ์ด๋ฆ„ ๋ณ€๊ฒฝ - constants/httpError.ts ๋ฅผ constants/error.ts ๋กœ ๋ณ€๊ฒฝ * refactor: useFollow ์—๋Ÿฌ์ฒ˜๋ฆฌ - accesstoken์ด ์—†์„ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์—๋Ÿฌ์ฒ˜๋ฆฌ ์ถ”๊ฐ€ - client error๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด ๊ตฌํ˜„ * [#124, #262, #275, #276] ์š”์ฒญ ๊ด€๋ จ ์ด์Šˆ ํ•ด๊ฒฐ (#280) * fix: ํ”„๋กœํ•„ ์ˆ˜์ • api ํ˜•์‹ ๋ณ€๊ฒฝ - put๋ฉ”์„œ๋“œ์—์„œ post๋ฉ”์„œ๋“œ๋กœ ๋ณ€๊ฒฝ - ๋ณ€๊ฒฝ๋œ ์ด๋ฏธ์ง€๊ฐ€ ์—†์„๊ฒฝ์šฐ ๋นˆ ํŒŒ์ผ ๊ฐ์ฒด ์ „์†ก - ํ•œ ์ค„ ์†Œ๊ฐœ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„๋„ ๊ทธ๋Œ€๋กœ ๋ณด๋‚ด๊ธฐ * fix: ๊ฒ€์ƒ‰ api url ๋ณ€๊ฒฝ * fix: github stats ์š”์†Œ ๋ฐ api url ๋ณ€๊ฒฝ * refactor: ์ตœ์ดˆ ํŽ˜์ด์ง€ ์ง„์ž…์‹œ ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด ๋กœ๊ทธ์•„์›ƒ * fix: ๋‚ด ๊ฒŒ์‹œ๋ฌผ์˜ ํ”„๋กœํ•„ ์˜์—ญ์„ ํด๋ฆญํ•˜๋ฉด ๋‚ด ํ”„๋กœํ•„ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋„๋ก ์ˆ˜์ • * refactor: ์œ ์ €ํ”„๋กœํ•„, ๋‚ดํ”„๋กœํ•„ ๋ถ„๊ธฐ๋ฅผ ProfilePage์—๊ฒŒ ์œ„์ž„ * feat: ์ตœ์ดˆ ์ง„์ž… ์ดํŽ™ํŠธ app์œผ๋กœ ๋ถ„๋ฆฌ * [#257] ๊ฒŒ์‹œ๋ฌผ ์ข‹์•„์š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#264) * feat: ๊ฒŒ์‹œ๋ฌผ ์ข‹์•„์š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#257) * feat: ๊ฒŒ์‹œ๋ฌผ ์ข‹์•„์š” ๋ฐ ์ข‹์•„์š” ์ทจ์†Œ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ตฌํ˜„ (#257) * refactor : ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ (#257) * [#236] ๋กœ๊น… ๊ธฐ๋Šฅ ์„ธํŒ… (#237) * chore: ํ™œ์„ฑ ํ”„๋กœํ•„์— ๋”ฐ๋ฅธ logback ํ™˜๊ฒฝ ์„ค์ • (#236) * feat: ์ „์—ญ ์˜ˆ์™ธ ์–ด๋“œ๋ฐ”์ด์ €์— ๋กœ๊ฑฐ ์ถ”๊ฐ€ ๋ฐ DB / ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ ๋ฐ”์ธ๋”ฉ (#236) * chore: s3proxy directory logback ์„ค์ • ์ถ”๊ฐ€ (#236) * feat: s3proxy ์˜ˆ์™ธ ์–ด๋“œ๋ฐ”์ด์ € ์ถ”๊ฐ€ (#236) * refactor: applicationException ํ•ธ๋“ค๋Ÿฌ ์–ด๋“œ๋ฐ”์ด์ € ๋ฉ”์„œ๋“œ๋ช… ์ˆ˜์ • (#236) * refactor: ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ ๋กœ๊น… ์ „๋žต ์ˆ˜์ • (#236) - ํ…Œ์ŠคํŠธ ๋กœ๊น… ์ „๋žต ์ฝ˜์†”๋กœ ์ˆ˜์ • - DB ๊ด€๋ จ ๋กœ๊ฑฐ ์ข…๋ฅ˜ ํ”„๋กœํ•„๋ณ„ ์žฌ์ •์˜ - ๋ถ€๋ชจ ๋กœ๊ฑฐ๊ฐ€ ์ฐํžˆ์ง€ ์•Š๋„๋ก additivity false ์ถ”๊ฐ€ - ๊ธ€๋กœ๋ฒŒ ์˜ˆ์™ธ ์–ด๋“œ๋ฐ”์ด์ €์— ๋กœ๊น… ์–‘์‹ ์ •์˜ * chore: logback-access ์„ค์ • ์ถ”๊ฐ€ ๋ฐ ํ”„๋กœํ•„๋ณ„ ์„ค์ • ๊ตฌ์„ฑ (#236) * chore: s3proxy ํ”„๋กœ์ ํŠธ logback-access ์„ค์ • ์ถ”๊ฐ€ (#236) * refactor: s3proxy, backend ํ”„๋กœ์ ํŠธ log ํฌ๋งท ๋ณ€๊ฒฝ (#236) * chore: backend logger DB, Access ๋“ฑ ์šฉ๋„๋ณ„ ๋ถ„๋ฆฌ (#236) * chore: s3proxy logger DB, Access ๋“ฑ ์šฉ๋„๋ณ„ ๋ถ„๋ฆฌ (#236) * [#254] ์œ ์ € ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ (#266) * feat: User ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ * refactor: ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ ๋ฆฌํŒฉํ† ๋ง * refactor: ํ”„๋ก ํŠธ์ธก๊ณผ ํ˜‘์˜ํ•œ ๋ถ€๋ถ„ ๋ฆฌํŒฉํ† ๋ง * fix: ๊ฒ€์ƒ‰ ์š”์ฒญ์‹œ user์™€ tag ๋ถ„๋ฆฌ (#283) * [#267] ํ”„๋กœํ•„ ์ˆ˜์ • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ (#279) * feat: ์œ ์ € ํ”„๋กœํ•„ ์ˆ˜์ • ๊ธฐ๋Šฅ ๊ตฌํ˜„ * refactor: ํ”ผ๋“œ๋ฐฑ ์ ์šฉ * refactor: ํ”ผ๋“œ๋ฐฑ ๋ฆฌํŒฉํ† ๋ง * [#269] ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๋ฐ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#272) * feat: ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๋ฐ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#269) * fix: ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๊ธฐ๋Šฅ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#269) * test: ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๊ธฐ๋Šฅ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#269) * fix: ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ๊ธฐ๋Šฅ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#269) * test: ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ๊ธฐ๋Šฅ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#269) * test: ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๊ธฐ๋Šฅ ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#269) * test: ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ๊ธฐ๋Šฅ ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#269) * test: ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๊ธฐ๋Šฅ ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#269) * test: ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ๊ธฐ๋Šฅ ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#269) * test: ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๊ธฐ๋Šฅ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#269) * test: ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ๊ธฐ๋Šฅ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#269) * refactor: ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ์‚ญ์ œ (#269) * test: ๋ถˆํ•„์š”ํ•œ ํ…Œ์ŠคํŠธ ์‚ญ์ œ (#269) * refactor: Command, Query ๋ถ„๋ฆฌ (CQS) (#269) * test: verify() ๊ฐ’ ์ง€์ • (#269) * refactor: ์ƒํƒœ๋ณ„๋กœ update() ๋ถ„๋ฆฌ (#269) * fix: ํ•ด๋‹นํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ๊ฒŒ์‹œ๋ฌผ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋กœ์ง ์ถ”๊ฐ€ (#269) * [#284] ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๋ฐ ์‚ญ์ œ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#285) * test: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#284) * test: ๋ถˆํ•„์š”ํ•œ ํ…Œ์ŠคํŠธ ์‚ญ์ œ (#284) * fix: Github ํ†ต๊ณ„ ์กฐํšŒ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#287) (#288) * refactor: like ๊ด€๋ จ DTO ํ•„๋“œ๋ช… ๋ฒˆ๊ฒฝ (#289) (#291) * fix: restDocs ํ•„๋“œ๋ช… ์ˆ˜์ • ๋ฐ Boolean์œผ๋กœ ๋ณ€๊ฒฝ (#292) (#297) * [#228] ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#286) * feat: Feed ์ปดํฌ๋„ŒํŠธ ๋ช…์นญ์„ HomeFeed ๋กœ ๋ณ€๊ฒฝ * refactor: ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๊ณ  Page ์ปดํฌ๋„ŒํŠธ์—์„œ ๋‚ด๋ ค์ฃผ๋„๋ก ์ˆ˜์ • * feat: ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - ์ปจ๋ฒค์…˜์— ๋งž๊ฒŒ useGithubTagsQuery ๋ฉ”์„œ๋“œ ์ˆ˜์ • - EditPostPage ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - PostEditDataContext, PostEditStepContext ์ถ”๊ฐ€ - usePostEdit, usePostStep ํ›… ์ถ”๊ฐ€ * [#258] ์œ ์ € ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#268) * refactor: User ๋„๋ฉ”์ธ ๋ถ€์กฑํ•œ ํŒ”๋กœ์šฐ, ์–ธํŒ”๋กœ์šฐ ๋“ฑ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#258) * refactor: User equals & hashCode ์ •์˜์‹œ getter ์‚ฌ์šฉ (#258) * refactor: Follow ๋„๋ฉ”์ธ equals & hashCode ์ •์˜์‹œ getter ์‚ฌ์šฉ (#258) * refactor: Following, Follwers ๋ฉ”์„œ๋“œ๋ช… ๋ฐ ์„ ์–ธ ์ˆœ์„œ ๋ณ€๊ฒฝ (#258) * refactor: Followings, Followers ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ ๋ฐ ์ƒ์„ฑ์ž ์ถ”๊ฐ€ (#258) * refactor: User.profile ๊ด€๋ จ ๋„๋ฉ”์ธ ์ฝ”๋“œ ํฌ๋งทํŒ… ๋ฐ setter ์‚ญ์ œ (#258) * refacotr: User ๋‚ด๋ถ€ Posts์— ์ƒ์„ฑ์ž ๋ณ€๊ฒฝ ๋ฐ UserRepository ์˜์†์„ฑ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#258) * refactor: User ์‘์šฉ ๊ณ„์ธต ๋ฉ”์„œ๋“œ ์ถ”์ถœ ๋ฆฌํŒฉํ† ๋ง ๋ฐ DTO getter ์ถ”๊ฐ€ (#258) * refactor: AppUser์˜ UserService ์นจํˆฌ ์ œ๊ฑฐ ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ณ„์ธต ๋ถ„๋ฆฌ (#258) - AppUser๊ฐ€ ์„œ๋น„์Šค ์ฝ”๋“œ์— ์นจํˆฌํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด AppUser ์ถ”์ƒ ํด๋ž˜์Šค์— ๋ณ„๋„์˜ ์ด๋ฆ„ ํ˜ธ์ถœ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•จ * refactor: UserService ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๊ณ„์ธต์ ์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง (#258) * refactor: AuthUserRequest ์•ˆ์“ฐ๋Š” DTO ๋ฐ ์ƒ์„ฑ์ž ์‚ญ์ œ์™€ ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ช… ํ†ต์ผ (#258) * refactor: User ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ nested ์ ์šฉ (#258) * refactor: User ๋ถˆํ•„์š”ํ•œ ์ž„๋ฒ ๋””๋“œ ํƒ€์ž… getter ์‚ญ์ œ ๋ฐ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#258) * refactor: User ์—”ํ‹ฐํ‹ฐ ๋‚ด๋ถ€ ์ž„๋ฒ ๋””๋“œ ํƒ€์ž… ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ protected๋กœ ๋ณ€๊ฒฝ (#258) * refactor: UserRepository ํ…Œ์ŠคํŠธ nested ์ ์šฉ (#258) * refactor: UserService ์Šฌ๋ผ์ด์‹ฑ ํ…Œ์ŠคํŠธ verify ๊ตฌ์ฒดํ™” ๋ฐ ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ (#258) * refactor: UserService ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฐ˜๋ณต๋˜๋Š” given ๋ถ€๋ถ„ ๋ฉ”์„œ๋“œ ์ถ”์ถœ (#258) * refactor: UserController ์Šฌ๋ผ์ด์‹ฑ ํ…Œ์ŠคํŠธ ๋กœ๊ทธ์ธ์—ฌ๋ถ€ ๋ถ„๋ฆฌ ๋ฐ DTO Getter ์ถ”๊ฐ€ (#258) * refactor: User ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ๋ฐ˜๋ณต๋˜๋Š” api ํ˜ธ์ถœ ๋ฉ”์„œ๋“œ ํ†ต์ผ (#258) * refactor: ๋ณ‘ํ•ฉ ์ถฉ๋Œ ํ•ด๊ฒฐ (#258) * refactor: UserDataJpaTest Nested C-D-I ๋ช…์„ธ ๋ณ€๊ฒฝ (#258) * refactor: ์œ ์ € ์ปจํŠธ๋กค๋Ÿฌ ์Šฌ๋ผ์ด์‹ฑ ํ…Œ์ŠคํŠธ verify ์ถ”๊ฐ€ ๋ฐ ํ…Œ์ŠคํŠธ ์˜ค๋ฅ˜ ์ˆ˜์ • (#258) - ๊ธฐ์กด unfollow ํ…Œ์ŠคํŠธ๊ฐ€ ์ž˜๋ชป ์ง„ํ–‰๋˜๊ณ  ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„์„ ํ•ด๊ฒฐ * chore: UserService ํ—ฌํผ ๋ฉ”์„œ๋“œ ์œ„์น˜ ์ˆ˜์ • (#258) * refactor: UserController ์‘๋‹ต ์ƒ์„ฑ ํ—ฌํผ ๋ฉ”์„œ๋“œ ์œ„์น˜ ์ด๋™ (#258) * refactor: Follow, Unfollow์‹œ ๋‘ ์œ ์ € ๋™๋“ฑ์„ฑ ๋น„๊ต ๋กœ์ง Follow ํด๋ž˜์Šค๋กœ ์ด๋™ (#258) * refactor: User์˜ ํŒ”๋กœ์šฐ, ์–ธํŒ”๋กœ์šฐ ์กฐ๊ฑด ๊ฒ€์‚ฌ ๋กœ์ง์„ Followers, Followings๋กœ ์ด๋™ (#258) * chore: User.addComment ํ…Œ์ŠคํŠธ ์‚ญ์ œ (#258) * refactor: AuthUserRequestDto์˜ AppUser์— ๋Œ€ํ•œ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€ (#258) * refactor: User ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ anyString given/verify ์ธ์ž ๋ณ€๊ฒฝ (#258) * fix: ํ”„๋กœ๋•์…˜ ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ˆœ์„œ ๋ณ€๊ฒฝ ๋ฐ SpringBoot ํ†ตํ•ฉํ…Œ์ŠคํŠธ๋กœ ์ธํ•œ Nested ์ œ๊ฑฐ (#258) * refactor: ๋ณ‘ํ•ฉ ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐ AppUser๋ฅผ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ๋ชปํ•˜๋„๋ก ๋ณ€๊ฒฝ (#258) * chore: ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ์ˆœ์„œ ์ •๋ ฌ ๋ฐ DTO ํ•„๋“œ๋ช… ๋ณ€๊ฒฝ (#258) * chore: User ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ˆœ์„œ ์ •๋ ฌ ๋ฐ ํฌ๋งทํŒ… (#258) * [#293] Logback ์ธ์‹ ๋ถˆ๊ฐ€ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#299) * fix: logback appender ๊ฒฝ๋กœ ์ˆ˜์ • (#293) * chore: rest docs ๋ฌธ์„œ ๋ณ€๊ฒฝ * [#273, #301] profile page ์—๋Ÿฌ์ฒ˜๋ฆฌ ์ˆ˜์ค€ ์ˆ˜์ • ๋ฐ ๊ธฐํƒ€ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#302) * refactor: ํ”„๋กœํ•„ ์ˆ˜์ • ํŽ˜์ด์ง€ ์„œ๋น„์Šค๋กœ์ง ๋ถ„๋ฆฌ ๋ฐ ์—๋Ÿฌ์ฒ˜๋ฆฌ ์ˆ˜์ค€ ์ˆ˜์ • * refactor: ์ค‘๋ณต๋˜๋Š” validation ์ œ๊ฑฐ * refactor: ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ * feat: ์œ ์ € ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ์œ ์ € ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ๋งํฌ ์ถ”๊ฐ€ * fix: ํ”„๋กœํ•„ ์ˆ˜์ • ํ›„ ๋ฐ˜์˜์ด ์•ˆ๋˜๋Š” ์ด์Šˆ ํ•ด๊ฒฐ * refactor: api url ๋ณ€๊ฒฝ * fix: ๋กœ๊ทธ์ธ์œผ๋กœ ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ์‹œ ๊ฒŒ์ŠคํŠธ๋กœ ์ธ์‹ํ•˜๋˜ ๋ฌธ์ œ ํ•ด๊ฒฐ (#298) * [#295] ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๋ฐ ์‚ญ์ œ DB ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#300) * refactor: findPostByUser -> findPostByIdAndUser ๋ณ€๊ฒฝ (#295) * test: Data JPA ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#295) * refactor: ์ƒ์„ฑ์ž ์ˆ˜์ • (#295) * test: ์˜ˆ์™ธ ๋ฐœ์ƒ -> Optional.empty() ๊ฒ€์ฆ ๋ณ€๊ฒฝ (#295) * refactor: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์‚ญ์ œ (#295) * refactor: ํ•ด๋‹นํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ๊ฒŒ์‹œ๋ฌผ์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ • ์ˆ˜์ • (#295) - DB์—์„œ ์ฒ˜๋ฆฌ -> ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ์ฒ˜๋ฆฌ๋กœ ๋ณ€๊ฒฝ * refactor: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์‚ญ์ œ (#295) * test: ๋ถˆํ•„์š”ํ•œ import ์‚ญ์ œ (#295) * [#290] ์ค‘๊ฐ„ ๋ฐ๋ชจ ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐ (#303) * feat: Feed ์ปดํฌ๋„ŒํŠธ ๋ช…์นญ์„ HomeFeed ๋กœ ๋ณ€๊ฒฝ * fix: ์ค‘๊ฐ„ ๋ฐ๋ชจ ๋ฒ„๊ทธ ํ•ด๊ฒฐ - ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ ์†์„ฑ ์ค‘ isLiked -> liked ๋กœ ๋ณ€๊ฒฝ - ๋กœ๊ทธ์ธ ํ–ˆ์„ ๋•Œ๋งŒ ์ข‹์•„์š” ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚˜๋„๋ก ์ˆ˜์ • - ๋กœ๊ทธ์ธ ํ–ˆ์„ ๋•Œ๋งŒ ๋Œ“๊ธ€ ๋‹ฌ๊ธฐ ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚˜๋„๋ก ์ˆ˜์ • - ์ข‹์•„์š”, ์ข‹์•„์š” ์ทจ์†Œ ์ƒํƒœ ๋ฐ˜์˜ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ padding ์ˆ˜์ • - ๋Œ“๊ธ€์„ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ ๋ฐ”๋กœ ์ถ”๊ฐ€๋œ ๋Œ“๊ธ€์„ ํ™”๋ฉด์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ˆ˜์ • - ๋Œ“๊ธ€์ด ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ์‹œ์—๋Š” ์ตœ๋Œ€ 10๊ฐœ๋งŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ • - ๊ธฐ์กด์˜ ๋Œ“๊ธ€ ๋‹ฌ๊ธฐ input ์„ ๋Œ“๊ธ€ ์Šฌ๋ผ์ด๋” ํ† ๊ธ€ ๋ฒ„ํŠผ์œผ๋กœ ๋ณ€ํ™˜ * fix: api url ์ˆ˜์ • (#305) * fix: Post - Comments ์˜์†์„ฑ ์ „์ด ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#306) (#307) * [#308] ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#309) * fix: orphanremoval = true ์˜ต์…˜ ์ถ”๊ฐ€ (#308) * test: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#308) * [#310] ํŒ€๋ฐ๋ชจ ๊ฒฐ๊ณผ ๋ฐ˜์˜ - ํ”„๋กœํ•„ ํŽ˜์ด์ง€ (#311) * fix: api url ์˜คํƒ€ ์ˆ˜์ • * fix: ๋ˆ„๋ฝ๋œ key prop ์ถ”๊ฐ€ * fix: ๊นƒํ—™ํ†ต๊ณ„ ๊ธฐ๋Šฅ ์ž„์‹œ api๋กœ ์ˆ˜์ • * ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ํ•˜๋‹จ ๋ ˆ์ด์•„์›ƒ ๋ฒ„๊ทธ ์ˆ˜์ • * [#312] ๋‘๋ฒˆ์งธ ํŒ€ ๋ฐ๋ชจ์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#313) * feat: Feed ์ปดํฌ๋„ŒํŠธ ๋ช…์นญ์„ HomeFeed ๋กœ ๋ณ€๊ฒฝ * fix: ๋‘๋ฒˆ์งธ ํŒ€ ๋ฐ๋ชจ์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ฒ„๊ทธ ํ•ด๊ฒฐ - ๋Œ“๊ธ€ ์ถ”๊ฐ€ ์‹œ ์ตœ๊ทผ ๋Œ“๊ธ€๋กœ ์Šคํฌ๋กค์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ - ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€, ์‚ญ์ œ ์‹œ ์Šค๋‚ต๋ฐ”๋ฅผ ํ†ตํ•ด ํ”ผ๋“œ๋ฐฑ - ๊ฒŒ์‹œ๊ธ€ ์ข‹์•„์š” & ์ข‹์•„์š” ์ทจ์†Œ ๊ฒฐ๊ณผ๊ฐ€ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ - ๊ฒŒ์‹œ๊ธ€ tags ์ •๋ณด ํŒŒ์‹ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ (๋ณด๋‚ผ ๋• , ๊ธฐ๋ฐ˜ join ๋ฌธ์ž์—ด๋กœ, ๋ฐ›์„ ๋•Œ๋Š” ์ผ๋ฐ˜ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ) * fix: ๋ชจ๋ฐ”์ผ ์ƒ์˜ ๋ ˆ์ด์•„์›ƒ ๋ฐ ๊ทธ๋ž˜ํ”ฝ ๋ฌธ์ œ ํ•ด๊ฒฐ - ๋ชจ๋ฐ”์ผ ์ƒ์—์„œ ๋ฒ„ํŠผ์ด๋‚˜ ๋งํฌ ํด๋ฆญ์‹œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ธฐ๋ณธ ํ•˜์ด๋ผ์ดํŠธ ์ปฌ๋Ÿฌ ์ œ๊ฑฐ - ๋Œ“๊ธ€ input ํŒจ๋”ฉ ์กฐ์ • - ํ”„๋กœํ•„ ์ž”๋”” ๋ฐฐ๊ฒฝ ํˆฌ๋ช… -> ํฐ์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝ - kind ๊ฐ€ pills ์ธ Tabs ์ปดํฌ๋„ŒํŠธ์˜ hover ์ดํŽ™ํŠธ ์ œ๊ฑฐ(๋ชจ๋ฐ”์ผ ์ƒ์—์„œ ํด๋ฆญ๋œ ๊ธ€์”จ๊ฐ€ ํฌ๋ฏธํ•ด์ง€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ) * [#314] ์„ธ๋ฒˆ์งธ ํŒ€ ๋ฐ๋ชจ์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#315) * feat: Feed ์ปดํฌ๋„ŒํŠธ ๋ช…์นญ์„ HomeFeed ๋กœ ๋ณ€๊ฒฝ * fix: 2์ฐจ ๋ฐ๋ชจ ์„ธ๋ฒˆ์งธ ๋ฒ„๊ทธ ์ˆ˜์ • - ๋Œ“๊ธ€ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€, ์œ ์ € ์ด๋ฆ„์ด ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ - ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์‹œ ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ ๋ชฉ๋ก์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•œ ๊ณ„์ •์ด ํ•˜๋‚˜๋กœ ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ - ์ž„์‹œ ๋ ˆํฌ๋ชฉ๋ก ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ * [#316] 3์ฐจ๋ฐ๋ชจ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€ ๋ฐ UI ๊ด€๋ จ ์ด์Šˆ ํ•ด๊ฒฐ (#317) * fix: ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์—์„œ ํŒ”๋กœ์šฐ์‹œ ๊นœ๋ฐ•๊ฑฐ๋ฆฌ๋Š” ๋ฒ„๊ทธ ํ•ด๊ฒฐ * feat: ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ์‹œ ์ปจํŽŒ ์ถ”๊ฐ€ * fix: ์ด๋ฏธ์ง€ ๋ฐ ํ…์ŠคํŠธ ์ธ๋””์ผ€์ดํ„ฐ ์‚ฌ์ด์ฆˆ ๊ณ ์ • * feat: ๊ฐ„๋žตํžˆ ๋ฒ„ํŠผ ์ถ”๊ฐ€ * [#318] ๋„ค๋ฒˆ์งธ ํŒ€ ๋ฐ๋ชจ์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#319) * feat: Feed ์ปดํฌ๋„ŒํŠธ ๋ช…์นญ์„ HomeFeed ๋กœ ๋ณ€๊ฒฝ * fix: ๋„ค๋ฒˆ์งธ ํŒ€ ๋ฐ๋ชจ์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ฒ„๊ทธ ํ•ด๊ฒฐ - ๋Œ“๊ธ€ ์Šฌ๋ผ์ด๋” ๊ฐ€๋กœ ์Šคํฌ๋กค๋ง ๋˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ - ์ด๋ฏธ์ง€๋“ค ์ด ์šฉ๋Ÿ‰ ์ œํ•œ 1MB ๋กœ ์ˆ˜์ • - ๊ฒŒ์‹œ๊ธ€ ๋‚ด์šฉ์˜ ๊ฐœํ–‰์ด ์‹ค์ œ๋กœ ๋ฐ˜์˜๋˜๋„๋ก ์ˆ˜์ • - ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์ค‘ ํƒœ๊ทธ ์ž…๋ ฅ ํ›„ tagInputLength ๊ฐ€ 0 ์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜๋„๋ก ์ˆ˜์ • * [#320] ๊ฒŒ์‹œ๋ฌผ ์ถ”๊ฐ€ ์‹œ ์ด๋ฏธ์ง€๊ฐ€ ์—†์œผ๋ฉด alert์ฒ˜๋ฆฌ (#321) * fix: ๊ฒŒ์‹œ๋ฌผ ์ถ”๊ฐ€ ์‹œ ์ด๋ฏธ์ง€๊ฐ€ ์—†์œผ๋ฉด alert ์ฒ˜๋ฆฌ * refactor: ๋”๋ณด๊ธฐ, ๊ฐ„๋žตํžˆ ์ •์ฑ… ๋ณ€๊ฒฝ * [#322] ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • ์‹œ ์ถ”๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ์•„๋‹Œ ์ˆ˜์ • ๋˜์—ˆ๋‹ค๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๋„๋ก ๋ณ€๊ฒฝ (#323) * feat: Feed ์ปดํฌ๋„ŒํŠธ ๋ช…์นญ์„ HomeFeed ๋กœ ๋ณ€๊ฒฝ * fix: ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • ์‹œ ์ถ”๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ์•„๋‹Œ ์ˆ˜์ • ๋˜์—ˆ๋‹ค๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๋„๋ก ๋ณ€๊ฒฝ * [#324] ๋‹ค๋ฅธ ์ด์šฉ์ž์˜ UserFeed ์ข‹์•„์š”๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ (#325) * feat: Feed ์ปดํฌ๋„ŒํŠธ ๋ช…์นญ์„ HomeFeed ๋กœ ๋ณ€๊ฒฝ * fix: ๋‹ค๋ฅธ ์ด์šฉ์ž์˜ UserFeed ์ข‹์•„์š”๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ - currentUsername(์ ‘์†ํ•œ ์ด์šฉ์ž) -> username(์ด์šฉ์ž ํ”ผ๋“œ ํŽ˜์ด์ง€์˜ ๋Œ€์ƒ ์ด์šฉ์ž) ์œผ๋กœ ๋Œ€์ƒ ๋ณ€๊ฒฝ * [#259] ํฌ์ŠคํŠธ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (#270) * refactor: Post ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (#252) * refactor: infrastructure ์œ ๋‹›ํ…Œ์ŠคํŠธ, comment ์œ ๋‹›ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: Post ๊ด€๋ จ ์œ ๋‹›ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: Post application ๋ ˆ์ด์–ด ๊ด€๋ จ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: Post ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: PostControllerTest ๋ฆฌํŒฉํ† ๋ง ์ถ”๊ฐ€ * test: post builder๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ * refactor: ๋ฆฌ๋ฒ ์ด์Šค ํ›„ ๊นจ์ง€๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜์ • ๋ฐ ๋ˆ„๋ฝ๋œ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ refactor: Post์˜ Tag๊ด€๋ จ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง PostTags๋กœ ์ด๋™ (#259) ์ด๋™๊ณผ ํ•จ๊ป˜ Post์˜ Build ํŒจํ„ด ์ ์šฉ๊ณผ ๋ฆฌํŒฉํ† ๋ง. refactor: PostService์™€ PostController์˜ ์ฑ…์ž„ ๋ถ„๋ฆฌ. ๋ฐ s3Storage ํŒŒ์ผ ์ €์žฅ ๋ฐฉ์‹ ์ถ”๊ฐ€ (#259) feed๊ด€๋ จ๊ณผ, ๊ฒŒ์‹œ๋ฌผ ๊ด€๋ จ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋งž์ถค. refactor: ์ „์ฒด์ ์ธ import ์ •๋ฆฌ (#259) refactor: ํŒจํ‚ค์ง€ ์ •๋ฆฌ (#259) refactor: Post์˜ getImageUrl ์ค‘๋ณต ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ (#259) refactor: CommentResponse์˜ ๋„๋ฉ”์ธ ์ฐธ์กฐ ์ œ๊ฑฐ ๋ฐ DtoAssembler ๋ฆฌํŒฉํ† ๋ง (#259) refactor: Feed๊ด€๋ จ ์ปจํŠธ๋กค๋Ÿฌ, ์„œ๋น„์Šค, PostDto์–ด์…ˆ๋ธ”๋Ÿฌ ๋ฆฌํŒฉํ† ๋ง, ๋ ˆ์ด์–ด์— ๋งž์ง€ ์•Š๋Š” DTO ์ด๋™ (#259) refactor: CommentRequestDto ํŒจํ‚ค์ง€ ๋ณ€๊ฒฝ ๋ฐ PostController ๋ฆฌํŒฉํ† ๋ง (#259) refactor: PostResponseDto๊ฐ€ presentation~presentation๊นŒ์ง€ ์‚ฌ์šฉ๋˜๋˜๊ฒƒ์„ ๋ถ„๋ฆฌ (#259) refactor: showRepositories -> userRepositories ๋ฉ”์„œ๋“œ๋ช… ๋ณ€๊ฒฝ (#259) refactor: RepositoryResponse, domain -> controller๊นŒ์ง€ ์‚ฌ์šฉ ๋˜๋˜๊ฒƒ์„ ๋ถ„๋ฆฌ (#259) style: domain์„ ์ œ์™ธํ•œ ๋ ˆ์ด์–ด์˜ ๊ตฌ๊ธ€ ์ปจ๋ฒค์…˜ ์ฒดํฌ (#259) refactor: PostImageUrlResponseDto Builder ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ refactor: Post ์ปจ๋ฒค์…˜ ๋ฐ ๋ฉ”์„œ๋“œ ์ˆœ์„œ ์ •๋ฆฌ (#259) refactor: Post user ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋ช… author๋กœ ๋ณ€๊ฒฝ ๋ฐ ํ•„๋“œ, ๋ฉ”์„œ๋“œ ์ •๋ฆฌ (#249) refactor: PostTag equals getId()๋กœ ๋ณ€๊ฒฝ ๋ฐ ํ•„๋“œ ์ˆœ์„œ ์ •๋ฆฌ (#249) refactor: Like๋ฅผ VO๋กœ ์ทจ๊ธ‰, Likes๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ทจ๊ธ‰ํ•˜๋„๋ก ๋ณ€๊ฒฝ (#249) refactor: Image VO๋กœ ์ทจ๊ธ‰ ๋ฐ ๋„์›€ ๋ฉ”์„œ๋“œ ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ, PostContent validation๋กœ์ง ๋ณ€๊ฒฝ (#249) refactor: CommentContent VO ์ทจ๊ธ‰, comment ๋„์›€๋ฉ”์„œ๋“œ ์ด๋ฆ„ ๋ณ€๊ฒฝ ๋ฐ ์ฑ…์ž„ ๋ณ€๊ฒฝ (#249) refactor: Post equals getter๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ (#249) refactor: ์—ฐ๊ด€๊ด€๊ณ„ ๋„์›€ ๋ฉ”์„œ๋“œ ๋ฐ˜ํ™˜๊น‚ ์—†๋„๋ก ๋ณ€๊ฒฝ (#249) style: ๊ตฌ๊ธ€ ์ปจ๋ฒค์…˜ ์ ์šฉ (#249) refactor: ์ถ”์ƒํ™” ์ˆ˜์ค€ ํ‰ํƒ„ํ™” ์ž‘์—… (#249) * refactor: ๋ฆฌ๋ฒ ์ด์Šค ํ›„ ๊นจ์ง€๋Š” ํŒŒ์ผ ์ˆ˜์ • * fix: User ๋น„๊ต ๋กœ์ง ๋ฒ„๊ทธ ํ•ด๊ฒฐ * refactor: ๋ฉ”์„œ๋“œ์˜ ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ * refactor: ๋””๋ฏธํ„ฐ์˜ ์›์น™ ์ค€์ˆ˜ * refactor: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ * refactor: ๊นจ์ง€๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜์ • * refactor: ํƒ€์ž… ์ถ”๋ก  ๋ณ€์ˆ˜๋ฅผ ํƒ€์ž…ํ˜•์œผ๋กœ ๋ณ€๊ฒฝ * refactor: ์˜๋ฏธ๊ฐ€ ์—†๋Š” ๋ณ€์ˆ˜๋ช… ์ œ๊ฑฐ like -> ๋ฉ”์„œ๋“œ์ฐธ์กฐ * style: ํŒ€ ์ปจ๋ฒค์…˜ ์ ์šฉ * [#332] Acceptance Test๋ฅผ ์œ„ํ•œ Request builder ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„. (#333) * [#200, #205] ํƒœ๊ทธ ๊ด€๋ จ ์ด์Šˆ ํ•ด๊ฒฐ (#216) * fix: ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์‹œ, ์ดˆ๊ธฐ์— ๋ถˆ๋Ÿฌ์˜จ ๊ธฐ๋ณธ tag ๋“ค์ด ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ * feat: ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์ค‘ ํƒœ๊ทธ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ * fix: break point ์— ๋งž๊ฒŒ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ตœ๋Œ€ ๋„ˆ๋น„๋ฅผ 375px -> 425px ๋กœ ์กฐ์ • * [#217, #110] ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ์ •๋ฆฌ (#218) * chore: ์ธ์ˆ˜/ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฐ common(ํ”ฝ์Šค์ณ ํŒฉํ† ๋ฆฌ, mock api) ํŒจํ‚ค์ง€ ๋ถ„๋ฆฌ (#217) * chore: ๊ธฐ์กด ๋„๋ฉ”์ธ ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€๋“ค์„ unit ํ•˜์œ„๋กœ ์ด๋™ (#217) * refactor: Tag ๊ด€๋ จ Github ํ”Œ๋žซํผ ํด๋ž˜์Šค ์ด๋ฆ„์— Tag ๋ช…์‹œ (#217) * chore: Test ๊ด€๋ จ Configuration ํ†ต์ผ ๋ฐ Github API ๊ด€๋ จ ํด๋ž˜์Šค ํ”„๋กœํ•„ ์„ค์ • (#217) * chore: ๋กฌ๋ณต ์˜์กด์„ฑ ์ถ”๊ฐ€ (#217) * refactor: TestConfiguration ํด๋ž˜์Šค๋ช…์— Infrastructure ๋ช…์‹œ (#217) * refactor: PostFactory ๋นŒ๋” ํŒจํ„ด ์ ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ * refactor: ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: UserFactory ๋นŒ๋” ํŒจํ„ด ์ ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ * refactor: PostFactory ์˜๋ฏธ ์—†๋Š” ๋ฉ”์„œ๋“œ ์ œ๊ฑฐ * refactor: Test Configuration ์ด๋ฆ„ ๋ณ€๊ฒฝ * refactor: user fixture setUp๋กœ์ง ์œ„์น˜ ๋ณ€๊ฒฝ * refactor: DTO Builder ์–ด๋…ธํ…Œ์ด์…˜ ์ ์šฉ ๋ฐ Builder ์ œ๊ณต ํด๋ž˜์Šค ์ œ๊ฑฐ * refactor: gradle.build ํŒŒ์ผ ์ •๋ฆฌ * style: ์˜๋ฏธ์—†๋Š” ๊ณต๋ฐฑ ์ œ๊ฑฐ Co-authored-by: Minsung <sns2831@gmail.com> * [#223, #229] API ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ˜์˜ ๋ฐ Post ์ค‘๋ณต์ œ๊ฑฐ (#235) * fix: API ๋ช…์„ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ˜์˜ - image์™€ imageUrl์— ๋Œ€ํ•œ ํ‚ค๊ฐ’ ๊ตฌ๋ถ„ - public repo๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” api ๋ช…์—์„œ username ์ œ๊ฑฐ * refactor: ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ * feat: ์ƒˆ๋กœ ํŒจ์น˜๋œ post ์ค‘๋ณต์ œ๊ฑฐ * fix: InfiniteScrollContainer effect ์˜์กด์„ฑ ์ˆ˜์ • * refactor: Snackbar ์ปดํฌ๋„ŒํŠธ์˜ ์œ„์น˜๋ฅผ @layout์œผ๋กœ ๋ณ€๊ฒฝ * fix: post interface ์ˆ˜์ • * refactor: ์Šค๋‚ต๋ฐ” ๋ฉ”์‹œ์ง€๋ฅผ push ํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ๋” ๋ช…์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝ * fix: ์ค‘๋ณต๋œ key prop ์ˆ˜์ • * feat: http error ์ฒ˜๋ฆฌ ์œ ํ‹ธ ๊ตฌํ˜„ * refactor: HomeFeedPage์˜ ์ƒํƒœ๋กœ์ง์„ ํ›…์œผ๋กœ ๋ถ„๋ฆฌ * [#204] Issue ๋ฐ PR Template ์ˆ˜์ • (#239) * docs: PR ํ…œํ”Œ๋ฆฟ ์ˆ˜์ • * docs: ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ๋“ฑ๋ก * docs: ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์ˆ˜์ • * docs: ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์ˆ˜์ • * [#222] ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ํ”ผ๋“œ ๋ฒ„๊ทธ ์ˆ˜์ • (#242) * refactor: ์ค‘๋ณต๋œ ๊ฒŒ์‹œ๋ฌผ์„ ์ œ๊ฑฐํ•˜๋Š” ๋กœ์ง์„ util๋กœ ๋ถ„๋ฆฌ * feat: ํ”„๋กœํ•„ ํ”ผ๋“œ์— ๋ฌดํ•œ ์Šคํฌ๋กค ๊ธฐ๋Šฅ ์ถ”๊ฐ€ * refactor: profile page์˜ ์ƒํƒœ๋ฅผ context๋กœ ๋ถ„๋ฆฌ * feat: ํŒ”๋กœ์šฐ ๋ฒ„ํŠผ์— ๋กœ๋”ฉ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€ * refactor: ๋ถˆํ•„์š”ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐ * refactor: ProfilePage ๊ตฌ์กฐ ๊ฐœ์„  - ํ›…์„ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ์ˆ˜์ค€์„ ์ž‘์€ ๋ฒ”์œ„๋กœ ์ˆ˜์ • - context๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ์„ ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ * [#219] ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ, ํ•ธ๋“ค๋ง ๊ตฌํ˜„ (#241) * feat: BackDrop & MessageModalPortal ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ - index.html ์— div#modal ํƒœ๊ทธ ์ถ”๊ฐ€ - MessageModalPortal ์€ ๋ฆฌ์•กํŠธ ํฌํ„ธ์„ ์ ์šฉํ•˜์—ฌ ๊ตฌํ˜„ - ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•˜๋„๋ก useMessageModal ์ปค์Šคํ…€ ํ›… ์ œ์ž‘ * refactor: ํ•„์š” ์—†๋Š” import ๊ตฌ๋ฌธ ์‚ญ์ œ * feat: PostContentUploader ์ปดํฌ๋„ŒํŠธ ์•ˆ์˜ ImageSlider & ImageUploader ์™€ TextEditor ๊ฐ„์˜ margin ์ถ”๊ฐ€ * feat: ์ƒˆ๋กœ์šด limits, messages ์ƒ์ˆ˜ ์ถ”๊ฐ€ - message -> messages ๋กœ ํŒŒ์ผ ์ด๋ฆ„ ๋ณ€๊ฒฝ * feat: ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ step ๋ผ์šฐํŒ… path ์— ํ•œ๊ธ€์ด ๋“ค์–ด๊ฐ€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ * fix: ํ•„์š”ํ•œ ๋ณ€์ˆ˜ import ๊ฒฝ๋กœ ์ˆ˜์ • * feat: ๊ฒŒ์‹œ๊ธ€ ์ถ”๊ฐ€ ์ค‘ ๊ฐ๊ฐ์˜ ์—๋Ÿฌ์— ๋Œ€ํ•œ ์ด์šฉ์ž ํ”ผ๋“œ๋ฐฑ ๊ตฌํ˜„ - PostAddFormData -> PostUploadData์œผ๋กœ ๋ณ€๊ฒฝ - ์ด์šฉ์ž์˜ ๊นƒํ—ˆ๋ธŒ ์ƒ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” public repository ๊ฐ€ ์—†์œผ๋ฉด ํ”ผ๋“œ๋ฐฑ ํ›„ ์ด์ „ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‹œํ‚จ๋‹ค. - repository ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๊ณ  ์ด๋ฏธ์ง€ & ๊ธ€ ์ž‘์„ฑ์œผ๋กœ ๋„˜์–ด๊ฐ€๋ ค ํ•œ๋‹ค๋ฉด ์ด๋ฅผ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์ •ํ•ด์ง„ ์šฉ๋Ÿ‰์„ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€ ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ง„ ๊ฐœ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ์ด๋ฏธ์ง€ ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ง„ ๊ฐœ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ํ…์ŠคํŠธ ๊ธธ์ด๊ฐ€ ์ •ํ•ด์ง„ ๊ธธ์ด๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ๋“ค์–ด๊ฐ„ ํƒœ๊ทธ๋“ค ์ค‘ ์ค‘๋ณต์ด ์žˆ์œผ๋ฉด ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. - ํƒœ๊ทธ์— '-', '_' ๋ฅผ ์ œ์™ธํ•œ ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ๋“ค์–ด๊ฐ”๋‹ค๋ฉด ์ด๋ฅผ ํ”ผ๋“œ๋ฐฑํ•œ๋‹ค. * feat: ErrorResponse ํƒ€์ž… ์ƒ์„ฑ ๋ฐ ์ ์šฉ * feat: API ์š”์ฒญ ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๊ตฌํ˜„ * [#232] ์œ ์ € ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (#249) * refactor: ์ฝ”๋“œ ์ •๋ฆฌ (#232) * refactor: ์‚ฌ์šฉ์ž ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์ถ”๊ฐ€ (#232) - ๊ฒŒ์ŠคํŠธ์ธ ๊ฒฝ์šฐ UnauthorizedException ๋ฐœ์ƒ * refactor: DTO ๊ด€๋ จ ๋„ค์ด๋ฐ ์ •๋ฆฌ (#232) * test: ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * test: Data JPA ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * test: ๋ถˆํ•„์š”ํ•œ ์ƒ์ˆ˜ ์‚ญ์ œ (#232) * test: ์œ ์ € ์ด๋ฆ„ ๋ณ€๊ฒฝ (#232) - loginUser/guestUser -> testUser๋กœ ํ†ต์ผ * test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#232) * test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * test: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * test: ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#232) * refactor: Builder ์‚ฌ์šฉ (#232) * refactor: Follow ๊ฐ์ฒด์— ์ฑ…์ž„ ์œ„์ž„ (#232) * test: ์ ‘๊ทผ ์ œ์–ด์ž ์ˆ˜์ • (#232) * refactor: DTO ๋ฆฌํŒฉํ† ๋ง (#232) * test: ๋ถˆํ•„์š”ํ•œ ํ•„๋“œ ์‚ญ์ œ (#232) * test: WebEnvironment ์˜ต์…˜์„ RANDOM_PORT -> NONE์œผ๋กœ ๋ณ€๊ฒฝ (#232) * test: @SpringBootTest -> @DataJpaTest ๋ณ€๊ฒฝ (#232) * refactor: API ๋ช…์„ธ์— ๋งž๊ฒŒ ํ•„๋“œ๋ช… ๋ณ€๊ฒฝ (#232) - image -> imageUrl ๋ณ€๊ฒฝ * [#240] Authentication ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (#247) * test: authentication ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (#240) * test: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (#240) * refactor: ๊นƒํ—™ ์ธ์ฆ ์˜ˆ์™ธ ๋ณ€๊ฒฝ (#240) * test: Authentication ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ํ”ผ๋“œ๋ฐฑ ์ ์šฉ (#240) * test: HttpHeaders.AUTHORIZATION ์œผ๋กœ ๋ณ€๊ฒฝ (#240) * [#226, #227] ํ”„๋กœํ•„ ์ˆ˜์ • ๋ชจ๋‹ฌ ๊ตฌํ˜„ (#255) * feat: Button ์ปดํฌ๋„ŒํŠธ์— padding prop ์ถ”๊ฐ€ * feat: cancel-no-circle ์•„์ด์ฝ˜ ์ถ”๊ฐ€ * refactpr: BackDrop์„ ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ๋กœ ์ˆ˜์ • * refactor: textEditor ๋ฐฐ๊ฒฝ์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ˆ˜์ • * chore: eslint no empty function ์˜ต์…˜ off * refactor: css keyframes ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌ * feat: ์นด๋ฉ”๋ผ ์•„์ด์ฝ˜ ์ถ”๊ฐ€ * feat: TextEditor ์ปดํฌ๋„ŒํŠธ์— indicator ์ถ”๊ฐ€(#226) * refactor: z-index๋ฅผ ์ปจ๋ฒค์…˜์— ๋งž๊ฒŒ ์ˆ˜์ • * feat: ํ”„๋กœํ•„ ์ˆ˜์ • ๋ชจ๋‹ฌ ๊ตฌํ˜„(#227) * [#246] ๋Œ“๊ธ€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง (#250) * refactor: ๋Œ“๊ธ€ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: ์ผ€๋นˆ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ * refactor: ๋Œ“๊ธ€ ์กฐํšŒ ๋ฐ˜ํ™˜์‹œ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ๋‚˜์˜ค๋„๋ก ์ˆ˜์ • * [#220, #226] ๋„ค๋น„๊ฒŒ์ด์…˜ ui ์ˆ˜์ • ๋ฐ ์ด๋ฏธ์ง€ ์ธ๋””์ผ€์ดํ„ฐ ์ถ”๊ฐ€ (#256) * refactor: ๋น„๋กœ๊ทธ์ธ ์‹œ์—๋„ ํ™ˆ๋„ค์ด๊ฒŒ์ด์…˜ ๋…ธ์ถœ * fix: header์™€ image slider์˜ ์Œ“์ž„ ์ˆœ์„œ ๋ฒ„๊ทธ ํ•ด๊ฒฐ * feat: ์ด๋ฏธ์ง€ ์ธ๋””์ผ€์ดํ„ฐ ๊ตฌํ˜„ * [#234] ํƒœ๊ทธ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง (#245) * refactor: ํƒœ๊ทธ ๋„๋ฉ”์ธ ๋ถ€๋ถ„ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: ํƒœ๊ทธ ์Šฌ๋ผ์ด์‹ฑ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: ํƒœ๊ทธ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: ํƒœ๊ทธ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * refactor: connection pool ์‚ฌ์šฉํ•˜๋Š” ์ปค์Šคํ…€ RestTemplate ์ ์šฉ * refactor: Post์™€ Tag ์—ฐ๊ด€๊ด€๊ณ„ ๋ถ€๋ถ„ ํ”„๋กœ๋•์…˜ ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง * refactor: ์ผ€๋นˆ ํ”ผ๋“œ๋ฐฑ ์ ์šฉ - ParameterizedTest ์ด์šฉํ•˜๋„๋ก ์ˆ˜์ • - ์ค‘๋ณต๋œ ํ…Œ์ŠคํŠธ ์ œ๊ฑฐ * refactor: ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ * refactor: ์†Œ๋ฌธ์ž๋กœ ์ž๋™ ๋ณ€ํ™˜๋˜๋„๋ก ์ˆ˜์ • * refactor: ๋„ˆ์ž˜ ํ”ผ๋“œ๋ฐฑ ์ ์šฉ * refactor: ๊นƒํ—™์—์„œ ํƒœ๊ทธ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜๋˜๋„๋ก ๋ฆฌํŒฉํ† ๋ง * [#221, #225] ํ”„๋กœํ•„ ํ”ผ๋“œ ํด๋ฆญ์‹œ ์œ ์ € ํ”ผ๋“œ ํŽ˜์ด์ง€๋กœ ์ด๋™ (#260) * fix: ํ—ค๋”์—์„œ height๊ฐ€ ํฐ ์š”์†Œ๋“ค์˜ ๋ ˆ์ด์•„์›ƒ์ด ๊นจ์ง€๋Š” ๋ฒ„๊ทธ ํ•ด๊ฒฐ * fix: slideButtonKind ๋ณต๊ตฌ * refactor: ํƒ€์ž… ๋‹จ์–ธ ์ œ๊ฑฐ * feat: ํ”„๋กœํ•„ํ”ผ๋“œ์—์„œ ํฌ์ŠคํŠธ ํด๋ฆญ์‹œ ์œ ์ € ํ”ผ๋“œ ํŽ˜์ด์ง€๋กœ ์ด๋™ * [#251] Post ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง (#252) * refactor: infrastructure ์œ ๋‹›ํ…Œ์ŠคํŠธ, comment ์œ ๋‹›ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: Post ๊ด€๋ จ ์œ ๋‹›ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: Post application ๋ ˆ์ด์–ด ๊ด€๋ จ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: Post ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง * test: PostControllerTest ๋ฆฌํŒฉํ† ๋ง ์ถ”๊ฐ€ * test: post builder๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ * refactor: ๋ฆฌ๋ฒ ์ด์Šค ํ›„ ๊นจ์ง€๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜์ • ๋ฐ ๋ˆ„๋ฝ๋œ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ * [#183] ๊ฒŒ์‹œ๊ธ€ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ (#265) * feat: Feed ์ปดํฌ๋„ŒํŠธ ๋ช…์นญ์„ HomeFeed ๋กœ ๋ณ€๊ฒฝ * feat: HomeFeed ์ปดํฌ๋„ŒํŠธ์—์„œ ๋กœ๊ทธ์ธ ๋œ ์ƒํƒœ์—์„œ ์ž์‹ ์˜ ๊ฐœ์‹œ๊ธ€๋งŒ ์ˆ˜์ • ์•„์ด์ฝ˜์ด ๋œจ๋„๋ก ๋ณ€๊ฒฝ * feat: BottomSliderPortal ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * feat: CommentSlider ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ * chore: Layout ์ƒ์ˆ˜ ๊ฐ์ฒด ์ด๋ฆ„ LAYOUT ์œผ๋กœ ๋ณ€๊ฒฝ * feat: getLastHash util ํ•จ์ˆ˜ ๊ตฌํ˜„ * feat: getTabTextColor util ํ•จ์ˆ˜ ๊ตฌํ˜„ * feat: useBottomSlider ํ›… ๊ตฌํ˜„ * refactor: PostItem ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ • - ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์—์„œ ๋Œ“๊ธ€ ์ž…๋ ฅ ๊ฐ’ ์ €์žฅ ๋ฐ ์ˆ˜์ •์„ ๋‹ด๋‹นํ•˜์ง€ ์•Š๋„๋ก ์ˆ˜์ • - ๋Œ“๊ธ€ ์ถ”๊ฐ€ ์•„์ด์ฝ˜ ๋ฒ„ํŠผ ์‚ญ์ œ - Post, CommentData ํƒ€์ž…์˜ id ์†์„ฑ ํƒ€์ž…์„ string -> number ๋กœ ์ˆ˜์ • * feat: ๋Œ“๊ธ€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ - Tabs ์ปดํฌ๋„ŒํŠธ๊ฐ€ tabIndiโ€ฆ
1 parent 7a4dda5 commit ccf5598

File tree

629 files changed

+22183
-9448
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

629 files changed

+22183
-9448
lines changed

โ€ŽREADME.mdโ€Ž

Lines changed: 58 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,83 @@
22
<img src="https://user-images.githubusercontent.com/50176238/129131809-52307863-7d29-4ebf-8595-46ef77ba2be8.png" alt="pick-git-logo" width="220" height="220">
33
</p>
44

5+
<div align="center">
6+
7+
๐Ÿ’ป Github Repo ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ์žฅ๋ ค SNS, <br>
8+
๐Ÿ–‹ [๊นƒ-๋“ค๋‹ค (Pick-Git)](https://pick-git.com/)
9+
10+
</div>
11+
<br/>
12+
13+
<div align="center">
14+
15+
[![Application](http://img.shields.io/badge/Application-fc3465?style=flat&logo=github&logoColor=white&link=https://pick-git.com/)](https://pick-git.com/)
16+
[![Tech Blog](http://img.shields.io/badge/-Tech%20Blog-important?style=flat&logo=dev.to&logoColor=white&link=https://2021-pick-git.github.io/)](https://2021-pick-git.github.io/)
17+
[![WIKI](http://img.shields.io/badge/-GitHub%20WiKi-395FC1?style=flat&logo=dev.to&logoColor=white&link=https://github.com/woowacourse-teams/2021-pick-git/wiki)](https://github.com/woowacourse-teams/2021-pick-git/wiki)
18+
[![Release](https://img.shields.io/github/v/release/woowacourse-teams/2021-pick-git?color=skyblue)](https://github.com/woowacourse-teams/2021-pick-git/releases/tag/v1.2.0)
19+
20+
</div>
21+
<br/>
22+
23+
## ๐Ÿ’ป ๊นƒ-๋“ค๋‹ค (Pick-Git)
24+
25+
|์†Œ์…œ ๋กœ๊ทธ์ธ|๊ฒŒ์‹œ๋ฌผ ์ž‘์„ฑ|ํ”„๋กœํ•„ ๋ฐ ํ™œ๋™ ํ†ต๊ณ„ ์กฐํšŒ|
26+
|:-:|:-:|:-:|
27+
|<img src=https://user-images.githubusercontent.com/56240505/135817249-985f31ac-cde3-431e-b16d-56cfecb2897e.gif>|<img src=https://user-images.githubusercontent.com/56240505/135817222-fb893165-18cf-4ef5-b240-eb292a318ca7.gif>|<img src=https://user-images.githubusercontent.com/56240505/135817239-a267f424-fa9d-473a-8010-e9e6232db8b9.gif>|
28+
|<b>์œ ์ € ๊ฒ€์ƒ‰ ๋ฐ ํŒ”๋กœ์šฐ</b>|<b>๊ฒŒ์‹œ๋ฌผ ๊ฒ€์ƒ‰</b>|<b>ํฌํŠธํด๋ฆฌ์˜ค</b>|
29+
|<img src=https://user-images.githubusercontent.com/56240505/135817233-243ebc51-70c2-4613-b76e-7edc4aaf0667.gif>|<img src=https://user-images.githubusercontent.com/56240505/135817748-25771911-1f98-437f-a956-8b53f626d9e8.gif>|<img src=https://user-images.githubusercontent.com/56240505/135817760-ac932970-c5ab-4c95-81da-cc6533f19f17.gif>|
30+
531
<p align="center">
6-
๐Ÿ’ป Github Repo ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ์žฅ๋ ค SNS,<br/>
7-
๐Ÿ–‹ ๊นƒ-๋“ค๋‹ค (pick-git)
32+
<b>๊นƒ-๋“ค๋‹ค</b>๋Š” Github ๊ธฐ๋ฐ˜์˜ SNS๋กœ์„œ <b>๊ฐœ๋ฐœ์ž์˜ ์ž๊ธฐ PR๊ณผ ์†Œํ†ต์„ ์œ„ํ•œ ๊ณต๊ฐ„</b>์ž…๋‹ˆ๋‹ค.<br><br>
33+
<a href=https://sites.google.com/woowahan.com/wooteco-demo-3rd/%EA%B9%83-%EB%93%A4%EB%8B%A4?authuser=0>์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค ๋ฐ๋ชจ๋ฐ์ด ์†Œ๊ฐœ ์‚ฌ์ดํŠธ์—์„œ ๋™์˜์ƒ ๋“ฑ ๋” ๋งŽ์€ ๋‚ด์šฉ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”.</a>
834
</p>
35+
<br/>
36+
37+
## ๐Ÿ›  Tech Stacks
38+
39+
### Frontend
940

41+
![frontend_tech_stacks](https://user-images.githubusercontent.com/50176238/135874567-f03612e6-9e2e-4553-9e91-c39b79935817.png)
42+
43+
> <b>๊นƒ-๋“ค๋‹ค</b>์˜ <b>ํ”„๋ก ํŠธ์—”๋“œ</b>์— ๋Œ€ํ•ด ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด, [๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ](https://2021-pick-git.github.io/) ๋˜๋Š” [GitHub WiKi - FE ์ค‘์  ์‚ฌํ•ญ](https://github.com/woowacourse-teams/2021-pick-git/wiki/FE-%EC%A4%91%EC%A0%90-%EC%82%AC%ED%95%AD)์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.
44+
<br/>
45+
46+
### Backend
47+
48+
![backend_tech_stacks](https://user-images.githubusercontent.com/56240505/137877225-07cbf85b-053d-4610-9164-1261b08ae047.png)
49+
50+
> <b>๊นƒ-๋“ค๋‹ค</b>์˜ <b>๋ฐฑ์—”๋“œ</b>์— ๋Œ€ํ•ด ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด, [๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ](https://2021-pick-git.github.io/) ๋˜๋Š” [GitHub WiKi - BE ์ค‘์  ์‚ฌํ•ญ](https://github.com/woowacourse-teams/2021-pick-git/wiki/BE-%EC%A4%91%EC%A0%90-%EC%82%AC%ED%95%AD)์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.
1051
<br/>
1152
12-
## ๊นƒ-๋“ค๋‹ค (pick-git)
13-
- [์›น ์‚ฌ์ดํŠธ](https://pick-git.com/)
14-
- [๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ](https://2021-pick-git.github.io/)
53+
## ๐Ÿ”Œ Infrastructures
54+
55+
![prod_environment](https://user-images.githubusercontent.com/56240505/137874986-81cd5840-8b69-4b4d-8b89-b1b3d8d08341.png)
56+
![pipeline](https://user-images.githubusercontent.com/56240505/137875149-090f90b7-bc17-47d4-b881-3a88888d4b32.png)
57+
58+
> <b>๊นƒ-๋“ค๋‹ค</b>์˜ <b>์ธํ”„๋ผ</b>์— ๋Œ€ํ•ด ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด, [Pick-Git์˜ Infrasturcture](https://2021-pick-git.github.io/infrastructure/) ๊ธ€์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.
1559
1660
<br/>
1761

18-
## Members
19-
### FE
62+
## ๐Ÿ  Members
63+
64+
### Frontend
65+
2066
|๋ธŒ์ฝœ|ํฌ๋ฆฌ์Šค|
2167
|:-:|:--:|
2268
|<img src="https://avatars.githubusercontent.com/u/57767891?v=4" alt="beucol" width="100" height="100">|<img src="https://avatars.githubusercontent.com/u/32982670?v=4" alt="chris" width="100" height="100">|
2369
|[Tanney-102](https://github.com/Tanney-102)|[swon3210](https://github.com/swon3210)|
2470

25-
### BE
71+
### Backend
72+
2673
|๋‹ค๋‹ˆ|๋งˆํฌ|์†๋„ˆ์ž˜|์ฝ”๋‹ค|์ผ€๋นˆ|
2774
|:-:|:-:|:--:|:-:|:-:|
2875
|<img src="https://avatars0.githubusercontent.com/u/50176238?s=400&u=212ca9ffd06b88465746a94eaa6f88b10485497d&v=4" alt="daeun" width="100" height="100">|<img src="https://avatars.githubusercontent.com/u/56860124?v=4" alt="mark" width="100" height="100">|<img src="https://avatars.githubusercontent.com/u/33603557?v=4" alt="neozal" width="100" height="100">|<img src="https://avatars.githubusercontent.com/u/63405904?v=4" alt="koda" width="100" height="100">|<img src="https://avatars.githubusercontent.com/u/56240505?v=4" alt="kevin" width="100" height="100">|
2976
|[da-nyee](https://github.com/da-nyee)|[binghe819](https://github.com/binghe819)|[bperhaps](https://github.com/bperhaps)|[yjksw](https://github.com/yjksw)|[xlffm3](https://github.com/xlffm3)|
3077

31-
<br/>
78+
<br>
79+
80+
## ๐ŸŒˆ Culture
3281

33-
## Culture
3482
<p align="center">
3583
<img src="https://user-images.githubusercontent.com/50176238/129133023-8492948f-01e4-45b7-91c4-fd556d3dc326.png" alt="pick-git-cultures" width="520" height="360">
3684
</p>

โ€Žbackend/pick-git/.gitignoreโ€Ž

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,11 @@ out/
3838

3939
### Submodule ###
4040
src/main/resources/application-security.yml
41+
src/main/resources/application-dev.yml
4142
src/main/resources/application-prod.yml
43+
src/main/resources/application-db.yml
44+
src/main/resources/application-local.yml
45+
src/main/resources/application-staging.yml
4246

4347
### REST Docs ###
4448
src/main/resources/static/docs/

โ€Žbackend/pick-git/build.gradleโ€Ž

Lines changed: 58 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,77 +14,85 @@ repositories {
1414
mavenCentral()
1515
}
1616

17+
ext {
18+
snippetsDir = file('build/generated-snippets')
19+
}
20+
1721
dependencies {
1822
implementation 'io.jsonwebtoken:jjwt:0.9.1'
1923
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
24+
implementation 'org.springframework.data:spring-data-elasticsearch:4.2.2'
25+
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
2026
implementation 'org.springframework.boot:spring-boot-starter-web'
2127
implementation 'org.springframework.boot:spring-boot-starter-validation'
28+
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
29+
implementation 'com.lmax:disruptor:3.4.2'
30+
implementation 'org.springframework.boot:spring-boot-starter-webflux'
2231
implementation 'org.apache.httpcomponents:httpclient:4.5'
2332
implementation 'net.rakugakibox.spring.boot:logback-access-spring-boot-starter:2.7.1'
2433
implementation 'org.reflections:reflections:0.9.10'
34+
implementation 'org.flywaydb:flyway-core:6.4.2'
35+
implementation 'org.springframework.boot:spring-boot-starter-cache:2.5.4'
36+
implementation 'org.springframework.boot:spring-boot-starter-data-redis:2.5.4'
37+
implementation ('it.ozimov:embedded-redis:0.7.3') {
38+
exclude group: 'org.slf4j', module: 'slf4j-simple'
39+
}
2540

2641
compileOnly 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.4'
42+
compileOnly 'org.projectlombok:lombok:1.18.20'
2743

2844
runtimeOnly 'com.h2database:h2'
2945
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
3046

3147
asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor:1.2.6.RELEASE'
3248

33-
compileOnly 'org.projectlombok:lombok:1.18.20'
3449
annotationProcessor 'org.projectlombok:lombok:1.18.20'
35-
36-
testCompileOnly 'org.projectlombok:lombok:1.18.20'
37-
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
50+
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
3851

3952
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
4053
testImplementation 'org.springframework.boot:spring-boot-starter-test'
4154
testImplementation 'io.rest-assured:rest-assured:4.4.0'
42-
}
4355

44-
processResources.dependsOn('copySecurity')
45-
processResources.dependsOn('copyProd')
56+
testCompileOnly 'org.projectlombok:lombok:1.18.20'
4657

47-
task copySecurity(type: Copy) {
48-
from './security/application-security.yml'
49-
into './src/main/resources'
50-
}
58+
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
5159

52-
task copyProd(type: Copy) {
53-
from './security/application-prod.yml'
54-
into './src/main/resources'
60+
modules {
61+
module("org.springframework.boot:spring-boot-starter-logging") {
62+
replacedBy("org.springframework.boot:spring-boot-starter-log4j2", "Use Log4j2 instead of Logback")
63+
}
64+
}
5565
}
5666

5767
test {
5868
useJUnitPlatform()
5969
}
6070

61-
ext {
62-
snippetsDir = file('build/generated-snippets')
71+
processResources.dependsOn('copySubmodule')
72+
73+
task copySubmodule(type: Copy) {
74+
from './security'
75+
include '*.yml'
76+
into './src/main/resources'
6377
}
6478

6579
asciidoctor {
66-
dependsOn test
67-
6880
inputs.dir snippetsDir
81+
finalizedBy 'copyRestDocs'
6982
}
7083

71-
bootJar {
72-
dependsOn asciidoctor
73-
74-
copy {
75-
from 'build/asciidoc/html5'
76-
into 'src/main/resources/static/docs'
77-
include '*.html'
78-
}
84+
task copyRestDocs(type: Copy) {
85+
dependsOn('asciidoctor')
86+
from 'build/asciidoc/html5'
87+
include '*.html'
88+
into 'src/main/resources/static/docs'
7989
}
8090

8191
jacoco {
8292
toolVersion = "0.8.5"
8393
}
8494

8595
jacocoTestReport {
86-
dependsOn bootJar
87-
8896
reports {
8997
html.enabled true
9098
xml.enabled true
@@ -107,7 +115,15 @@ jacocoTestReport {
107115
'**/*OAuthClient*',
108116
'**/common*',
109117
'**/format*',
110-
'**/*S3*'
118+
'**/*Exception*',
119+
'**/*Content*',
120+
'**/content*',
121+
'**/*S3*',
122+
'**/*DataSource*',
123+
'**/*Slave*',
124+
'**/*Elastic*',
125+
'**/*GithubContributionExtractor*',
126+
'**/*Configuration*'
111127
])
112128
}))
113129
}
@@ -122,9 +138,9 @@ jacocoTestCoverageVerification {
122138
element = 'CLASS'
123139

124140
limit {
125-
counter = 'METHOD'
141+
counter = 'CLASS'
126142
value = 'COVEREDRATIO'
127-
minimum = 0.65
143+
minimum = 0.70
128144
}
129145

130146
excludes = [
@@ -138,8 +154,18 @@ jacocoTestCoverageVerification {
138154
'**.*OAuthClient*',
139155
'**.*Interceptor*',
140156
'**.*Exception*',
141-
'**.*Storage*'
157+
'**.*Content*',
158+
'**.*Storage*',
159+
'**.*DataSource*',
160+
'**.*Slave*',
161+
'**.*Elastic*',
162+
'**.*GithubContributionExtractor*',
163+
'**.*Configuration*'
142164
]
143165
}
144166
}
145167
}
168+
169+
bootRun {
170+
args = ["--spring.profiles.active=local"]
171+
}

โ€Žbackend/pick-git/securityโ€Ž

โ€Žbackend/pick-git/src/docs/asciidoc/comment.adocโ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ include::{snippets}/comment-post-emptyContent/http-response.adoc[]
2222

2323
=== ๋Œ“๊ธ€ ์š”์ฒญ - ์‚ฌ์šฉ์ž
2424
==== Request
25-
include::{snippets}/comment-queryComments/http-request.adoc[]
25+
include::{snippets}/comment-queryComments-user/http-request.adoc[]
2626
==== Response
27-
include::{snippets}/comment-queryComments/http-response.adoc[]
27+
include::{snippets}/comment-queryComments-user/http-response.adoc[]
2828

2929
=== ๋Œ“๊ธ€ ์š”์ฒญ - ๊ฒŒ์ŠคํŠธ
3030
==== Request

โ€Žbackend/pick-git/src/docs/asciidoc/following.adocโ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ endif::[]
77
:toc: left
88
:toclevels: 4
99

10-
== Authorization
10+
== Following
1111
=== ํŒ”๋กœ์ž‰ ์š”์ฒญ - ๋กœ๊ทธ์ธ
1212
==== Request
1313
include::{snippets}/following-LoggedIn/http-request.adoc[]
@@ -30,4 +30,4 @@ include::{snippets}/following-unLoggedIn/http-response.adoc[]
3030
==== Request
3131
include::{snippets}/unfollowing-unLoggedIn/http-request.adoc[]
3232
==== Response
33-
include::{snippets}/unfollowing-unLoggedIn/http-response.adoc[]
33+
include::{snippets}/unfollowing-unLoggedIn/http-response.adoc[]

โ€Žbackend/pick-git/src/docs/asciidoc/index.adocโ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ include::authorization.adoc[]
1111
include::comment.adoc[]
1212
include::following.adoc[]
1313
include::post.adoc[]
14+
include::postfeed.adoc[]
1415
include::profile.adoc[]
1516
include::tag.adoc[]
1617
include::search.adoc[]
18+
include::portfolio.adoc[]
1719

1820
PickGit API
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
ifndef::snippets[]
2+
:snippets: ../../../build/generated-snippets
3+
endif::[]
4+
:doctype: book
5+
:icons: font
6+
:source-highlighter: highlightjs
7+
:toc: left
8+
:toclevels: 4
9+
10+
== Portfolio
11+
=== ๋‚˜์˜ ํฌํŠธํด๋ฆฌ์˜ค ์กฐํšŒ - ์‚ฌ์šฉ์ž (๋กœ๊ทธ์ธ)
12+
==== Request
13+
include::{snippets}/portfolio-readMine-loggedIn/http-request.adoc[]
14+
==== Response
15+
include::{snippets}/portfolio-readMine-loggedIn/http-response.adoc[]
16+
17+
=== ๋‚จ์˜ ํฌํŠธํด๋ฆฌ์˜ค ์กฐํšŒ, ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ - ์‚ฌ์šฉ์ž (๋กœ๊ทธ์ธ)
18+
==== Request
19+
include::{snippets}/portfolio-readYoursWithExisting-loggedIn/http-request.adoc[]
20+
==== Response
21+
include::{snippets}/portfolio-readYoursWithExisting-loggedIn/http-response.adoc[]
22+
23+
=== ๋‚จ์˜ ํฌํŠธํด๋ฆฌ์˜ค ์กฐํšŒ, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ - ์‚ฌ์šฉ์ž (๋กœ๊ทธ์ธ)
24+
==== Request
25+
include::{snippets}/portfolio-readYoursWithNotExisting-loggedIn/http-request.adoc[]
26+
==== Response
27+
include::{snippets}/portfolio-readYoursWithNotExisting-loggedIn/http-response.adoc[]
28+
29+
=== ๋‚˜์˜ ํฌํŠธํด๋ฆฌ์˜ค ์ˆ˜์ • - ์‚ฌ์šฉ์ž (๋กœ๊ทธ์ธ)
30+
==== Request
31+
include::{snippets}/portfolio-updateMine-loggedIn/http-request.adoc[]
32+
==== Response
33+
include::{snippets}/portfolio-updateMine-loggedIn/http-response.adoc[]
34+
35+
=== ๋‚จ์˜ ํฌํŠธํด๋ฆฌ์˜ค ์ˆ˜์ • - ์‚ฌ์šฉ์ž (๋กœ๊ทธ์ธ)
36+
==== Request
37+
include::{snippets}/portfolio-updateYours-loggedIn/http-request.adoc[]
38+
==== Response
39+
include::{snippets}/portfolio-updateYours-loggedIn/http-response.adoc[]
40+
41+
=== ๋‚จ์˜ ํฌํŠธํด๋ฆฌ์˜ค ์กฐํšŒ, ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ - ๊ฒŒ์ŠคํŠธ (๋น„ ๋กœ๊ทธ์ธ)
42+
==== Request
43+
include::{snippets}/portfolio-readYoursWithExisting-unLoggedIn/http-request.adoc[]
44+
==== Response
45+
include::{snippets}/portfolio-readYoursWithExisting-unLoggedIn/http-response.adoc[]
46+
47+
=== ๋‚จ์˜ ํฌํŠธํด๋ฆฌ์˜ค ์กฐํšŒ, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ - ๊ฒŒ์ŠคํŠธ (๋น„ ๋กœ๊ทธ์ธ)
48+
==== Request
49+
include::{snippets}/portfolio-readYoursWithNotExisting-unLoggedIn/http-request.adoc[]
50+
==== Response
51+
include::{snippets}/portfolio-readYoursWithNotExisting-unLoggedIn/http-response.adoc[]
52+
53+
=== ๋‚จ์˜ ํฌํŠธํด๋ฆฌ์˜ค ์ˆ˜์ • - ๊ฒŒ์ŠคํŠธ (๋น„ ๋กœ๊ทธ์ธ)
54+
==== Request
55+
include::{snippets}/portfolio-updateYours-unLoggedIn/http-request.adoc[]
56+
==== Response
57+
include::{snippets}/portfolio-updateYours-unLoggedIn/http-response.adoc[]

0 commit comments

Comments
ย (0)