Skip to content

Commit

Permalink
[Main] CK Backend v1.0.0 (#138)
Browse files Browse the repository at this point in the history
* build: ์ดˆ๊ธฐ ํ™˜๊ฒฝ ์„ค์ •

* docs: PR ํ…œํ”Œ๋ฆฟ ์ˆ˜์ •

* build: RestDocs ์„ค์ •

Co-authored-by: younghoondoodoom <[email protected]>
Co-authored-by: miseongk <[email protected]>
Co-authored-by: cl8d <[email protected]>

* build: QueryDsl ์„ค์ •

Co-authored-by: younghoondoodoom <[email protected]>
Co-authored-by: miseongk <[email protected]>
Co-authored-by: cl8d <[email protected]>

* feat: ์—๋Ÿฌ ์‘๋‹ต ๊ฐ์ฒด ์ƒ์„ฑ

* feat: Jpa Auditing ์„ค์ •

* feat: ์‚ฌ์šฉ์ž ์—”ํ‹ฐํ‹ฐ ์ƒ์„ฑ

* feat: ๋กœ๋“œ๋งต ์—”ํ‹ฐํ‹ฐ ์ƒ์„ฑ

* chore: restAssured, ํ…Œ์ŠคํŠธ์šฉ db ์„ค์ •

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

* feat: ๋น„๋ฐ€๋ฒˆํ˜ธ ์ œ์•ฝ ์กฐ๊ฑด ๊ฒ€์‚ฌ ๊ตฌํ˜„

* feat: ํšŒ์› Identifier ์ œ์•ฝ ๊ฒ€์‚ฌ ๊ตฌํ˜„

* feat: ํšŒ์› Nickname ์ œ์•ฝ ๊ฒ€์‚ฌ ๊ตฌํ˜„

* refactor: vo ํŒจํ‚ค์ง€ ์ˆ˜์ •

* feat: ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ ๊ตฌํ˜„

* feat: ๋‹‰๋„ค์ž„์œผ๋กœ ํšŒ์› ํ”„๋กœํ•„ ์ฐพ๊ธฐ, Identifier ํšŒ์› ์ฐพ๊ธฐ ๊ตฌํ˜„

* feat: ํšŒ์›๊ฐ€์ž… service ๋กœ์ง ๊ตฌํ˜„

* feat: dto record๋กœ ์ˆ˜์ •

* feat: ํšŒ์›๊ฐ€์ž… mapper ๊ตฌํ˜„

* feat: ์˜ˆ์™ธ ์ •์˜ ๋ฐ ํ•ธ๋“ค๋ง

* feat: ํšŒ์›๊ฐ€์ž… api ๊ตฌํ˜„

* refactor: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์ˆ˜์ • ๋ฐ ๋ณ€๊ฒฝ ๋ฐ˜์˜

* feat: ์˜ˆ์™ธ ์ข…๋ฅ˜ ์ˆ˜์ •

* feat: ๋ฉค๋ฒ„ ๋„๋ฉ”์ธ์˜ ์ƒ์„ฑ์ž ๋ฐ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์ถ”๊ฐ€

* feat: ์ปค์Šคํ…€ ์˜ˆ์™ธ ๋ฐ ์˜ˆ์™ธ ํ•ธ๋“ค๋Ÿฌ ์ถ”๊ฐ€

* docs: api ๋ฌธ์„œํ™”

* feat: ๋กœ๋“œ๋งต ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•œ ์ƒ์„ฑ์ž ๋ฐ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ๋ชฉ๋ก ํ•„ํ„ฐ๋ง ์กฐํšŒ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* docs: rest-docs ๊ณตํ†ต ์„ค์ • ์Šค๋‹ˆํŽซ ๋ฐ overview, ๋กœ๋“œ๋งต adoc ์ถ”๊ฐ€

* build: rest-assured dependency ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ์นดํ…Œ๊ณ ๋ฆฌ ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ƒ์„ฑ์ž ๋ฐ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ์นดํ…Œ๊ณ ๋ฆฌ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* build: rest-assured dependency ์ถ”๊ฐ€

* docs: ๋กœ๋“œ๋งต ์นดํ…Œ๊ณ ๋ฆฌ API adoc ์ถ”๊ฐ€

* feat: salt db์— ์ €์žฅํ•˜๋„๋ก ์ˆ˜์ •

* feat: api member -> members ์ˆ˜์ •

* refactor: dto ๋„ค์ด๋ฐ ์ˆ˜์ •

* feat: NoSuchAlgorithmException ServerException์„ ๋˜์ง€๋„๋ก ์ˆ˜์ •

* feat: apply changes

* feat: ๋งค์ง๋„˜๋ฒ„ ์ƒ์ˆ˜ํ™”

* refactor: ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก ์กฐํšŒ ์‹œ body ๊ฒ€์ฆ ๋กœ์ง ๋ณ€๊ฒฝ

* feat: ํšŒ์›๊ฐ€์ž… ์ž…๋ ฅ ์‹œ ์˜ˆ์™ธ ๋ณ€๊ฒฝ

* refactor: ๋ฉ”์†Œ๋“œ ๋ถ„๋ฆฌ ๋ฐ ์ด๋ฆ„ ๋ณ€๊ฒฝ

* test: ํ…Œ์ŠคํŠธ์šฉ ObjectMapper ์„ค์ • ํด๋ž˜์Šค ์ถ”๊ฐ€

* feat: ์ปค์Šคํ…€ ํŽ˜์ด์ง€ ๊ฐ์ฒด ์ถ”๊ฐ€

* refactor: apply changes

* feat: ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ˜์˜

* test: ํ…Œ์ŠคํŠธ ์ปจํ…์ŠคํŠธ ์ดˆ๊ธฐํ™” ๋ฐ ๋กœ๋“œ๋งต ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* feat: apply changes

* feat: ๊ณจ๋ฃธ ์—”ํ‹ฐํ‹ฐ ์ถ”๊ฐ€

* [feat/CK-16] ๋กœ๋“œ๋งต ์ƒ์„ฑ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#8)

* feat: ์˜ˆ์™ธ ํด๋ž˜์Šค ์ •์˜

* feat: RoadmapContent์™€ RoadmapNode์˜ ์ผ๊ธ‰์ปฌ๋ ‰์…˜ ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ๋…ธ๋“œ ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ๋ณธ๋ฌธ ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€

* feat: Roadmap ์ €์žฅ ๊ตฌํ˜„

* feat: ๋กœ๋“œ๋งต ๋…ธ๋“œ, ๋กœ๋“œ๋งต ๋ณธ๋ฌธ repository ์ถ”๊ฐ€ ๋ฐ RoadmapRepository ๋กœ๋“œ๋งต ์ƒ์„ฑ ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ์ƒ์„ฑ service ๋กœ์ง ๊ตฌํ˜„

* build: rest-assured dependency ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ์ƒ์„ฑ api ๊ตฌํ˜„ ๋ฐ ์ธ์ˆ˜ํ…Œ์ŠคํŠธ

* feat: RoadmapNode์˜ ์ด๋ฏธ์ง€ ํ•„๋“œ ์ถ”๊ฐ€

* test: ๋กœ๋“œ๋งต ์ƒ์„ฑ ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ

* docs: ๋กœ๋“œ๋งต ์ƒ์„ฑ api ๋ฌธ์„œ ์ž‘์„ฑ

* refactor: ๋กฌ๋ณต Getter ์ œ๊ฑฐ

* refactor: ์ƒ์„ฑ์ž์—์„œ ์—ฐ๊ด€๊ด€๊ณ„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ถ€๋ถ„ ๋ถ„๋ฆฌ

* refactor: validate ๋ฉ”์†Œ๋“œ ๋ถ„๋ฆฌ

* refactor: setter ์‚ฌ์šฉ์‹œ null ์ฒดํฌํ•˜๋„๋ก ์ˆ˜์ •

* refactor: test ํŒจํ‚ค์ง€๋กœ ์ด๋™

* refactor: RequiredArgsConstructor ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ •

* refactor: ๊ฒ€์ฆ ๋ณ€๊ฒฝ ๋ฐ ์˜ˆ์™ธ ์ผ€์ด์Šค ์ œ๊ฑฐ

* test: ์–ด๋…ธํ…Œ์ด์…˜ ์ œ๊ฑฐ

* refactor: ๋ณ€์ˆ˜ ์ถ”์ถœ

* test: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* docs: ๋กœ๋“œ๋งต ์ƒ์„ฑ api ๋ฌธ์„œ ์ˆ˜์ •

* refactor: ์˜ˆ์™ธ ๋ฉ”์„ธ์ง€ String format์œผ๋กœ ๋ณ€๊ฒฝ

* test: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* docs: ๋กœ๋“œ๋งต ์ƒ์„ฑ API ๋ฌธ์„œ ์ˆ˜์ •

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

* refactor: ImageContentType ํŒจํ‚ค์ง€ ์ด๋™

* [feat/CK-20] ๋กœ๊ทธ์ธ ๋ฐ ์ธ์ฆ/์ธ๊ฐ€๋ฅผ ๊ตฌํ˜„ํ•˜๋‹ค (#10)

* build: jwt ์˜์กด์„ฑ ์ถ”๊ฐ€

* feat: jwt token ์ƒ์„ฑ ๊ตฌํ˜„

* feat: jwt token ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ตฌํ˜„

* feat: RefreshToken Entity ์ƒ์„ฑ

* feat: ํ† ํฐ์œผ๋กœ RefreshToken ์ฐพ์•„์˜ค๊ธฐ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๊ตฌํ˜„

* feat: ๋กœ๊ทธ์ธ ์‹œ ํ† ํฐ ๋ฐœ๊ธ‰ ๊ตฌํ˜„

* refactor: ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ์ˆ˜์ •

* feat: ๋กœ๊ทธ์ธ api ๊ตฌํ˜„

* refactor: AuthenticateResponse -> AuthenticationResponse ์ˆ˜์ •

* feat: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

* docs: ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ docs ์ž‘์„ฑ

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

* docs: ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ ์ˆ˜์ •

* feat: ์ธ๊ฐ€ interceptor ๊ตฌํ˜„

* feat: ํ† ํฐ ์žฌ๋ฐœํ–‰ service ๋กœ์ง ๊ตฌํ˜„

* feat: ํ† ํฐ ์žฌ๋ฐœํ–‰ api ๊ตฌํ˜„

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

* docs: ํ† ํฐ ์žฌ๋ฐœํ–‰ docs ์ž‘์„ฑ

* perf: refresh token ๊ฐ€์ ธ์˜ฌ๋•Œ member join ํ•˜๋„๋ก ์ฟผ๋ฆฌ ์ตœ์ ํ™”

* feat: ํ† ํฐ์—์„œ ํšŒ์› identifier ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: ์‚ฌ์†Œํ•œ ์ค„๋ฐ”๊ฟˆ ์ˆ˜์ •

* feat: ํ† ํฐ ์žฌ๋ฐœํ–‰ ์‹œ ๊ธฐ์กด ํ† ํฐ ์‚ญ์ œ ๊ตฌํ˜„

* fix: ํšŒ์› ์•„์ด๋”” ๊ฐ€์ ธ์˜ค๋Š” aargumentResolver์—์„œ Bearer ์ œ์™ธํ•˜๋„๋ก ์ˆ˜์ •

* feat: ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* refactor: ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ์ˆ˜์ •

* docs: docs ์„ค๋ช… ์ถ”๊ฐ€

* [feat/CK-17] ๋กœ๋“œ๋งต ๋‹จ์ผ ์กฐํšŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#9)

* build: restAssured ์˜์กด์„ฑ ์ถ”๊ฐ€ ๋ฐ ์ „์—ญ ์ฝ”๋“œ ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ๋‹จ์ผ ์กฐํšŒ API ๋งคํ•‘

* feat: Member ๋„๋ฉ”์ธ ๋ฐ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ์นดํ…Œ๊ณ ๋ฆฌ ๋„๋ฉ”์ธ ๋ฐ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต ๋„๋ฉ”์ธ ๋ฐ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ถ”๊ฐ€

* feat: ํŠน์ • ๋กœ๋“œ์บก ์ฝ˜ํ…์ธ ์˜ ๋…ธ๋“œ๋“ค ์กฐํšŒ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* refactor: ์—”ํ‹ฐํ‹ฐ๋งˆ๋‹ค ํ•„์š”ํ•œ ํ•„๋“ฌ๋‚˜ Getter ์ ์šฉ

* chore: ์ถ”ํ›„ ๊ธฐ๋Šฅ(๊ณจ๋ฃธ) ์ถ”๊ฐ€ ์‹œ ๊ตฌํ˜„๋˜์–ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„ ์‚ญ์ œ

* feat: ๋กœ๋“œ๋งต ๋‹จ์ผ ์กฐํšŒ ๊ธฐ๋Šฅ Service ๋ ˆ์ด์–ด ์ถ”๊ฐ€

* test: ๋กœ๋“œ๋งต ๋‹จ์ผ ์กฐํšŒ ๊ธฐ๋Šฅ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

* test: ํ…Œ์ŠคํŠธ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* refactor: api contextPath ์ˆ˜์ •

* test: Controller ํ…Œ์ŠคํŠธ์— restdocs ์ ์šฉ

* docs: ๋กœ๋“œ๋งต API adoc ์ถ”๊ฐ€

* refactor: ์ตœ์‹  ์ปจํ…์ธ  ์ •๋ ฌ ๊ธฐ๋Šฅ ๋ฆฌํŒฉํ† ๋ง

* refactor: ๋กœ๋“œ๋งต ๋‹จ์ผ ์กฐํšŒ ์‘๋‹ต DTO ๋ฆฌํŒฉํ† ๋ง

* refactor: ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋‚ด์šฉ ์ ์šฉ

* refactor: ์ตœ์‹  ์ปจํ…์ธ  ์ •๋ ฌ ๋ฆฌํŒฉํ† ๋ง

* [feat/CK-25] ๊ณจ๋ฃธ ๋‹จ์ผ ์กฐํšŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#23)

* [feat/CK-23] ๊ณจ๋ฃธ ์ƒ์„ฑ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#28)

* test: test ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๋ฐ ์„ค์ • ๋ณ€๊ฒฝ

* test: MemberIdentifierArgumentResolver ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

* feat: AuthenticationResponse equals&hashcode ์ƒ์„ฑ ๋ฐ ๊ทธ์—๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ์ˆ˜์ •

* test: ๊ณจ๋ฃธ ์ƒ์„ฑ ์ธ์ˆ˜ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

* feat: Goalroom ์ฐธ์—ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: code style format

* feat: ๊ณจ๋ฃธ ์ƒ์„ฑ ์„œ๋น„์Šค ๋กœ์ง ๊ตฌํ˜„

* feat: ๊ณจ๋ฃธ ์ƒ์„ฑ api ๊ตฌํ˜„

* fix: jpa ์ €์žฅ ์•ˆ๋˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ์ธ์ˆ˜ํ…Œ์ŠคํŠธ ์ˆ˜์ •

* docs: rest docs ์ž‘์„ฑ

* feat: GoalRoomTodoContent vo ์ƒ์„ฑ

* fix: ์˜ค๋ฅ˜ ์ˆ˜์ •

* feat: ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ์ˆ˜์ •

* feat: docs์— ํ•„๋“œ ๋‚ด์šฉ ์„ค๋ช… ์ถ”์ƒํ™”

* feat: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* feat: ์ถ”๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ˜์˜

* feat: ์˜คํƒ€ ์ˆ˜์ •

* feat: ์ถ”๊ฐ€์ ์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ˜์˜

* feat: period ๊ด€๋ จ ๋กœ์ง ์ˆ˜์ •

* feat: Entity ์ˆ˜์ •

* [feat/CK-24] ๊ณจ๋ฃธ ๋ชฉ๋ก ์กฐํšŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#26)

* refactor: ๋กœ๋“œ๋งต ์ƒ์„ฑ api ์ˆ˜์ •

* test: ํ…Œ์ŠคํŠธ ์ˆ˜์ •

* refactor: ๋ฉ”์†Œ๋“œ ์ˆœ์„œ ๋ณ€๊ฒฝ

* docs: ๋กœ๋“œ๋งต ์ƒ์„ฑ API ๋ฌธ์„œ ์ˆ˜์ •

* refactor: RoadmapNodes ํ•„๋“œ๋ช… ๋ณ€๊ฒฝ

* feat: ๊ณจ๋ฃธ ๋„๋ฉ”์ธ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* feat: ๊ณจ๋ฃธ ๋ชฉ๋ก ์กฐํšŒ Repository ๊ตฌํ˜„

* test: ๊ณจ๋ฃธ ๋ชฉ๋ก ์กฐํšŒ ์ธ์ˆ˜ํ…Œ์ŠคํŠธ

* feat: ๊ณจ๋ฃธ ๋ชฉ๋ก ์กฐํšŒ API ๊ตฌํ˜„

* docs: ๊ณจ๋ฃธ ๋ชฉ๋ก ์กฐํšŒ API ๋ฌธ์„œ ์ž‘์„ฑ

* refactor: DTO ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ์ˆ˜์ •

* feat: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* test: ํ…Œ์ŠคํŠธ ์ˆ˜์ •

* refactor: Create, Read ์„œ๋น„์Šค ํด๋ž˜์Šค ๋ถ„๋ฆฌ

* build: git submodule ์ ์šฉ

* chore: application.yml ์„ค์ •

* test: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ˆ˜์ •

* fix: member_profile_image -> member_image

* feat: memberImage ์˜์กด ๊ด€๊ณ„ ์ˆ˜์ •

* feat: created_at, updated_at ์„ค์ • ๋ณ€๊ฒฝ

* [feat/CK-26] ๊ณจ๋ฃธ ์ฐธ๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#24)

* refactor: conflict 2์ฐจ ํ•ด๊ฒฐ ๋ฐ ๊ณตํ†ต ์ฝ”๋“œ ์ถ”๊ฐ€

* feat: ๊ณจ๋ฃธ ์ฐธ๊ฐ€ ๊ธฐ๋Šฅ ๋„๋ฉ”์ธ ๊ตฌํ˜„

* refactor: ๋กœ๋“œ๋งต ์ปจํ…์ธ  ์ •๋ณด RoadmapContentResponse๋กœ ์ „๋‹ฌ

* test: ๊ณจ๋ฃธ ์ฐธ๊ฐ€ ๊ธฐ๋Šฅ ๊ด€๋ จ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํ…Œ์ŠคํŠธ

* test: ๊ณจ๋ฃธ ์ฐธ๊ฐ€ ๊ธฐ๋Šฅ ๊ด€๋ จ Service ๋ ˆ์ด์–ด ๊ตฌํ˜„

* feat: ์ด๋ฏธ ์ฐธ์—ฌํ•œ ๊ณจ๋ฃธ์— ์ฐธ์—ฌ ๋ถˆ๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* test: ๊ณจ๋ฃธ ์ฐธ์—ฌ ๊ธฐ๋Šฅ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

* refactor: ํ…Œ์ŠคํŠธ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* refactor: ๋กœ๋“œ๋งต ๋‹จ์ผ ์กฐํšŒ์— content์™€ node id ๋ฐ˜ํ™˜ ์ถ”๊ฐ€

* refactor: ๋ฆฌ๋ทฐ ์š”์ฒญ์‚ฌํ•ญ ๋ฐ˜์˜

* feat: ๊ฐœ๋ฐœ ์„œ๋ฒ„ ํฌํŠธ ๋ณ€๊ฒฝ

* [feat/CK-62] ๋กœ๋“œ๋งต ๋ฆฌ๋ทฐ ์ƒ์„ฑ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#27)

* chore: submodule ์ •๋ณด ๋ณต๊ตฌ

* [feat/CK-77] ๊ณจ๋ฃธ์˜ ์ฐธ์—ฌ์ž๋ฅผ ์กฐํšŒํ•œ๋‹ค (#44)

* feat: ๊ณจ๋ฃธ id๋กœ ๊ณจ๋ฃธ ๋ฉค๋ฒ„ ์ฐพ๊ธฐ Repository ๊ตฌํ˜„

* feat: ๊ณจ๋ฃธ ์ฐธ์—ฌ์ž ์กฐํšŒ service ๋กœ์ง ๊ตฌํ˜„

* feat: ๊ณจ๋ฃธ ๋ฉค๋ฒ„ ์กฐํšŒ api ๊ตฌํ˜„

* feat: ํšŒ์›๊ฐ€์ž… ์‹œ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ๋„ฃ๋„๋ก ์ˆ˜์ •

* test: ๊ณจ๋ฃธ ์ฐธ๊ฐ€์ž ์กฐํšŒ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

* docs: ๊ณจ๋ฃธ ์ฐธ๊ฐ€์ž ์กฐํšŒ api docs ์ž‘์„ฑ

* feat: ํšŒ์› ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ์ถ”๊ฐ€ ๊ตฌํ˜„

* feat: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* build: ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ ์ˆ˜์ •

* chore: application-dev.yml ์ˆ˜์ • ๋ฐ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ๋ณ€๊ฒฝ

* chore: application-dev.yml ์ˆ˜์ • ๋ฐ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ๋ณ€๊ฒฝ

* [feat/CK-72] ๊ณจ๋ฃธ์ด ์ž๋™์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#39)

* feat: GoalRoomPendingMember, GoalRoom Repository ๊ตฌํ˜„

* feat: GoalRoom ์‹œ์ž‘ํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ ๊ตฌํ˜„

* test: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ…Œ์ŠคํŠธ ์ œ๊ฑฐ

* refactor: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* [feat/CK-70] ๊ณจ๋ฃธ ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค (#43)

* test: ๊ณจ๋ฃธ ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€ ์ธ์ˆ˜ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

* feat: ๊ณจ๋ฃธ ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€ ์„œ๋น„์Šค ๋กœ์ง ๊ตฌํ˜„

* feat: ๊ณจ๋ฃธ ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ api ๊ตฌํ˜„

* build: application-dev.yml ์ƒ์„ฑ

* feat: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* feat: null ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ˆ˜์ •

* [feat/CK-64] ๋กœ๋“œ๋งต ํƒœ๊ทธ ์ƒ์„ฑ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ๋‹ค (#37)

* [feat/CK-67] ๋กœ๋“œ๋งต ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ๋‹ค (#40)

* [feat/CK-68] ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•œ ๋กœ๋“œ๋งต์˜ ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#47)

* feat: ์‚ฌ์šฉ์ž์˜ ๋กœ๋“œ๋งต์„ ์กฐํšŒํ•˜๋Š” repository ๊ธฐ๋Šฅ ๊ตฌํ˜„

* feat: ์‚ฌ์šฉ์ž์˜ ๋กœ๋“œ๋งต์„ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„

* test: ์‚ฌ์šฉ์ž์˜ ๋กœ๋“œ๋งต์„ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ ํ†ตํ•ฉํ…Œ์ŠคํŠธ

* docs: ์‚ฌ์šฉ์ž์˜ ๋กœ๋“œ๋งต์„ ์กฐํšŒํ•˜๋Š” API ๋ฌธ์„œ ์ž‘์„ฑ

* refactor: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* feat: ๊ณจ๋ฃธ ๋ชฉ๋ก ์กฐํšŒ ์‹œ ๋กœ๋“œ๋งต์— ๋Œ€ํ•œ ๊ณจ๋ฃธ ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋„๋ก ์ˆ˜์ •

* refactor: ๋ฉ”์„œ๋“œ๋ช… ๋ณ€๊ฒฝ

* style: ์ฝ”๋“œ ์ปจ๋ฒค์…˜ ๋งž์ถ”๊ธฐ

* [feat/CK-69] ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#49)

* feat: ์‚ฌ์šฉ์ž ํ”„๋กœํ•„๊ณผ ์ด๋ฏธ์ง€๋ฅผ ํ•จ๊ป˜ ์กฐํšŒํ•˜๋Š” Repository ๊ธฐ๋Šฅ ๊ตฌํ˜„

* feat: ์‚ฌ์šฉ์ž ์ž์‹ ์˜ ์ •๋ณด ์กฐํšŒ API ๊ตฌํ˜„

* test: ์‚ฌ์šฉ์ž ์ž์‹ ์˜ ์ •๋ณด ์กฐํšŒ API ํ†ตํ•ฉํ…Œ์ŠคํŠธ

* docs: ์‚ฌ์šฉ์ž ์ž์‹ ์˜ ์ •๋ณด ์กฐํšŒ API ๋ฌธ์„œ ์ž‘์„ฑ

* feat: ํŠน์ • ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” API ๊ตฌํ˜„

* test: ํŠน์ • ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” API ํ†ตํ•ฉํ…Œ์ŠคํŠธ

* docs: ํŠน์ • ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” API ๋ฌธ์„œ ์ž‘์„ฑ

* refactor: ๋ฉ”์„œ๋“œ๋ช… ์ˆ˜์ •

* feat: ๋‚ด ์ •๋ณด ์กฐํšŒ ์‹œ ์•„์ด๋””๋„ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •

* refactor: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* refactor: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* [feat/CK-75] ์ธ์ฆ ํ”ผ๋“œ ์ถ”๊ฐ€ API๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค (#41)

* feat: ์ธ์ฆ ํ”ผ๋“œ ์ถ”๊ฐ€ API ๊ตฌํ˜„

* feat: ์ธ์ฆ ํ”ผ๋“œ ํšŸ์ˆ˜ ์ œ์•ฝ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* feat: ๋‚ ์งœ์— ํ•ด๋‹นํ•˜๋Š” ๋…ธ๋“œ ๋ฐ˜ํ™˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* feat: ์ธ์ฆ ํ”ผ๋“œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ Service ๊ตฌํ˜„

* refactor: develop-branch ์ฝ”๋“œ ์ถ”๊ฐ€

* test: ์ธ์ฆ ํ”ผ๋“œ ์š”์ฒญ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

* feat: ๊ณจ๋ฃธ ์ด ์ธ์ฆ ํšŸ์ˆ˜ ๊ตฌํ•˜๋Š” ๊ธฐ๋Šฅ

* feat: ์ธ์ฆ ํ”ผ๋“œ ๋“ฑ๋ก ์‹œ ๊ณจ๋ฃธ๋ฉค๋ฒ„ ๋‹ฌ์„ฑ๋ฅ  ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ

* feat: ๊ณจ๋ฃธ์˜ ํŠน์ • ๋…ธ๋“œ์—์„œ ๋“ฑ๋ก๋œ ์ธ์ฆ ํ”ผ๋“œ ์กฐํšŒ ๊ธฐ๋Šฅ

* refactor: ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์ œ์™ธํ•œ ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* refactor: ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋กœ์ง ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* feat: ๋กœ๋“œ๋งต ๋‹จ์ผ ์กฐํšŒ์— createdAt ๋ฐ˜ํ™˜ ์ถ”๊ฐ€

* feat: ๋ฆฌ๋ทฐ๋‚ด์šฉ ๋ฐ˜์˜

* [feat/CK-22,76] ์‚ฌ์šฉ์ž๊ฐ€ ์ฐธ๊ฐ€ํ•œ ๊ณจ๋ฃธ ๋ชฉ๋ก ์กฐํšŒ์™€ ๋‹จ์ผ ์กฐํšŒ(์ธ์ฆ ํ”ผ๋“œ ์กฐํšŒ)๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค (#48)

* feat: ์ธ์ฆ ํ”ผ๋“œ ์ถ”๊ฐ€ API ๊ตฌํ˜„

* feat: ์ธ์ฆ ํ”ผ๋“œ ํšŸ์ˆ˜ ์ œ์•ฝ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* feat: ๋‚ ์งœ์— ํ•ด๋‹นํ•˜๋Š” ๋…ธ๋“œ ๋ฐ˜ํ™˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* feat: ์ธ์ฆ ํ”ผ๋“œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ Service ๊ตฌํ˜„

* refactor: develop-branch ์ฝ”๋“œ ์ถ”๊ฐ€

* test: ์ธ์ฆ ํ”ผ๋“œ ์š”์ฒญ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

* feat: ๊ณจ๋ฃธ ์ด ์ธ์ฆ ํšŸ์ˆ˜ ๊ตฌํ•˜๋Š” ๊ธฐ๋Šฅ

* feat: ์ธ์ฆ ํ”ผ๋“œ ๋“ฑ๋ก ์‹œ ๊ณจ๋ฃธ๋ฉค๋ฒ„ ๋‹ฌ์„ฑ๋ฅ  ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ

* feat: ๊ณจ๋ฃธ์˜ ํŠน์ • ๋…ธ๋“œ์—์„œ ๋“ฑ๋ก๋œ ์ธ์ฆ ํ”ผ๋“œ ์กฐํšŒ ๊ธฐ๋Šฅ

* feat: ๊ณจ๋ฃธ์ •๋ณด ๋ฐ ๊ณจ๋ฃธ ๋…ธ๋“œ์™€ ํˆฌ๋‘ ์กฐํšŒ ๊ธฐ๋Šฅ

* feat: ์‚ฌ์šฉ์ž ๊ณจ๋ฃธ ๋‹จ์ผ/๋ชฉ๋ก ์กฐํšŒ API ๊ตฌํ˜„

* feat: ๋ฉค๋ฒ„๊ฐ€ ์ฐธ๊ฐ€ํ•œ ๊ณจ๋ฃธ์„ ๊ณจ๋ฃธ์˜ ํ˜„์žฌ ์ƒํƒœ์— ๋”ฐ๋ผ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* feat: ์‚ฌ์šฉ์ž ๊ณจ๋ฃธ ๋‹จ์ผ/๋ชฉ๋ก ์กฐํšŒ Service ๋ ˆ์ด์–ด ์ถ”๊ฐ€

* test: ์‚ฌ์šฉ์ž ๊ณจ๋ฃธ ๋‹จ์ผ/๋ชฉ๋ก ์กฐํšŒ ๊ธฐ๋Šฅ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

* refactor: ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋‚ด์šฉ 1์ฐจ ๋ฐ˜์˜

* [feat/CK-115] ๊ณจ๋ฃธ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•œ ์ „์ฒด ์กฐํšŒ ๋ฐ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•œ ์ฒดํฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#63)

* fix: ์‹œ์ž‘ํ•˜์ง€ ์•Š์€ ๊ณจ๋ฃธ ํŽ˜์ด์ง€ ์ง„์ž… ์‹œ ์ธ์ฆ ํ”ผ๋“œ๋ฅผ ๋ฐ›์•„์˜ค์ง€ ๋ชปํ•˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ • ๋ฐ ์‚ฌ์šฉ์ž ๊ณจ๋ฃธ ์กฐํšŒ ํ…Œ์ŠคํŠธ ๋ณต์› (#64)

* fix: ์‚ฌ์šฉ์ž ๊ณจ๋ฃธ ๋‹จ์ผ ์กฐํšŒ ๋ฒ„๊ทธ fix (#67)

* fix: ํˆฌ๋‘ ์ฒดํฌ ํ•ด์ œ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

* fix: ๊ณจ๋ฃธ ๋‚ด๋ถ€ ์กฐํšŒ ์‹œ Todo ๋ฐ˜ํ™˜ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ (1:N ์ฟผ๋ฆฌ ์ค‘๋ณต)

* [feat/CK-71] ๊ณจ๋ฃธ์„ ๋‚˜๊ฐ€๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#42)

* feat: GoalRoomMember์™€ GoalRoomPendingMember๋ฅผ ์ถ”์ƒํ™” ๋ฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* feat: ๊ณจ๋ฃธ ๋‚˜๊ฐ€๊ธฐ API ๊ตฌํ˜„

* test: ๊ณจ๋ฃธ ๋‚˜๊ฐ€๊ธฐ ํ†ตํ•ฉํ…Œ์ŠคํŠธ

* docs: ๊ณจ๋ฃธ ๋‚˜๊ฐ€๊ธฐ API ๋ฌธ์„œ ์ž‘์„ฑ

* test: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ค‘๋ณต ๋ฆฌํŒฉํ„ฐ๋ง

* fix: ๊ณจ๋ฃธ ์ฐธ๊ฐ€ ์‹œ ์ด๋ฏธ ์ฐธ์—ฌ์ค‘์ธ ์‚ฌ์šฉ์ž์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋กœ์ง ์ˆ˜์ •

* test: ๊ณจ๋ฃธ ๋ชฉ๋ก ์กฐํšŒ ํ…Œ์ŠคํŠธ ์ˆ˜์ •

* refactor: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* refactor: ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ

* feat: ์„œ๋ธŒ๋ชจ๋“ˆ ์ถ”๊ฐ€

* style: ์ฝ”๋“œ ํฌ๋งทํŒ…

* chore: submodule ์ •๋ณด ๋ณต๊ตฌ

* feat: ๊ณจ๋ฃธ ์กฐํšŒ ์‹œ ๋…ธ๋“œ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* feat: ๋…ธ๋“œ ์กฐํšŒ ์‹œ ์•„์ด๋”” ๊ฐ’๋„ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๊ธฐ์กด ํด๋ž˜์Šค ๋ณ‘ํ•ฉ

* feat: ๊ณจ๋ฃธ ๋…ธ๋“œ ์กฐํšŒ API ์ถ”๊ฐ€

* docs: api-docs ์ˆ˜์ •

* chore: add submodule

* feat: apply changes

* feat: ๊ณจ๋ฃธ์— ์ฐธ์—ฌํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์˜ˆ์™ธ ๋ณ€๊ฒฝ

* [feat/CK-51] Github Action์„ ํ†ตํ•ด CI๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค (#13)

* [feat/CK-116] ๊ณจ๋ฃธ์˜ ์ธ์ฆ ํ”ผ๋“œ๋ฅผ ์ „์ฒด ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#70)

* feat: ๊ณจ๋ฃธ ์ธ์ฆ ํ”ผ๋“œ ์กฐํšŒ repository ๊ตฌํ˜„

* feat: ๊ณจ๋ฃธ ์ธ์ฆ ํ”ผ๋“œ ์ „์ฒด ์กฐํšŒ API ๊ตฌํ˜„

* test: ๊ณจ๋ฃธ ์ธ์ฆ ํ”ผ๋“œ ์ „์ฒด ์กฐํšŒ ์ธ์ˆ˜ํ…Œ์ŠคํŠธ

* docs: ๊ณจ๋ฃธ ์ธ์ฆ ํ”ผ๋“œ ์ „์ฒด ์กฐํšŒ ๋ฌธ์„œ ์ž‘์„ฑ

* refactor: git submodule ๋ณต๊ตฌ

* refactor: ์ธ์ฆํ”ผ๋“œ ์ „์ฒด ์กฐํšŒ ์‹œ ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •

* [feat/CK-113] ๋กœ๋“œ๋งต ๋‹จ์ผ ์กฐํšŒ API์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค (ํฌ๋ฆฌ์—์ดํ„ฐ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ, ์ƒ์„ฑ๋œ ๊ณจ๋ฃธ ์ƒํƒœ๋ณ„ ๊ฐœ์ˆ˜) (#73)

* feat: ๋กœ๋“œ๋งต ๋‹จ์ผ ์กฐํšŒ API์— ์š”์†Œ ์ถ”๊ฐ€ (ํฌ๋ฆฌ์—์ดํ„ฐ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€, ์ƒ์„ฑ๋œ ๊ณจ๋ฃธ ์ƒํƒœ๋ณ„ ๊ฐœ์ˆ˜)

* refactor: ๋ฆฌ๋ทฐ ๋‚ด์šฉ ๋ฐ˜์˜

* fix: ๊ณจ๋ฃธ ๋…ธ๋“œ์˜ ๋‹ค์Œ ๋…ธ๋“œ ๋ฐ˜ํ™˜ ๋กœ์ง ๋ฒ„๊ทธ ์ˆ˜์ •

* fix: ์‚ฌ์šฉ์ž ๊ณจ๋ฃธ ๋ชฉ๋ก ๋ฐ˜ํ™˜ ์‹œ ์ฟผ๋ฆฌ ์˜ค๋ฅ˜ ์ˆ˜์ •

* refactor: ๋ถ€์ ์ ˆํ•œ ๋ณ€์ˆ˜๋ช… ์ˆ˜์ •

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

* chore: git ์„œ๋ธŒ๋ชจ๋“ˆ ์„ค์ • ์ˆ˜์ •

* chore: git submodule ์—…๋ฐ์ดํŠธ

* chore: application.yml on profile ์ˆ˜์ •

* chore: application.yml ์˜ค๋ฅ˜ ์ˆ˜์ •

* chore: update git submodule

* [feat/CK-143] ๋กœ๊น… ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ฌดํ•œ์Šคํฌ๋กค ์‘๋‹ต์„ ์ˆ˜์ •ํ•œ๋‹ค (#105)

* [feat/CK-114] ๋กœ๋“œ๋งต ๋ฆฌ๋ทฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#74)

* feat: ๋กœ๋“œ๋งต ๋ฆฌ๋ทฐ ์กฐํšŒ API ๊ตฌํ˜„

* feat: ๋กœ๋“œ๋งต ๋ฆฌ๋ทฐ ์กฐํšŒ Repository ๊ตฌํ˜„

* feat: ๋กœ๋“œ๋งต ๋ฆฌ๋ทฐ ์กฐํšŒ Service ๊ตฌํ˜„

* feat: ๋กœ๋“œ๋งต ๋ฆฌ๋ทฐ ์กฐํšŒ ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* refactor: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* refactor: LocalDateTime ์š”์ฒญ/์‘๋‹ต formatting๋ฌธ์ œ ํ•ด๊ฒฐ

* test: ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๋„ ํ™•์ธํ•˜๋„๋ก ์ˆ˜์ •

* chore: update git submodule

* test: ํ…Œ์ŠคํŠธ ์ž„์‹œ ์ฃผ์„ ์„ค์ •

* chore: update git submodule

* [feat/CK-65] ๊ณจ๋ฃธ ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์กฐํšŒ API๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค (#106)

* [feat/CK-78] ๋กœ๋“œ๋งต ์ƒ์„ฑ ์‹œ ์ด๋ฏธ์ง€๋ฅผ ์ถ”๊ฐ€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค (#71)

* feat: roadmap ์ƒ์„ฑ ์‹œ image ์ถ”๊ฐ€ํ•˜๋„๋ก controller ์ˆ˜์ • ๋ฐ argument resolver ๊ตฌํ˜„

* feat: roadmap create ์‹œ ํŒŒ์ผ ์ €์žฅํ•˜๋Š” ์ด๋ฒคํŠธ ์ƒ์„ฑ ๋ฐ ๊ตฌํ˜„

* feat: roadmap create ์‹œ ํŒŒ์ผ ์ €์žฅํ•˜๋Š” event publisher ๋ถ€๋ถ„ ๊ตฌํ˜„

* test: ๋กœ๋“œ๋งต ์ƒ์„ฑ ๋ฐฉ์‹ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ test code ์ˆ˜์ •

* feat: ํŒŒ์ผ ์ €์žฅ์‹œ ์—๋Ÿฌ ๋ฐœ์ƒ ํ•ด๊ฒฐ

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

* feat: UUID ๊ธฐ๋ฐ˜์œผ๋กœ file path ์ œ๊ณต ๊ตฌํ˜„

* feat: amazons s3์— ํŒŒ์ผ ์˜ฌ๋ฆฌ๋Š” ๋กœ์ง ๊ตฌํ˜„

* feat: ์ด๋ฏธ์ง€ ์ €์žฅ ๋กœ์ง ๊ตฌํ˜„

* test: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ˆ˜์ •

* feat: amazon s3 presignedUrl ์ƒ์„ฑ ๋กœ์ง ๊ตฌํ˜„

* feat: ๋ฆฌ๋ทฐ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜

* feat: ๋กœ๋“œ๋งต ์กฐํšŒ ์‹œ ๋กœ๋“œ๋งต ๋…ธ๋“œ ์ด๋ฏธ์ง€ ํŒŒ์ผ presigned url์„ ๋‚ด๋ ค์ฃผ๋„๋ก ์ˆ˜์ •

* feat: jwt token์—์„œ claim์— type ์ถ”๊ฐ€

* feat: file ์ €์žฅ ์‹œ ์••์ถ•ํ•ด์„œ ์ €์žฅํ•˜๋„๋ก ์ˆ˜์ •

* feat: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* fix: Amazon s3 ๊ด€๋ จ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

* docs: docs ๊นจ์ง ํ•ด๊ฒฐ

* fix: ์ธ์ฆ ํ”ผ๋“œ ์กฐํšŒ ์‹œ url์ด s3๋ฅผ ํƒ€์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

* [Fix/CK-165] ๊ณจ๋ฃธ ์ฐธ์—ฌ์ž ์กฐํšŒ ์‹œ ๊ณจ๋ฃธ์˜ ์ƒํƒœ์— ์ƒ๊ด€์—†์ด ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ˆ˜์ •ํ•œ๋‹ค (#117)

* fix: s3 pre-signed url ์ƒ์„ฑ ์‹œ key ๊ฐ’ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ ํ•ด๊ฒฐ

* fix: s3 ์ด๋ฏธ์ง€ ์••์ถ•ํ•˜์ง€ ์•Š๊ณ  ์ €์žฅํ•˜๋„๋ก ์ˆ˜์ •

* [feat/CK-158] ๊ณจ๋ฃธ ์‹œ์ž‘ API๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค (#113)

* fix: file path ๋‚ด๋ ค์ค„๋•Œ, pre-signed url ๋‚ด๋ ค์ฃผ๋„๋ก ๋ชจ๋‘ ์ˆ˜์ •

* [feat/CK-155] ๋กœ๋“œ๋งต ๋ชฉ๋ก ์กฐํšŒ ์‹œ ์ •๋ ฌ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•œ๋‹ค (#111)

* [feat/CK-73] ๊ณจ๋ฃธ ์ข…๋ฃŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#109)

* feat: ๊ณจ๋ฃธ ์ข…๋ฃŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: ๊ณจ๋ฃธ ์ข…๋ฃŒ ์‹œ ์ธ์ฆ ํ”ผ๋“œ ์ „์ฒด ์กฐํšŒ ๊ทœ์น™ ์ˆ˜์ •

* refactor: ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* test: ๊ณจ๋ฃธ ์ข…๋ฃŒ ๊ธฐ๋Šฅ ํ†ตํ•ฉํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* refactor: ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€

* refactor: ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* [feat/CK-66] ๋กœ๋“œ๋งต์„ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค (#108)

* feat: ๋กœ๋“œ๋งต ์‚ญ์ œ ๊ธฐ๋Šฅ repository ๊ตฌํ˜„

* feat: ๋กœ๋“œ๋งต ์‚ญ์ œ api ๊ตฌํ˜„

* test: ๋กœ๋“œ๋งต ์‚ญ์ œ api ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

* docs: ๋กœ๋“œ๋งต ์‚ญ์ œ api ๋ฌธ์„œ ์ž‘์„ฑ

* chore: git submodule ์—…๋ฐ์ดํŠธ

* feat: ๋กœ๋“œ๋งต ์‚ญ์ œ ์Šค์ผ€์ค„๋Ÿฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: ์ธ์ฆํ”ผ๋“œ ์กฐํšŒ ์‹œ ์ธ์ฆํ”ผ๋“œ ๋“ฑ๋ก ๋‚ ์งœ๋ฅผ LocalDate ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •

* refactor: ๋ฆฌ๋ทฐ ๋ฐ˜์˜

* feat: ๊ณจ๋ฃธ ์ƒ์„ฑ ์‹œ ์‚ญ์ œ๋œ ๋กœ๋“œ๋งต์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€

* feat: ๋กœ๋“œ๋งต์˜ ๊ณจ๋ฃธ ๋ชฉ๋ก์˜ ์ •๋ ฌ ์กฐ๊ฑด์— ๋งˆ๊ฐ์ž„๋ฐ•์ˆœ ์ถ”๊ฐ€

* refactor: git submodule ์—…๋ฐ์ดํŠธ

* refactor: ๋ฉ”์„œ๋“œ๋ช… ๋ณ€๊ฒฝ

* refactor: git submodule ๋ณต๊ตฌ

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

* fix: async๋กœ ์ƒˆ๋กœ์šด ์“ฐ๋ ˆ๋“œ ๋งŒ๋“ค์–ด์„œ ํŒŒ์ผ ์ €์žฅ ์‹œ inputStream ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

* [feat/CK-117] flyway๋ฅผ ์ ์šฉํ•œ๋‹ค (#125)

* chore: dev flyway migrate ์„ค์ •

* fix: ๊ฒ€์ƒ‰ ๊ด€๋ จ ์˜ค๋ฅ˜ ์ˆ˜์ •

* fix: ๊ฒ€์ƒ‰ ๊ด€๋ จ ์กฐ๊ฑด ์ˆ˜์ •

* test: ํ…Œ์ŠคํŠธ ์˜ค๋ฅ˜ ์ˆ˜์ •

* Revert "fix: ๊ฒ€์ƒ‰ ๊ด€๋ จ ์˜ค๋ฅ˜ ์ˆ˜์ •"

This reverts commit 62773f1.

* fix: ๊ฒ€์ƒ‰ API ์—ฐ๋™์— ๋”ฐ๋ฅธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ revert

---------

Co-authored-by: Miseong Kim <[email protected]>
Co-authored-by: Miseong Kim <[email protected]>
Co-authored-by: 2014012606 <[email protected]>
Co-authored-by: cl8d <[email protected]>
Co-authored-by: Jiwon Lee <[email protected]>
Co-authored-by: Ohjintaek <[email protected]>
Co-authored-by: Ohjintaek <[email protected]>
  • Loading branch information
8 people authored Aug 31, 2023
1 parent d806797 commit 5af5d8c
Show file tree
Hide file tree
Showing 323 changed files with 29,852 additions and 0 deletions.
72 changes: 72 additions & 0 deletions .github/workflows/backend-pull-request-workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Co-KiriKiri Backend Pull Request Workflow

on:
pull_request:
branches:
- develop-backend
paths: backend/kirikiri/**

defaults:
run:
working-directory: backend/kirikiri

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3

- name: Setup JDK 17
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'

- name: Grant execute permission for gradlew
run: chmod +x gradlew
shell: bash

- name: Build with gradle
run: ./gradlew clean build
shell: bash

- name: Register test results as comments in pull request
uses: EnricoMi/publish-unit-test-result-action@v1
if: always()
with:
files: '**/build/test-results/test/TEST-*.xml'

- name: Register a check comment in the failed code line when test failed
uses: mikepenz/action-junit-report@v3
if: always()
with:
report_paths: '**/build/test-results/test/TEST-*.xml'
token: ${{ github.token }}

- name: Register a comment about test coverage
id: jacoco
uses: madrapps/[email protected]
with:
title: ๐Ÿช„ Test Coverage Report
paths: ${{ github.workspace }}/backend/kirikiri/build/reports/jacoco/test/jacocoTestReport.xml
token: ${{ github.token }}
min-coverage-overall: 90
min-coverage-changed-files: 90

- name: Slack Notification
uses: 8398a7/action-slack@v3
with:
status: custom
fields: workflow,job,commit,repo,ref,author,took
custom_payload: |
{
attachments: [{
color: '${{ job.status }}' === 'success' ? 'good' : '${{ job.status }}' === 'failure' ? 'danger' : 'warning',
text: '${{ job.status }}' === 'success' ? `โœ” [Backend] PULL REQUEST SUCCESS!\n ${{github.base_ref}} โฌ…๏ธ ${{github.head_ref}} \n${process.env.AS_JOB} (${process.env.AS_COMMIT}) by ${process.env.AS_AUTHOR}`
: `โŒ [Backend] PULL REQUEST FAIL!\n ${{github.base_ref}} โฌ…๏ธ ${{github.head_ref}} \n${process.env.AS_JOB} (${process.env.AS_COMMIT}) by ${process.env.AS_AUTHOR}`,
}]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: always()
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[submodule "co-kirikiri-property"]
path = backend/kirikiri/src/main/resources/properties
url = https://github.com/co-kirikiri-backend/co-kirikiri-property
branch = main
37 changes: 37 additions & 0 deletions backend/kirikiri/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
210 changes: 210 additions & 0 deletions backend/kirikiri/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.1'
id 'io.spring.dependency-management' version '1.1.0'
id 'org.asciidoctor.jvm.convert' version '3.3.2'
id 'jacoco'
}

group = 'co'
version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = '17'
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
asciidoctorExt
}

repositories {
mavenCentral()
}

ext {
set('snippetsDir', file("build/generated-snippets"))
}

asciidoctor {
dependsOn test
configurations 'asciidoctorExt'
inputs.dir snippetsDir

baseDirFollowsSourceFile()
}

asciidoctor.doFirst {
delete file('src/main/resources/static/docs')
}

tasks.register('copyDocument', Copy) {
dependsOn asciidoctor
from file("build/docs/asciidoc")
into file("src/main/resources/static/docs")
}

build {
dependsOn copyDocument
}

jacoco {
toolVersion = "0.8.10"
}

jacocoTestReport {
reports {
html.required = true
xml.required = true
}

// exclude QueryDSL QDomain Class
def QDomains = []

for (qPattern in '**/QA'..'**/QZ') {
QDomains.add(qPattern + '*')
}

afterEvaluate {
classDirectories.setFrom(
files(classDirectories.files.collect {
fileTree(dir: it, excludes: [
"co/kirikiri/persistence/QuerydslRepositorySupporter",
"co/kirikiri/domain/**",
"co/kirikiri/persistence/goalroom/dto/**",
"**/*Application*",
"**/*Config*",
"**/*Dto*",
"**/*Request*",
"**/*Response*",
"**/*Interceptor*",
"**/*Exception*"
] + QDomains)
})
)
}

// check test coverage after generating report
finalizedBy jacocoTestCoverageVerification
}

jacocoTestCoverageVerification {
// exclude QueryDSL QDomain Class
def QDomains = []

for (qPattern in '*.QA'..'*.QZ') {
QDomains.add(qPattern + '*')
}

violationRules {
rule {
enabled = true

// check rules by class
element = 'CLASS'

// line coverage at least 80%
limit {
counter = 'LINE'
value = 'COVEREDRATIO'
minimum = 0.80
}

excludes = [
"co.kirikiri.persistence.QuerydslRepositorySupporter",
"co.kirikiri.domain.**.**",
"co.kirikiri.persistence.goalroom.dto.**",
"**.*Application*",
"**.*Config*",
"**.*Dto*",
"**.*Request*",
"**.*Response*",
"**.*Interceptor*",
"**.*Exception*"
] + QDomains
}
}
}

dependencies {
// spring data jpa
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

// spring validation
implementation 'org.springframework.boot:spring-boot-starter-validation'

// spring web
implementation 'org.springframework.boot:spring-boot-starter-web'

// querydsl
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"

// jwt
implementation 'io.jsonwebtoken:jjwt-api:0.11.2'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.2', 'io.jsonwebtoken:jjwt-jackson:0.11.2'

// aws s3
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'

// lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

// database
runtimeOnly 'com.h2database:h2'
runtimeOnly 'com.mysql:mysql-connector-j'

// restdocs
asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor'

// slack log
implementation 'com.github.maricn:logback-slack-appender:1.3.0'

// flyway
implementation 'org.flywaydb:flyway-mysql'

// test
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.rest-assured:rest-assured'
}

def generated = 'build/generated'

tasks.withType(JavaCompile).configureEach {
options.getGeneratedSourceOutputDirectory().set(file(generated))
}

sourceSets {
main.java.srcDirs += [generated]
}

clean {
delete file(generated)
}

tasks.named('test') {
outputs.dir snippetsDir
useJUnitPlatform()
finalizedBy jacocoTestReport
}

tasks.named('asciidoctor') {
inputs.dir snippetsDir
dependsOn test
}

bootJar {
dependsOn copyDocument
dependsOn asciidoctor
from("${asciidoctor.outputDir}/html5") {
into 'static/docs'
}
archivesBaseName = 'co-kirikiri'
archiveFileName = 'co-kirikiri.jar'
}
Binary file not shown.
6 changes: 6 additions & 0 deletions backend/kirikiri/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading

0 comments on commit 5af5d8c

Please sign in to comment.