Skip to content

Commit

Permalink
[v2.0.0] pick-git ๋ฐฐํฌ (#715)
Browse files Browse the repository at this point in the history
* [#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 ์ปดํฌ๋„ŒํŠธ๊ฐ€ 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: ํŒ€ ์ปจ๋ฒค์…˜ ์ ์šฉ

* feat: PickgitRequest Post Builder ๊ตฌํ˜„

* refactor: PickgitRequest Post Builder ๊ตฌ์กฐ ๋ณ€๊ฒฝ

* feat: ๋ช…์„ธ์— ๋”ฐ๋ฅธ API ๊ตฌํ˜„

* refactor: File์„ body๋กœ ๋„ฃ์„ ์‹œ byte ๋ณ€ํ™˜ ์ถ”๊ฐ€

* refactor: ๋กœ๊ทธ์ธ ๋ชจํ‚น ๋ฐฉ์‹ ๋ณ€๊ฒฝ

* refactor: ๋นŒ๋” ๋‚ด๋ถ€ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„.

* refactor: initAllParams ๋ฉ”์„œ๋“œ ์ƒ์„ฑ

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: Jinhong <xlffm3@gmail.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: YunTroubleshooter <63405904+yjksw@users.noreply.github.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>

* feat: ๋ ˆ์ด์•„์›ƒ ์ˆ˜์ • & ํŒŒ๋น„์ฝ˜ ์ถ”๊ฐ€ (#342)

- Comment, CommentSlider ์˜ ๋Œ“๊ธ€ ์ข‹์•„์š” ์˜์—ญ ์‚ญ์ œ
- PostContentUploader ์˜ TextEditor ์˜ ํ…์ŠคํŠธ line-height ์žฌ์„ค์ •

* feat: github stat ํ›… ๋ถ„๋ฆฌ ๋ฐ ๋กœ๊ทธ์ธ ์‹œ์—๋งŒ ์ด์šฉํ•˜๋„๋ก ์ˆ˜์ • (#343)

* [#344] ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#348)

* refactor: ProfileFeed๋ฅผ GridFeed๋กœ  ์ถ”์ƒํ™”

* feat: ํƒœ๊ทธ ๊ฒ€์ƒ‰ ๊ด€๋ จ mock์ถ”๊ฐ€

* refactor: getPostsFromPagesํ•จ์ˆ˜์—์„œ null๊ฐ’๋„ ๊ณ ๋ คํ•˜๋„๋ก ์ˆ˜์ •

* feat: ํ‚ค์›Œ๋“œ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ๋กœ์ง ๋ฐ ํ›… ๊ตฌํ˜„

* feat: ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ์ธ๋„ค์ผ ํ”ผ๋“œ ๋ฐ ํŽ˜์ด์ง€ ๊ตฌํ˜„

* fix: search header input ๋ ˆ์ด์•„์›ƒ ์ˆ˜์ •

* fix: ๊ฒ€์ƒ‰์‹œ ํ‚ค์›Œ๋“œ๊ฐ€ ๋’ค๋Šฆ๊ฒŒ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์ด์Šˆ ํ•ด๊ฒฐ

* feat: ๋‹ค์ค‘ ๊ฒ€์ƒ‰ ์ง€์›

* [#349] ํƒœ๊ทธ ํด๋ฆญ ์‹œ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€๋กœ ์ด๋™ (#350)

* feat: ๊ฒŒ์‹œ๋ฌผ ํƒœ๊ทธ ํ˜ธ๋ฒ„ ๋ฐ ํด๋ฆญ ํ”ผ๋“œ๋ฐฑ ์ถ”๊ฐ€

* feat: ๊ฒŒ์‹œ๋ฌผ ํƒœ๊ทธ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๊ฒŒ์‹œ๋ฌผ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€๋กœ ์ด๋™

* refactor: console.log ์ œ๊ฑฐ

* refactor: PostItem ํƒœ๊ทธ ํ‚ค๋ฅผ ํƒœ๊ทธ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝ

* feat: ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ ์‹œ ๊นƒํ—™ ์—ฐ๋™ ์—ฌ๋ถ€ ์ถ”๊ฐ€ (#353)

* [#354] ํŒ”๋กœ์›Œ, ํŒ”๋กœ์ž‰ ํŽ˜์ด์ง€ ๊ตฌํ˜„ (#357)

* refactor: ์ปดํฌ๋„ŒํŠธ ๋ฐ ํƒ€์ž… ์ด๋ฆ„ ๋ณ€๊ฒฝ

* feat: ํŒ”๋กœ์ž‰, ํŒ”๋กœ์šฐ ๋ฆฌ์ŠคํŠธ ์š”์ฒญ ๋กœ์ง ๋ฐ ํ›… ๊ตฌํ˜„

* feat: ํŒ”๋กœ์šฐ, ํŒ”๋กœ์ž‰ ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€ ๊ตฌํ˜„

* feat: ํŒ”๋กœ์šฐ, ํŒ”๋กœ์ž‰ ํŽ˜์ด์ง€์— OneDepthHeader ์ถ”๊ฐ€

* [#329] Github ํ†ต๊ณ„ ์กฐํšŒ ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง (#345)

* refactor: Github ํ†ต๊ณ„ ์กฐํšŒ ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง (#329)

- ๋กœ๊ทธ์ธ -> ํ†ต๊ณ„ ์กฐํšŒ ๊ฐ€๋Šฅ
- ๋น„๋กœ๊ทธ์ธ -> ํ†ต๊ณ„ ์กฐํšŒ ๋ถˆ๊ฐ€๋Šฅ

* test: ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#329)

* test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#329)

* test: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#329)

* test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ˆ˜์ • (#329)

* test: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ˆ˜์ • (#329)

* test: ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#329)

* refactor: ํ•„๋“œ ์ดˆ๊ธฐํ™” -> ์ƒ์„ฑ์ž ์ฃผ์ž… ์ดˆ๊ธฐํ™” ๋ณ€๊ฒฝ (#329)

* style: ์ฝ”๋“œ ํฌ๋งทํŒ… ๋ณ€๊ฒฝ (#329)

* refactor: PlatformContributionExtractor ์œ„์น˜ ๋ณ€๊ฒฝ (#329)

* fix: findByKeyToken() ์‚ญ์ œ (#329)

- OAuthAccessTokenDao -> Key๋กœ pick-git JWT, Value๋กœ Github JWT ๊ฐ€์ง€๊ณ  ์žˆ์Œ
- ArgumentResolver -> pick-git JWT(authentication) ๊ธฐ๋ฐ˜์œผ๋กœ AppUser(LoginUser)์— Github JWT(accessToken) ๋ฐ”์ธ๋”ฉ

* test: ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ ์ˆ˜์ • (#329)

* test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ˆ˜์ • (#329)

* refactor: @Profile ์‚ญ์ œ (#329)

* test: ๋ถˆํ•„์š”ํ•œ ํด๋ž˜์Šค ์‚ญ์ œ (#329)

* test: ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ˆ˜์ • (#329)

* feat: restDocs์— ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ๊นจ์ง€๋Š” ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋ˆ„๋ฝ ์Šค๋‹ˆํŽซ์„ ์ถ”๊ฐ€ (#361) (#363)

* [#339] ํŒ”๋กœ์ž‰ ๋ฐ ํŒ”๋กœ์›Œ ๋ชฉ๋ก ์กฐํšŒ ๊ธฐ๋Šฅ (#347)

* feat: userRepository ํŠน์ • ์œ ์ €์˜ ํŒ”๋กœ์ž‰ ๋ฐ ํŒ”๋กœ์›Œ ๋ชฉ๋ก ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#339)

* feat: UserService ํŠน์ • ์œ ์ €์˜ ํŒ”๋กœ์ž‰ ๋ชฉ๋ก ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#339)

* feat: UserService ํŠน์ • ์œ ์ €์˜ ํŒ”๋กœ์›Œ ๋ชฉ๋ก ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#339)

* feat: UserController ํŠน์ • ์œ ์ € ํŒ”๋กœ์ž‰ ๋ฐ ํŒ”๋กœ์›Œ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#339)

* feat: ํŒ”๋กœ์ž‰ ๋ฐ ํŒ”๋กœ์›Œ ์กฐํšŒ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#339)

* refactor: UserController ํ—ฌํผ ๋ฉ”์„œ๋“œ๋ช… ๋ณ€๊ฒฝ (#339)

* refactor: ํŒ”๋กœ์ž‰/ํŒ”๋กœ์›Œ ๋ชฉ๋ก ์กฐํšŒ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ API ๋ฉ”์„œ๋“œ ๋ณ€๊ฒฝ (#339)

* chore: ํŒ”๋กœ์ž‰/ํŒ”๋กœ์›Œ rest docs ์Šค๋‹ˆํŽซ ์ถ”๊ฐ€ (#339)

* [#330] Github Repositories ์กฐํšŒ ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง (#358)

* refactor: API URL Path์—์„œ username ์‚ญ์ œ (#330)

* test: ๋ถˆํ•„์š”ํ•œ import ์‚ญ์ œ

* refactor: Github Repositories ์กฐํšŒ ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง (#330)

- Pagination ์ถ”๊ฐ€ -> API URL Path์— Query Parameter(page, limit) ์ถ”๊ฐ€

* refactor: ๋ถˆํ•„์š”ํ•œ import ์‚ญ์ œ

* test: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#330)

* test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#330)

* test: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ˆ˜์ • (#330)

* refactor: Pageable ์‚ฌ์šฉ (#330)

* [#337] ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๊ฒŒ์‹œ๋ฌผ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#346)

* feat: tag ๊ธฐ๋ฐ˜ post ๊ฒ€์ƒ‰ repository ๊ตฌํ˜„ (#337)

* feat: search service ๊ตฌํ˜„ (#337)

* feat: search controller ๊ตฌํ˜„ (#337)

* test: acceptance Test ๊ตฌํ˜„ (#337)

* refactor: ํŽ˜ํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ (#337)

* test: TagType, SearchTypes ๋„๋ฉ”์ธ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#337)

* test: ์„œ๋น„์Šค ์Šฌ๋ผ์ด์Šค ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#337)

* refactor: ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ๋ช… ๋ณ€๊ฒฝ (#337)

* test: Integration test ์ž‘์„ฑ (#337)

* refactor: ์˜๋ฏธ ์—†๋Š” ์–ด๋…ธํ…Œ์ด์…˜ ์ œ๊ฑฐ

* fix: ์Šค๋‹ˆํŽซ ์ƒ์„ฑ ๊ฒฝ๋กœ ๋ณ€๊ฒฝ (#364) (#365)

* [#368] ํŒ€ 1์ฐจ ๋ฐ๋ชจ ๋ฒ„๊ทธ ์ˆ˜์ • (#371)

* fix: ํŒ”๋กœ์šฐ ๋ชฉ๋ก ํŒจ๋”ฉ ์กฐ์ •

* fix: ํ”„๋กœํ•„, ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์กฐ์ •

* fix: ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •

* fix: ๊นƒํ—™ ํ†ต๊ณ„ ์š”์†Œ ์ด๋ฆ„ ๋ณ€๊ฒฝ

* fix: ํŒ”๋กœ์šฐ ์‹œ ๊นƒํ—™ ์—ฐ๋™ ์ปจํŽŒ ๋‹ซํžˆ์ง€ ์•Š๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •, ์ปจํŽŒ ๋ฒ„ํŠผ ํ…์ŠคํŠธ ์ˆ˜์ •

* fix: spring rest docs html ์ƒ์„ฑ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#373)

* refactor: ํ”„๋กœํ•„ ์ˆ˜์ • api ๋ถ„๋ฆฌ (#369)

* [#378] Logback ์„ค์ • ๋ฆฌํŒฉํ† ๋ง (#379)

* refactor: ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ ๋กœ๊น… ๊ตฌ์กฐ ๋ณ€๊ฒฝ (#378)

* refactor: s3 ํ”„๋กœ์ ํŠธ ๋กœ๊น… ๊ตฌ์กฐ ๋ณ€๊ฒฝ (#378)

* [#340] ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์ˆ˜์ •/์ •๋ณด ์ˆ˜์ • API ๊ธฐ๋Šฅ ๋ถ„๋ฆฌ (#352)

* feat: ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์ˆ˜์ • ๋ฐ ํ•œ ์ค„ ์†Œ๊ฐœ ์ˆ˜์ • ๊ธฐ๋Šฅ ๊ตฌํ˜„

* chore: ์„œ๋ธŒ ๋ชจ๋“ˆ ์ตœ์‹ ํ™”

* refactor: ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜

* refactor: UserํŒจํ‚ค์ง€ S3 ํ”„๋ก์‹œ์— ์ ‘๊ทผํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ

* [#380, #335] ์ธํ”ผ๋‹ˆํŠธ ์Šคํฌ๋กค๋ง ์ ์šฉ & CommentSlider -> CommentsPage ๋กœ ๋ณ€๊ฒฝ  (#381)

* feat: favicon ์›นํŒฉ ์„ค์ • ์ถ”๊ฐ€

* feat: ๊ธฐ์กด์˜ cancel ์•„์ด์ฝ˜์„ delete icon ์œผ๋กœ ๋ณ€๊ฒฝ

* feat: RepositorySelector ์— ์ธํ”ผ๋‹ˆํŠธ ์Šคํฌ๋กค๋ง ์ ์šฉ

- InfiniteScrollContainer ์— throttle ์ ์šฉ

* feat: CommentSlider ์˜ ๊ธฐ๋Šฅ์„ CommentsPage ์—์„œ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋ณ€๊ฒฝ

* [#419] JaCoCo ์ถ”๊ฐ€ (#422)

* chore: ์„œ๋ธŒ๋ชจ๋“ˆ ์—…๋ฐ์ดํŠธ

* chore: REST Docs ์—…๋ฐ์ดํŠธ

* chore: JaCoCo ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€ (#419)

* refactor: SonarQube Security ๋ฌธ์ œ ํ•ด๊ฒฐ (#419)

* [#359] Github Repositories ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#360)

* feat: ๊ฒŒ์‹œ๋ฌผ ํŒ”๋กœ์›Œ ๋ชฉ๋ก ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. (#420)

- comment ๋ชฉ๋ก์„ ํ•œ๋ฒˆ์— 10๊ฐœ์”ฉ ๊ฐ€์ ธ์˜ค๋„๋ก ์ˆ˜์ •

* [#375] ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ ๊นƒํ—™ ์ž๋™ ์—ฐ๋™ ๊ธฐ๋Šฅ๊ตฌํ˜„ (#376)

* feat: ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ์‹œ ๊นƒํ—™ ์ž๋™ ์—ฐ๋™ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* chore: github follow ๊ถŒํ•œ ์„ค์ •

* test: ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ์‹œ ๊นƒํ—™ ์ž๋™ ์—ฐ๋™ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* refactor: ํ”ผ๋“œ๋ฐฑ ๋ฆฌํŒฉํ† ๋ง

* fix: ์ด๋ฏธ์ง€ ์ˆ˜์ •์ด ์•ˆ๋˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • (#426)

* fix: ๋ ˆํฌ ๋ชฉ๋ก ๊ฒ€์ƒ‰ api ์ฃผ์†Œ ์ˆ˜์ • (#428)

- ๊ฒ€์ƒ‰์–ด๊ฐ€ ์—†์„ ๋•Œ๋Š” ๊ธฐ๋ณธ ๋ ˆํฌ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ api ๋ฅผ, ๊ฒ€์ƒ‰์–ด๊ฐ€ ์žˆ์„ ๋•Œ๋Š” ๋ ˆํฌ ๋ชฉ๋ก ๊ฒ€์ƒ‰ api๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ

* [#431] JaCoCo ๋ณด์™„ (#432)

* chore: .gitignore ์—…๋ฐ์ดํŠธ

* chore: JaCoCo ๋ณด์™„ (#431)

* [#425] ๋ ˆํฌ ๊ฒ€์ƒ‰ ์‹œ JSON ํŒŒ์‹ฑ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.  (#429)

* fix: JSON ํŒŒ์‹ฑ ๋ฒ„๊ทธ ์ˆ˜์ • (#425)

* chore: ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ์ตœ์†Œ ๊ธฐ์ค€ ๋ณ€๊ฒฝ

* chore: ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ์ตœ์†Œ ๊ธฐ์ค€ ๋ณ€๊ฒฝ

Co-authored-by: Daeun Lee <leede0418@likelion.org>

* [#415] comment ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ (#417)

* refactor: comment์˜ ํŒจํ‚ค์ง€๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค (#415)

* refactor: ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜์ • (#415)

* feature: comment๋ฅผ ์š”์ฒญํ•˜๋Š” service ๋กœ์ง ๊ตฌํ˜„ (#421)

* feat: controller ๊ตฌํ˜„ ๋ฐ WebMvcTest, Acceptance ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

* refactor: ๋ฆฌ๋ฒ ์ด์Šคํ›„ ์—๋Ÿฌ ํ•ด๊ฒฐ

* [#430] ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ๊ตฌํ˜„ (#433)

* feat: ๋ ˆํฌ ๋ชฉ๋ก ๊ฒ€์ƒ‰ ์‹œ, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—†์„ ๊ฒฝ์šฐ ์•ˆ๋‚ด ๋ฌธ๊ตฌ๊ฐ€ ๋“ฑ์žฅํ•˜๋„๋ก ์ˆ˜์ •

* feat: ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ๊ตฌํ˜„ & comment ์‚ญ์ œ ์š”์ฒญ ์ˆ˜์ •

- ๋ชจ๋“  ํŽ˜์ด์ง€์— ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ๊ตฌํ˜„
- comment ์‚ญ์ œ ์š”์ฒญ ์‹œ postId ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •

* docs: README ์ž‘์„ฑ (#94) (#440)

* refactor: ์œ ์ € ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ† ํฐ์„ ์ƒํ•˜๋„๋ก ๋ณ€๊ฒฝ (#439)

* chore: ํ”„๋ก ํŠธ์—”๋“œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๊นƒํ—™ ์•ก์…˜ ์ถ”๊ฐ€ (#443)

* refactor: ํ”ผ๋“œ ์กฐํšŒ์‹œ ํ•จ๊ป˜ ์˜ค๋Š” ๋Œ“๊ธ€์˜ ๊ฐฏ์ˆ˜๋ฅผ 3๊ฐœ๋กœ ์ œํ•œ (#444) (#445)

* [#374] ์ข‹์•„์š” ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„  (#413)

* feat: ๊ฒŒ์‹œ๋ฌผ ์ข‹์•„์š” ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#374)

* fix : ํ…Œ์ŠคํŠธ fixture ๋ฒ„๊ทธ ์ˆ˜์ • (#374)

* fix : Post entity ๊ธฐ๋ณธ์ƒ์„ฑ์ž ์ ‘๊ทผ ์ œ์–ด์ž ๋ณ€๊ฒฝ

* test: ์ปจํŠธ๋กค๋Ÿฌ ์Šฌ๋ผ์ด์Šค ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ (#374)

* fix: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฒ„๊ทธ ์ˆ˜์ • (#374)

* fix: ํ…Œ์ŠคํŠธ์—์„œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋กœ ์ธํ•œ ๋ฒ„๊ทธ ์ˆ˜์ • (#374)

* refactor: ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ (#374)

* refactor: ํ”ผ๋“œ๋ฐฑ ์ ์šฉ (#374)

* [#281] ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ๊ด€๋ จ ํ›… ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#446)

* refactor: error message getter ์˜ˆ์™ธ์ฒ˜๋ฆฌ

* feat: useFollow ํ›… ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

* feat: useProfileModification ํ…Œ์ŠคํŠธ ์ดˆ์•ˆ ์ž‘์„ฑ

* feat: useFollow ํ›… ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ถ”๊ฐ€

* chore: ํ…Œ์ŠคํŠธ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€

* chore: ํŒŒ๋น„์ฝ˜ ๊ด€๋ จ ์„ค์ • ์ถ”๊ฐ€

* chore: jest setup ํŒŒ์ผ ์ถ”๊ฐ€

* chore: ๋ฌธ์ž์—ด ๋”ฐ์˜ดํ‘œ ํ†ต์ผ

* refactor: profileModificationForm validatoin์œ„์น˜ ์ˆ˜์ •

* chore: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์ œ๊ฑฐ

* refactor: ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ„ฐ๋ง

- mock data ๋ถ„๋ฆฌ
- ์š”์ฒญ mock ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ณ€๊ฒฝ
- ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ถ”๊ฐ€

* feat: useProfileModificatonForm ํ›… ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* feat: useFollowerList ํ›… ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

* feat: useFollowingList ํ›… ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€

* refactor: ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ queryCilent ์„ค์ • ์ถ”๊ฐ€

- retry ์ œ๊ฑฐ

* feat: useGithubStatistics ํ›… ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€

* feat: useProfile ํ›… ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

* refactor: ์—๋Ÿฌ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ์ˆ˜์ •

* feat: useSearchUserData ํ›… ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

* feat: useSearchPostData ํ›… ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

* [#370, #414] ๋Œ“๊ธ€ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#434)

* feat: ๋Œ“๊ธ€ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#370)

* refactor: ๋ถˆํ•„์š”ํ•œ import ์‚ญ์ œ

* refactor: ๊ฒŒ์‹œ๊ธ€๊ณผ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง (#414)

* fix: ๋Œ“๊ธ€ ์‚ญ์ œ ๊ธฐ๋Šฅ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#370)

* test: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#370)

* test: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#370)

* test: ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#370)

* test: ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#370)

* test: ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (#370)

* refactor: ์ถ”์ƒ ํด๋ž˜์Šค ์ƒ์„ฑ์ž public -> protected ๋ณ€๊ฒฝ (#370)

* refactor: ๋Œ“๊ธ€ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง (#370, #414)

* test: ๋Œ“๊ธ€ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (#370, #414)

* refactor: orphanRemoval -> CascadeType.REMOVE ๋ณ€๊ฒฝ (#370)

* refactor: ๊ฒŒ์‹œ๋ฌผ ๋ฐ ๋Œ“๊ธ€ ์‚ญ์ œ ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง (#370, #414)

* fix: CORS ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#447) (#448)

* [#382] Prod ํ™˜๊ฒฝ Logback ์„ค์ • ๋ณ€๊ฒฝ (#383)

* refactor: Logback Prod ํ™˜๊ฒฝ์—์„œ DB ๋กœ๊ทธ ์‚ญ์ œ ๋ณ€๊ฒฝ (#382)

* [#380, #335] ์ธํ”ผ๋‹ˆํŠธ ์Šคํฌ๋กค๋ง ์ ์šฉ & CommentSlider -> CommentsPage ๋กœ ๋ณ€๊ฒฝ  (#381)

* feat: favicon ์›นํŒฉ ์„ค์ • ์ถ”๊ฐ€

* feat: ๊ธฐ์กด์˜ cancel ์•„์ด์ฝ˜์„ delete icon ์œผ๋กœ ๋ณ€๊ฒฝ

* feat: RepositorySelector ์— ์ธํ”ผ๋‹ˆํŠธ ์Šคํฌ๋กค๋ง ์ ์šฉ

- InfiniteScrollContainer ์— throttle ์ ์šฉ

* feat: CommentSlider ์˜ ๊ธฐ๋Šฅ์„ CommentsPage ์—์„œ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋ณ€๊ฒฝ

* [#419] JaCoCo ์ถ”๊ฐ€ (#422)

* chore: ์„œ๋ธŒ๋ชจ๋“ˆ ์—…๋ฐ์ดํŠธ

* chore: REST Docs ์—…๋ฐ์ดํŠธ

* chore: JaCoCo ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€ (#419)

* refactor: SonarQube Security ๋ฌธ์ œ ํ•ด๊ฒฐ (#419)

* [#359] Github Repositories ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#360)

* feat: ๊ฒŒ์‹œ๋ฌผ ํŒ”๋กœ์›Œ ๋ชฉ๋ก ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. (#420)

- comment ๋ชฉ๋ก์„ ํ•œ๋ฒˆ์— 10๊ฐœ์”ฉ ๊ฐ€์ ธ์˜ค๋„๋ก ์ˆ˜์ •

* [#375] ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ ๊นƒํ—™ ์ž๋™ ์—ฐ๋™ ๊ธฐ๋Šฅ๊ตฌํ˜„ (#376)

* feat: ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ์‹œ ๊นƒํ—™ ์ž๋™ ์—ฐ๋™ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* chore: github follow ๊ถŒํ•œ ์„ค์ •

* test: ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ์‹œ ๊นƒํ—™ ์ž๋™ ์—ฐ๋™ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* refactor: ํ”ผ๋“œ๋ฐฑ ๋ฆฌํŒฉํ† ๋ง

* fix: ์ด๋ฏธ์ง€ ์ˆ˜์ •์ด ์•ˆ๋˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • (#426)

* fix: ๋ ˆํฌ ๋ชฉ๋ก ๊ฒ€์ƒ‰ api ์ฃผ์†Œ ์ˆ˜์ • (#428)

- ๊ฒ€์ƒ‰์–ด๊ฐ€ ์—†์„ ๋•Œ๋Š” ๊ธฐ๋ณธ ๋ ˆํฌ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ api ๋ฅผ, ๊ฒ€์ƒ‰์–ด๊ฐ€ ์žˆ์„ ๋•Œ๋Š” ๋ ˆํฌ ๋ชฉ๋ก ๊ฒ€์ƒ‰ api๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ

* [#431] JaCoCo ๋ณด์™„ (#432)

* chore: .gitignore ์—…๋ฐ์ดํŠธ

* chore: JaCoCo ๋ณด์™„ (#431)

* [#425] ๋ ˆํฌ ๊ฒ€์ƒ‰ ์‹œ JSON ํŒŒ์‹ฑ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.  (#429)

* fix: JSON ํŒŒ์‹ฑ ๋ฒ„๊ทธ ์ˆ˜์ • (#425)

* chore: ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ์ตœ์†Œ ๊ธฐ์ค€ ๋ณ€๊ฒฝ

* chore: ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ์ตœ์†Œ ๊ธฐ์ค€ ๋ณ€๊ฒฝ

Co-authored-by: Daeun Lee <leede0418@likelion.org>

* [#415] comment ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ (#417)

* refactor: comment์˜ ํŒจํ‚ค์ง€๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค (#415)

* refactor: ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜์ • (#415)

* feature: comment๋ฅผ ์š”์ฒญํ•˜๋Š” service ๋กœ์ง ๊ตฌํ˜„ (#421)

* feat: controller ๊ตฌํ˜„ ๋ฐ WebMvcTest, Acceptance ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

* refactor: ๋ฆฌ๋ฒ ์ด์Šคํ›„ ์—๋Ÿฌ ํ•ด๊ฒฐ

* [#430] ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ๊ตฌํ˜„ (#433)

* feat: ๋ ˆํฌ ๋ชฉ๋ก ๊ฒ€์ƒ‰ ์‹œ, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—†์„ ๊ฒฝ์šฐ ์•ˆ๋‚ด ๋ฌธ๊ตฌ๊ฐ€ ๋“ฑ์žฅํ•˜๋„๋ก ์ˆ˜์ •

* feat: ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ๊ตฌํ˜„ & comment ์‚ญ์ œ ์š”์ฒญ ์ˆ˜์ •

- ๋ชจ๋“  ํŽ˜์ด์ง€์— ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ๊ตฌํ˜„
- comment ์‚ญ์ œ ์š”์ฒญ ์‹œ postId ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๋„๋ก ์ˆ˜์ •

* docs: README ์ž‘์„ฑ (#94) (#440)

* refactor: ์œ ์ € ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ† ํฐ์„ ์ƒํ•˜๋„๋ก ๋ณ€๊ฒฝ (#439)

* chore: ํ”„๋ก ํŠธ์—”๋“œ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๊นƒํ—™ ์•ก์…˜ ์ถ”๊ฐ€ (#443)

* refactor: ํ”ผ๋“œ ์กฐํšŒ์‹œ ํ•จ๊ป˜ ์˜ค๋Š” ๋Œ“๊ธ€์˜ ๊ฐฏ์ˆ˜๋ฅผ 3๊ฐœ๋กœ ์ œํ•œ (#444) (#445)

* refactor: Logback Prod ํ™˜๊ฒฝ์—์„œ DB ๋กœ๊ทธ ์‚ญ์ œ ๋ณ€๊ฒฝ (#382)

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: YunTroubleshooter <63405904+yjksw@users.noreply.github.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: Daeun Lee <leede0418@likelion.org>
Co-authored-by: Minsung Son <sns2831@gmail.com>

* [#449] ๊ฒŒ์‹œ๊ธ€ ์ข‹์•„์š” ์ด์šฉ์ž ๋ชฉ๋ก ํŽ˜์ด์ง€ ์ด๋™ ๋ผ์šฐํŒ…์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ (#450)

* fix: ๊ฒŒ์‹œ๊ธ€ ์ข‹์•„์š” ์ด์šฉ์ž ๋ชฉ๋ก ํŽ˜์ด์ง€ ์ด๋™ ๋ผ์šฐํŒ…์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

- ์ข‹์•„์š”๊ฐ€ 0 ๋ช…์ผ ๊ฒฝ์šฐ ์ด์šฉ์ž์—๊ฒŒ ํ”ผ๋“œ๋ฐฑ ํ•ด์ฃผ๊ณ  ํŽ˜์ด์ง€ ์ด๋™์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ

* fix: ๊ฒŒ์‹œ๋ฌผ ์ข‹์•„์š” ๋ชฉ๋ก ์กฐํšŒ ํŽ˜์ด์ง• ์ œ๊ฑฐ

* [#453] ํŒ€ 3์ฐจ ๋ฐ๋ชจ ๊ฒฐ๊ณผ ๋ฐ˜์˜ (#454)

* fix: ๊ฒ€์ƒ‰ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ ์ˆ˜์ •

* refactor: page url ๋ฐ header routing ์ˆ˜์ •

* fix: ๊ฒ€์ƒ‰ํŽ˜์ด์ง€ ํŽ˜์ด์ง• ์•ˆ๋˜๋Š” ์ด์Šˆ ํ•ด๊ฒฐ

* fix: ํƒœ๊ทธ ๋‹ค์ค‘ ๊ฒ€์ƒ‰ ์‹œ ์‰ผํ‘œ๊ฐ€ ์ œ๋Œ€๋กœ ์ œ๊ฑฐ๋˜์ง€ ์•Š๋Š” ์ด์Šˆ ํ•ด๊ฒฐ

* chore: ํ”„๋ก ํŠธ์—”๋“œ ํ…Œ์ŠคํŠธ ์•ก์…˜ ์ฝ”๋“œ ์ˆ˜์ • (#456)

* [#457] ๋„ค๋ฒˆ์งธ ๋ฐ๋ชจ์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ฒ„๊ทธ ํ•ด๊ฒฐ (#458)

* feat: ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ์—…๋ฐ์ดํŠธ

* fix: comment ์ถ”๊ฐ€ / ์‚ญ์ œ๊ฐ€ ํ™”๋ฉด ์ƒ์— ๋ฐ”๋กœ ๋ฐ˜์˜๋˜๋„๋ก ์ˆ˜์ •

* [#423, #460] ํŒ€ 4์ฐจ ๋ฐ๋ชจ ๋ฒ„๊ทธ ์ˆ˜์ • (#462)

* [#435] ์ธํ„ฐ์…‰ํ„ฐ ๋“ฑ๋ก ๊ธฐ๋Šฅ ์–ด๋…ธํ…Œ์ด์…˜ํ™” (#437)

* feat: ForGuest, ForLoginUser ์–ด๋…ธํ…Œ์ด์…˜ ์ถ”๊ฐ€

* feat: java ํŒŒ์ผ์—์„œ ํŽ˜ํ‚ค์ง€ ์ถ”์ถœ ๋กœ์ง ๊ตฌํ˜„

* refactor: ํ…Œ์ŠคํŠธ ํด๋”๋Š” ๋ฌด์‹œํ•˜๋„๋ก ๋ณ€๊ฒฝ

* refactor: ControllerScanner ๊ตฌํ˜„, ์ปจํŠธ๋กค๋Ÿฌ๋งŒ ํŒŒ์‹ฑํ•˜์—ฌ ํด๋ž˜์Šค ํ† ํฐ์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

* feat: PackageScanner ๊ตฌํ˜„, ํด๋”๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ถ”์ถœํ•œ๋‹ค.

* feat: ForGuestScanner ๊ตฌํ˜„, ForGuest ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”์ถœํ•œ๋‹ค.

* feat: ForLoginUserScanner ๊ตฌํ˜„, ForLoginUser ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”์ถœํ•œ๋‹ค.

* feat: MethodMapper ๊ตฌํ˜„, ๋ฉ”์„œ๋“œ์— ๋งคํ•‘๋œ HttpMethod ๋ฐ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”์ถœํ•œ๋‹ค.

* feat: UrlParse ๊ตฌํ˜„, ํด๋ž˜์Šค๋กœ ๋ถ€ํ„ฐ uri๋ฅผ ํŒŒ์‹ฑํ•œ๋‹ค.

* feat: AutoAuthorizationInterceptorRegister ๊ตฌํ˜„. interceptor์— ํŒŒ์‹ฑํ•œ ์ •๋ณด๋ฅผ ์ฃผ์ž…ํ•œ๋‹ค.

* test: UrlParams ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* fix: include, exclude ๋ชจ๋‘ ์ ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ.

* refactor: ์–ด๋…ธํ…Œ์ด์…˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ

* refactor: ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ interceptor ๋“ฑ๋ก ์ ์šฉ

* refactor: CommentController ์–ด๋…ธํ…Œ์ด์…˜ ์ ์šฉ

* refactor: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” import ์ œ๊ฑฐ

* refactor: ํŒจํ‚ค์ง€ ์˜คํƒ€ ์ œ๊ฑฐ

* style: ๋ฉ”์„œ๋“œ๋ฅผ ์ฝ๊ธฐ ์‰ฝ๋„๋ก ์œ„์น˜ ๋ณ€๊ฒฝ.

* refactor: uri values ์ถ”์ถœ๋กœ์ง ์ฑ…์ž„ ๋ณ€๊ฒฝ

* style: ํด๋ž˜์Šค ์‹œ์ž‘์‹œ ํ•œ์ค„ ๊ฐœํ–‰

* refactor: AuthenticateStorageForRegisterType ๋ถˆ๋ณ€ํ™”

* refactor: AuthenticateStorageForRegisterType ๋ถˆ๋ณ€ํ™” ๋ฐ put ๋ฉ”์„œ๋“œ ๋ฆฌํŒฉํ† ๋ง

* refactor:!isNull -> nonNull ๋ณ€๊ฒฝ

* style: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ปจ๋ฒค์…˜ ์ ์šฉ

* refactor: ํด๋ž˜์Šค ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ

* refactor: excludePatterns ๊ฐœํ–‰ํ•˜์—ฌ ๊ฐ€๋…์„ฑ ํ™•๋ณด.

* style: ์ƒ์„ฑ์ž ์ปจ๋ฒค์…˜ ์ ์šฉ.

* refactor: ์ •๊ทœํ‘œํ˜„์‹ ์ƒ์ˆ˜ํ™”

* test: ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ์ด๋ฆ„ ๋ณ€๊ฒฝ

* refactor: ํƒ€์ž… ์ถ”๋ก  ๋ณ€์ˆ˜ ์ œ๊ฑฐ

* test: ๊นจ์ง€๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜์ •

* refactor: ๋ˆ„๋ฝ๋œ ์–ด๋…ธํ…Œ์ด์…˜ ์ž‘์„ฑ

* [#382] Prod ํ™˜๊ฒฝ Logback ์„ค์ • ๋ณ€๊ฒฝ (#383)

* refactor: Logback Prod ํ™˜๊ฒฝ์—์„œ DB ๋กœ๊ทธ ์‚ญ์ œ ๋ณ€๊ฒฝ (#382)

* [#380, #335] ์ธํ”ผ๋‹ˆํŠธ ์Šคํฌ๋กค๋ง ์ ์šฉ & CommentSlider -> CommentsPage ๋กœ ๋ณ€๊ฒฝ  (#381)

* feat: favicon ์›นํŒฉ ์„ค์ • ์ถ”๊ฐ€

* feat: ๊ธฐ์กด์˜ cancel ์•„์ด์ฝ˜์„ delete icon ์œผ๋กœ ๋ณ€๊ฒฝ

* feat: RepositorySelector ์— ์ธํ”ผ๋‹ˆํŠธ ์Šคํฌ๋กค๋ง ์ ์šฉ

- InfiniteScrollContainer ์— throttle ์ ์šฉ

* feat: CommentSlider ์˜ ๊ธฐ๋Šฅ์„ CommentsPage ์—์„œ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋ณ€๊ฒฝ

* [#419] JaCoCo ์ถ”๊ฐ€ (#422)

* chore: ์„œ๋ธŒ๋ชจ๋“ˆ ์—…๋ฐ์ดํŠธ

* chore: REST Docs ์—…๋ฐ์ดํŠธ

* chore: JaCoCo ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€ (#419)

* refactor: SonarQube Security ๋ฌธ์ œ ํ•ด๊ฒฐ (#419)

* [#359] Github Repositories ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#360)

* feat: ๊ฒŒ์‹œ๋ฌผ ํŒ”๋กœ์›Œ ๋ชฉ๋ก ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. (#420)

- comment ๋ชฉ๋ก์„ ํ•œ๋ฒˆ์— 10๊ฐœ์”ฉ ๊ฐ€์ ธ์˜ค๋„๋ก ์ˆ˜์ •

* [#375] ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ ๊นƒํ—™ ์ž๋™ ์—ฐ๋™ ๊ธฐ๋Šฅ๊ตฌํ˜„ (#376)

* feat: ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ์‹œ ๊นƒํ—™ ์ž๋™ ์—ฐ๋™ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* chore: github follow ๊ถŒํ•œ ์„ค์ •

* test: ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ์‹œ ๊นƒํ—™ ์ž๋™ ์—ฐ๋™ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* refactor: ํ”ผ๋“œ๋ฐฑ ๋ฆฌํŒฉํ† ๋ง

* fix: ์ด๋ฏธ์ง€ ์ˆ˜์ •์ด ์•ˆ๋˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • (#426)

* fix: ๋ ˆํฌ ๋ชฉ๋ก ๊ฒ€์ƒ‰ api ์ฃผ์†Œ ์ˆ˜์ • (#428)

- ๊ฒ€์ƒ‰์–ด๊ฐ€ ์—†์„ ๋•Œ๋Š” ๊ธฐ๋ณธ ๋ ˆํฌ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ api ๋ฅผ, ๊ฒ€์ƒ‰์–ด๊ฐ€ ์žˆ์„ ๋•Œ๋Š” ๋ ˆํฌ ๋ชฉ๋ก ๊ฒ€์ƒ‰ api๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ

* [#431] JaCoCo ๋ณด์™„ (#432)

* chore: .gitignore ์—…๋ฐ์ดํŠธ

* chore: JaCoCo ๋ณด์™„ (#431)

* [#425] ๋ ˆํฌ ๊ฒ€์ƒ‰ ์‹œ JSON ํŒŒ์‹ฑ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.  (#429)

* fix: JSON ํŒŒ์‹ฑ ๋ฒ„๊ทธ ์ˆ˜์ • (#425)

* chore: ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ์ตœ์†Œ ๊ธฐ์ค€ ๋ณ€๊ฒฝ

* chore: ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ์ตœ์†Œ ๊ธฐ์ค€ ๋ณ€๊ฒฝ

Co-authored-by: Daeun Lee <leede0418@likelion.org>

* [#415] comment ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ (#417)

* refactor: comment์˜ ํŒจํ‚ค์ง€๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค (#415)

* refactor: ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜์ • (#415)

* feature: comment๋ฅผ ์š”์ฒญํ•˜๋Š” service ๋กœ์ง ๊ตฌํ˜„ (#421)

* feat: controller ๊ตฌํ˜„ ๋ฐ WebMvcTest, Acceptance ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

* refโ€ฆ
  • Loading branch information
10 people committed Oct 27, 2021
1 parent ef2582c commit 37ee880
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion backend/pick-git/security

0 comments on commit 37ee880

Please sign in to comment.