Skip to content

Commit

Permalink
Release: v2.0.0 (#515)
Browse files Browse the repository at this point in the history
* feat: ์‹ํ’ˆ ํ•„ํ„ฐ๋ง ๊ฒฐ๊ณผ ์—†์„ ๋•Œ ํ…์ŠคํŠธ ์ถ”๊ฐ€ (#431)

* feat: ์‹ํ’ˆ ํ•„ํ„ฐ๋ง ๊ฒฐ๊ณผ ์—†์„ ๋•Œ ํ…์ŠคํŠธ ์ถ”๊ฐ€

* refactor: ํ•„ํ„ฐ๋ง ๊ฒฐ๊ณผ ์—†์„ ๋•Œ ํ…์ŠคํŠธ ๋ฌธ๊ตฌ ์ˆ˜์ •

* refactor: Toast ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๋ฆฌํŒฉํ„ฐ๋ง / ๊ฐ•์•„์ง€ ํ„ฐ์น˜ ์ด์Šคํ„ฐ์—๊ทธ ์ˆ˜์ • (#428)

* refactor: Toast ๋กœ์ง Context with Provider๋กœ ๋ณ€๊ฒฝ

* refactor: ๊ฐ•์•„์ง€ ์ด์Šคํ„ฐ์—๊ทธ ์ˆ˜์ •

* refactor: ToastContext ํƒ€์ž… ๋ถ„๋ฆฌ ๋ฐ ๋ฆฌํŒฉํ„ฐ๋ง

* refactor: Landing Toast ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๋ณ€๊ฒฝ

* fix: ์ด์Šคํ„ฐ์—๊ทธ ์˜คํƒˆ์ž ์ˆ˜์ •(๊บ  -> ๊นจ) (#443)

* feat: ๋ฆฌ๋ทฐ ์š”์•ฝ ์กฐํšŒ json ํ”„๋กœํผํ‹ฐ ๋ช… ์ˆ˜์ • (#449)

* fix: json ํ”„๋กœํผํ‹ฐ๋ช… ์ˆ˜์ •

* fix: ๋ฆฌ๋ทฐ ์š”์•ฝ ์กฐํšŒ API ๋ฌธ์„œ ์ˆ˜์ •

* chore: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์˜์กด์„ฑ ์ œ๊ฑฐ

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

* feat: ์ฟผ๋ฆฌ ์นด์šดํ„ฐ ์ ์šฉ (#445)

* feat: ์ฟผ๋ฆฌ ์นด์šดํ„ฐ ๊ฐ์ฒด ์ƒ์„ฑ

* feat: ์ปค๋„ฅ์…˜ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋ก์‹œ ๊ตฌํ˜„์„ ์œ„ํ•œ handler ์ถ”๊ฐ€

* feat: ์ฟผ๋ฆฌ์นด์šดํ„ฐ AOP ์ ์šฉ

* feat: ์ฟผ๋ฆฌ์นด์šดํ„ฐ ๋กœ๊น… ์ธํ„ฐ์…‰ํ„ฐ ์ถ”๊ฐ€

* test: ๊ณตํ†ต MockMvcTest ์ถ”๊ฐ€

* feat: refresh token ์ ์šฉ (#447)

* feat: refresh token ์„ค์ •๊ฐ’ ์ถ”๊ฐ€

* feat: refresh token ์ƒ์„ฑ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* feat: refresh token์„ ์ฟ ํ‚ค์— ๋‹ด์•„ ๋‹ด๋Š” ๊ธฐ๋Šฅ

* refactor: String.valueOf() ๋Œ€์‹  .toString()์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ

* refactor: refreshTokenCookieProvider ๊ฐ์ฒด ๋„์ถœ

* refactor: tokenRefresh ๊ธฐ๋Šฅ ๊ตฌํ˜„

* refactor: ResponseCookie ์ ์šฉ

* test: authServiceTest ์ž‘์„ฑ

* test: jwtProviderTest ์ž‘์„ฑ

* test: refreshTokenRepositoryTest ์ž‘์„ฑ

* chore: application-local1.yml ์‚ญ์ œ

* feat: ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* test: ํ† ํฐ ์ธ์ฆ ์‹คํŒจ์‹œ 401 ์˜ˆ์™ธ ์ถ”๊ฐ€

* refactor: DTO ๋„ค์ด๋ฐ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๋„๋ก ์ˆ˜์ •

* test: ๋กœ๊ทธ์•„์›ƒ ์ฟ ํ‚ค ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

* test: ๋กœ๊ทธ์•„์›ƒ ์ฟ ํ‚ค ํ…Œ์ŠคํŠธ ์ˆ˜์ •

* feat: API ๋ช…์„ธ ๋ณ€๊ฒฝ `/logout` -> `/log-out`

* refactor: Tokens -> TokenDto ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ

* feat: token rotation ์ œ๊ฑฐ

* refactor: AuthServiceTest ๋‚ด ๋ชจํ‚นํ…Œ์ŠคํŠธ ๋ถ„๋ฆฌ

* refactor: Controller ํ…Œ์ŠคํŠธ ๋ถ„๋ฆฌ

* feat: refreshToken BaseTimeEntity ์ ์šฉ

* refactor: renewAccessToken -> renewAccessTokenBy ๋ฉ”์„œ๋“œ๋ช… ๋ณ€๊ฒฝ ๋ฐ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„ token -> refreshToken ๋ณ€๊ฒฝ

* refactor: ํ…Œ์ŠคํŠธ์šฉ ์‹œํฌ๋ฆฟ ํ‚ค ์ƒ์ˆ˜ ๋ถ„๋ฆฌ

* refactor: ๊ฐœํ–‰ ๋ณ€๊ฒฝ

* refactor: logout ํ†ต์ผ

* refactor: ํ† ํฐ ๋งŒ๋ฃŒ๊ธฐํ•œ ๋ณ€์ˆ˜๋ช… ์ˆ˜์ •

* test: ๋ถˆํ•„์š”ํ•œ @SpringBootTest ์ œ๊ฑฐ

* refactor: ํ† ํฐ ์ƒ์„ฑ์‹œ ๋ฐ›๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ๋ณ€๊ฒฝ

* feature: ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๊ณ ๋„ํ™” (#453)

* feat: webpack config ์ž๋™ ์™„์„ฑ annotation ์ถ”๊ฐ€

* feat: ErrorBoundary onError ์˜ต์…˜ ์ถ”๊ฐ€

* feat: RenderProps ํƒ€์ž… ์ถ”๊ฐ€

* feat: ErrorBoundary ignore option ์ถ”๊ฐ€

* feat: APIBoundary ์ถ”๊ฐ€

* feat: componseFunctions util ํ•จ์ˆ˜ ์ถ”๊ฐ€

* feat: useErrorBoundary ์ถ”๊ฐ€

* feat: PrefetchImg ์ถ”๊ฐ€

* refactor: Global Provider๋“ค์˜ ์‚ฌ์šฉ ์œ„์น˜๋ฅผ index > App์œผ๋กœ ๋ณ€๊ฒฝ

* feat: Global eventHandler ์ถ”๊ฐ€

- online
- offline
- unhandledrejection

* feat: QueryBoundary ์ถ”๊ฐ€ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜ ๋ณ€๊ฒฝ

* refactor: QueryBoundary ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ

* refactor: ์ „์—ญ Provider๋“ค์˜ ๊ฒฝ๊ณ„ ์žฌ์กฐ์ •

* fix: QueryBoundary ์ž„ํฌํŠธ ๊ฒฝ๋กœ ์ˆ˜์ •

* feat: msw ๋ชจ๋“ˆ ๊ฒฝ๋กœ ์ˆ˜์ •

* refactor: FoodList ๋ฐ์ดํ„ฐ ์š”์ฒญ ์œ„์น˜ ๋ณ€๊ฒฝ

* feat: exception routes ์ถ”๊ฐ€

* feat: exception router์— ErrorPage ์ ์šฉ

* refactor: ErrorBoundaryState ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ˆ˜์ •

* feat: ErrorBoundaryValue ํƒ€์ž…์— error ํƒ€์ž… ์ถ”๊ฐ€

* feat: ErrorBoundary fallback์— error ์ •๋ณด๋„ ํ•จ๊ป˜ ์ œ๊ณต

* feat: CustomError ์ถ”๊ฐ€

- RuntimeError
- UnexpectedError

* feat: APIBoundary UnexpectedError ์ ์šฉ

* refactor: error message ์ˆ˜์ •

* feat: EndOfErrorBoundary ์ถ”๊ฐ€

* refactor: UnexpectedError์˜ ๋ฉ”์„ธ์ง€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์ œ๊ฑฐ

* feat: APIErrorCode ์ถ”๊ฐ€

* refactor: ManageableAxiosError ํƒ€์ž… ๋ถ„๋ฆฌ

* feat: APIError ์ถ”๊ฐ€

* feat: APIBoundary ํ†ต์‹  ์„ฑ๊ณต์‹œ APIError throw

* chore: refresh icon ์ถ”๊ฐ€

* chore: home icon height, viewbox ์ˆ˜์ •

* feat: NOT_FOUND error message ์ถ”๊ฐ€

* refactor: UnexpectedError๊ฐ€ ๋ชจ๋“  value๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •

* refactor: ErrorPage๋ฅผ ๋™์ ์œผ๋กœ ์ˆ˜์ •

- error์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ status์™€ message ํ‘œ์‹œ
- NotFound page ์ถ”๊ฐ€

* refactor: exception routes์— NotFound ํŽ˜์ด์ง€ ์ ์šฉ

* refactor: UnexpectedError message ๋ณ€๊ฒฝ

* refactor: canManage ์กฐ๊ฑด ์ˆ˜์ •

* refactor: Error static method ์ถ”๊ฐ€

- convertToError ์ถ”๊ฐ€
- canManage๋ฅผ APIError์˜ static method๋กœ ๋ณ€๊ฒฝ

* refactor: CustomError > ZipgoError ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ

* feat: useMutationWithToast ์ถ”๊ฐ€

* feat: EndOfErrorBoundary ์ ์šฉ

* feat: ์ „์—ญ staleTime, cacheTime ์„ค์ •

* feat: reviewList query staleTime 1๋ถ„์œผ๋กœ ์„ค์ •

* feat: useMutationWithToast critical option ์ถ”๊ฐ€

* refactor: APIBoundary๊ฐ€ APIError์ธ ๊ฒฝ์šฐ throwํ•˜์ง€ ์•Š๋„๋ก ์ˆ˜์ •

* refactor: ignore key ์ƒ์ˆ˜๋กœ ๋ถ„๋ฆฌ

* refactor: type only export๋กœ ๋ณ€๊ฒฝ ๋ฐ named export ๊ทธ๋ฃนํ™”

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

* refactor: ๋„คํŠธ์›Œํฌ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ์ƒ์ˆ˜๋กœ ๋ถ„๋ฆฌ

* refactor: Unhandled rejection์„ ์—๋Ÿฌ๋ฐ”์šด๋”๋ฆฌ์—์„œ ์ฒ˜๋ฆฌ

* refactor: axios interceptor๊ฐ€ ์ตœ์ดˆ ๋ Œ๋”๋ง์‹œ์— ๋“ฑ๋ก๋˜๋„๋ก ์ˆ˜์ •

* refactor: ์ฃผ์„ ์ œ๊ฑฐ

* refactor: convertToError ๋กœ์ง์—์„œ ZipgoError๋Š” ์žฌ๋ณ€ํ™˜ ํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ

* feat: warning icon prefetch

* feat: ErrorCode ํƒ€์ž… ๊ธฐ๋ณธ๊ฐ’ ์ ์šฉ

* refactor: AxiosInterceptors ์ œ๊ฑฐ

- request interceptor์—์„œ Promise๋ฅผ ๋ฆฌํ„ดํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ์ˆ˜์ •
- ํ† ํฐ ๋งŒ๋ฃŒ์‹œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋กœ์ง์„ APIBoundary๋กœ ๋ถ„๋ฆฌ

* refactor: RenderProps return type ๋ณ€๊ฒฝ

* feat: resolveRenderProps ํ•จ์ˆ˜ ์ถ”๊ฐ€

* refactor: ErrorBoundary๊ฐ€ ๋ฌด์กฐ๊ฑด ์—๋Ÿฌ๋ฅผ ๋ณ€ํ™˜ํ•˜๋„๋ก ๋ณ€๊ฒฝ

* feat: isDifferentArray ์œ ํ‹ธ ํ•จ์ˆ˜ ์ถ”๊ฐ€

* feat: ErrorBoundary ๊ธฐ๋Šฅ ์ถ”๊ฐ€

- location ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์—๋Ÿฌ๊ฐ€ ์ดˆ๊ธฐํ™” ๋˜๋„๋ก ๋ณ€๊ฒฝ
- resetKeys prop ์ถ”๊ฐ€

* refactor: APIBoundary์—์„œ 401 ํ•ธ๋“ค๋ง์„ ํ•˜๋„๋ก ๋ณ€๊ฒฝ

* refactor: ํ•จ์ˆ˜ ์„ ์–ธ์‹์„ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ ๋ณ€๊ฒฝ

* refactor: APIBoundary ๋ถˆํ•„์š”ํ•œ ์—๋Ÿฌ ์žฌ๋ณ€ํ™˜ ์ œ๊ฑฐ

* refactor: composeFunctions์™€ composeEventHandlers ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ฉ

* refactor: APIBoundary๊ฐ€ onErrorProps๋„ ์‹คํ–‰ํ•˜๋„๋ก ๋ณ€๊ฒฝ

* refactor: ๊ธฐ์กด์˜ composeEventHandlers๋ฅผ composeFunctions๋กœ ๋ณ€๊ฒฝ

* feat: ๋ฉ”์ธํŽ˜์ด์ง€ ํ•˜๋‹จ '์‚ฌ๋ฃŒ ์„ ํƒ ๋„์›€๋ง ๋ฐฐ๋„ˆ' ์ถ”๊ฐ€ (#458)

* feat/#457: ์‚ฌ๋ฃŒ ์„ ํƒ ๋„์›€๋ง ๋ฐฐ๋„ˆ  ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

* test/#457: ์Šคํ† ๋ฆฌ ์ถ”๊ฐ€

* feat/#457: ๋žœ๋”ฉํŽ˜์ด์ง€์— ๋„์›€๋ง ๋ฐฐ๋„ˆ ์ถ”๊ฐ€

* refactor/#457: ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ…Œ๋งˆ๋กœ ๋ถ„๋ฆฌ

* Merge branch 'develop' of https://github.com/woowacourse-teams/2023-zipgo into feature/#457

* fix/#457: ์‚ฌํŒŒ๋ฆฌ์—์„œ svg ์ด๋ฏธ์ง€ ๊นจ์ง€๋Š” ๋ฌธ์ œ webp ์ด๋ฏธ์ง€ ์‚ฌ์šฉ์œผ๋กœ ํ•ด๊ฒฐ

* chore: ์Šคํ† ๋ฆฌ๋ถ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ ์ถ”๊ฐ€ (#464)

* fix: ์Šคํ† ๋ฆฌ๋ถ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ ์บ์‹œ ๋ฌดํšจํ™” ๋กœ์ง ์‚ญ์ œ ๋ฐ mockServiceWorker ๊ฒฝ๋กœ ์ˆ˜์ • (#466)

* chore/#465: ํด๋ผ์šฐ๋“œํ”„๋ก ํŠธ ์บ์‹œ ๋ฌดํšจํ™” ๋กœ์ง ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ ์‚ญ์ œ

* chore/#465: ์Šคํ† ๋ฆฌ๋ถ mockServiceWorker ๊ฒฝ๋กœ ์„ค์ •

* fix: ์Šคํ† ๋ฆฌ๋ถ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ ์บ์‹œ ๊ฒฝ๋กœ ์ˆ˜์ • (#468)

* chore: ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ์— ์บ์‹œ์ ์šฉ (#470)

* chore/#469: ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ์— ์บ์‹œ ์ ์šฉ

* chore/#469: ์ž‘์—… ์‹คํ–‰ ์กฐ๊ฑด ์ˆ˜์ •

* feat: ์‹ํ’ˆ ํ•„ํ„ฐ ์„ ํƒ ํ›„ ์„ ํƒํ•œ ํ•„ํ„ฐ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (#461)

* feat/#460: ๋ฐ˜๋ ค๊ฒฌ ๋“ฑ๋ก ํ™”์‚ดํ‘œ ์‚ญ์ œ

* feat/#460: ์„ ํƒํ•œ ํ•„ํ„ฐ ๋ณด์—ฌ์ค„ ๋•Œ ๋‚œ๋…ํ™”๋ผ์„œ ๋‚˜์˜ค์ง€ ์•Š๋„๋ก url๋ณตํ˜ธํ™”

* refactor/#460: ํŒŒ์ผ ์ด๋™

* feat/#460: ์„ ํƒํ•œ ํ•„ํ„ฐ ๋ชฉ๋ก ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* refactor/#460: ์ปดํฌ๋„ŒํŠธ๋ช… ์ˆ˜์ •

* refactor/#460: ์ปดํฌ๋„ŒํŠธ๋ช… ์ˆ˜์ •

* fix/#460: ์ž˜๋ชป๋œ ์ง€ํ‘œ ์„ค๋ช… ์ˆ˜์ •

* refactor/#460: iPhone13 mini์—์„œ ๋„์›€๋ง ์ค„๋ฐ”๊ฟˆ ์—†์ด ๋ณด์ด๋„๋ก ์ˆ˜์ •

* refactor: else if ๋ฌธ ๊ฐœ์„ 

* refactor: ํด๋ฆญ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ SelectedFilterItem์œผ๋กœ ์ด๋™

* refactor: string๋ฐฐ์—ด KEYWORD_EN์œผ๋กœ ๋Œ€์ฒด

* refactor: ํƒ€์ž…๋ช…๊ณผ ์ผ์น˜ํ•˜๋„๋ก category > keyword๋กœ ๋ณ€์ˆ˜๋ช… ์ˆ˜์ •

* feat: Object.entries ํƒ€์ž… ์ถ”๋ก ์„ ์œ„ํ•œ ์˜ค๋ฒ„๋กœ๋”ฉ ํƒ€์ž… ์ถ”๊ฐ€

* refactor: ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์— ๋”ฐ๋ผ ํ•„ํ„ฐ ์ƒํƒœ ์—…๋ฐ์ดํŠธ ํ•˜๋„๋ก ์ˆ˜์ •

* refactor: ํŽซํ‘ธ๋“œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ๋ฆฌํŒฉํ„ฐ๋ง (#459)

* refactor: PetFoodQueryRepository ํ…Œ์ŠคํŠธ๊ฐ„ ๋…๋ฆฝ์„ฑ ๋ณด์žฅ

* refactor: PetFoodQueryService ํ…Œ์ŠคํŠธ๊ฐ„ ๋…๋ฆฝ์„ฑ ๋ณด์žฅ

* refactor: PetFoodController ํ…Œ์ŠคํŠธ๊ฐ„ ๋…๋ฆฝ์„ฑ ๋ณด์žฅ

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

* refactor: fixture ์ˆ˜์ •

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

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

* refactor: QueryServiceTest ์‚ญ์ œ

* refactor: ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ํ†ตํ•ฉ ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐ

* refactor: abstract ์ถ”๊ฐ€

* feat: Datadog Trace ์–ด๋…ธํ…Œ์ด์…˜ ์ถ”๊ฐ€ (#475)

* feat: datadog ์˜์กด์„ฑ ์ถ”๊ฐ€

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

* feature: ErrorBoundary ์‚ฌ์šฉ ๋ฐฉ์‹ ๋ณ€๊ฒฝ ๋ฐ ๊ฐ„์†Œํ™” (#477)

* refactor: ๋ถˆํ•„์š”ํ•œ stringify ์ œ๊ฑฐ

* refactor: APIError status ํƒ€์ž… ์ง€์ •

* refactor: shouldIgnore ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์„ ์ œ๋„ค๋ฆญ์œผ๋กœ ๋ณ€๊ฒฝ

* feat: BaseFunction type ์ถ”๊ฐ€

* feat: resolveFunctionOrPrimitive ์œ ํ‹ธ ํ•จ์ˆ˜ ์ถ”๊ฐ€

* refactor: APIBoundary onError > ignore๋กœ ๋ณ€๊ฒฝ

* refactor: APIError์˜ method๊ฐ€ get์ด ์•„๋‹ˆ๋ผ๋ฉด ignore true๋กœ ์„ค์ •

* refactor: Error field ์ˆ˜์ •

- ignore > IGNORE_KEY

* refactor: ignore ์ธํ„ฐํŽ˜์ด์Šค ์ˆ˜์ •

- boolean๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ

* refactor: ErrorBoundary ์ธํ„ฐํŽ˜์ด์Šค ์ˆ˜์ •

- mustCatch ์ถ”๊ฐ€
- ignore > shouldIgnore๋กœ ๋ณ€๊ฒฝ
- EndOfBoundary > CriticalBoundary๋กœ ๋ณ€๊ฒฝ
- ๊ธฐ์กด shouldIgnore ์œ ํ‹ธ ํ•จ์ˆ˜ > isIgnored๋กœ ๋ณ€๊ฒฝ

* chore: nvmrc ์ถ”๊ฐ€ v18.16.1

* feat: Loading ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

* refactor: ๊ธฐ์กด QueryBoundary ์‚ฌ์šฉ์„ Loading, Suspense๋กœ ๋ณ€๊ฒฝ

* feat: ๊ฐ™์€ ํ”Œ๋กœ์šฐ ์•ˆ์˜ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํผ๋„ ์ถ”์ƒํ™” ๋ฐ ์ ์šฉ (#482)

* refactor/#473: navigate ๊ด€๋ จ ์ฝ”๋“œ ํ›… ๋ถ„๋ฆฌ

* feat/#473: Funnel, useFunnel ๊ตฌํ˜„

* feat/#473: NonEmptyArray ํƒ€์ž… ์ถ”๊ฐ€

* feat/#473: ReviewFormFunnel ์ ์šฉ

* refactor/#473: ReviewํŽ˜์ด์ง€ ๊ฒฝ๋กœ ์ˆ˜์ •

* feat/#473: ํ…œํ”Œ๋ฆฟ overflow-y auto๋กœ ๋ณ€๊ฒฝ

* feat/#473: ์Šคํฌ๋กค ๋””์ž์ธ ์•ˆ๋ณด์ด๋„๋ก ์ˆ˜์ •

* feat/#473: useFunnel ๋ฐ˜ํ™˜๊ฐ’ ๊ฐ์ฒด๋กœ ์ˆ˜์ •

* feat/#473: PetProfile ๋“ฑ๋ก ํผ Funnel ์ ์šฉ

* fix/#473: ๋ฏน์Šค๊ฒฌ์ธ ๊ฒฝ์šฐ์—๋งŒ petSize ๊ธฐ๋ณธ๊ฐ’ ๋„ฃ์–ด์ฃผ๋„๋ก ์ˆ˜์ •

* feat/#473: ํŽซ ๋“ฑ๋ก ํผ ์ž‘์„ฑ ์‹œ ํŽ˜์ด์ง€ ์ด๋™ํ•ด๋„ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜๋„๋ก ์„ค์ •

* feat/#473: ํผ ์ž‘์„ฑ ์ค‘ ์‚ฌ์šฉ์ž์˜ ์‹ค์ˆ˜๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•œ goBackSafely ์ ์šฉ

* feat/#473: ๋ฆฌ๋ทฐ ์Šคํ… ์ƒ์ˆ˜ํ™”

* fix/#473: 0์‚ด(1์‚ด๋ฏธ๋งŒ)์ผ ๋•Œ ๋‹ค์Œ ๋ฒ„ํŠผ ํ™œ์„ฑํ™”๋˜๋„๋ก ์ˆ˜์ •

* fix/#473: ReviewForm ํ…Œ์ŠคํŠธ ๊นจ์ง€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

* refactor/#473: ์ฝ”๋“œ ์ปจ๋ฒค์…˜ ๋งž์ถ”๊ธฐ ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์‚ญ์ œ

* refactor/#473: ์ธ๋ผ์ธ ๋ถ„๊ธฐ๋ฌธ ๋ณ€์ˆ˜๋กœ ์ถ”์ถœ

* fix: ํ† ํฐ์ด ์—†๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ ๋ณ€๊ฒฝ (#480)

* fix: ์˜ˆ์™ธ ๋ณ€๊ฒฝ

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

* feat: localhost https ์ถ”๊ฐ€ (#485)

* refactor: '์‚ฌ๋ฃŒ ์„ ํƒ ๋„์›€๋ง ๋ฐฐ๋„ˆ'๋ฅผ ๋‹ซ์œผ๋ฉด ๋ฆฌ์•กํŠธ ๋‚ด๋ถ€ ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์•ˆ ๋ณด์ด๋„๋ก ์ˆ˜์ • (#486)

* refactor: UI/UX ๊ฐœ์„  (#488)

* refactor: AlignSelect๋ฅผ native select๋กœ ๋ณ€๊ฒฝ

- ์‹ค์ œ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง๊ณผ select option์„ ๋™๊ธฐํ™”
- ์•„์ด์ฝ˜ ์ œ๊ฑฐ

* refactor: ALIGN_QUERY < REVIEW_ALIGN_QUERY ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ

* feat: REVIEW_FILTER_QUERY_STRINGS ์ƒ์ˆ˜ ์ถ”๊ฐ€

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

* refactor: ๋ฆฌ๋ทฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ƒ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ

* feat: ๋ฆฌ๋ทฐ ํ•„ํ„ฐ ์ƒํƒœ์™€ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ๋™๊ธฐํ™”

* feat: ํ•„ํ„ฐ ์•„์ด์ฝ˜ ์œ„์น˜ ์šฐ์ธก์œผ๋กœ ๋ณ€๊ฒฝ

* feat: ์ƒ์ˆ˜ ์ ์šฉ ๋ฐ ๋ถˆํ•„์š”ํ•œ useEffect ์ œ๊ฑฐ

* refactor: ๊ฒฌ์ข… select ๊ธฐ๋ณธ ํ™”์‚ดํ‘œ ์ œ๊ฑฐ

* feat: ReactQueryDevtools ์ถ”๊ฐ€

* refactor: StyledProps $props ํ˜•์‹์„ ์นด๋ฉœ ์ผ€์ด์Šค ๋„ค์ด๋ฐ์—๋งŒ ์ ์šฉ

* refactor: theme animation > keyframes๋กœ ๋ณ€๊ฒฝ ๋ฐ ๋ณ„๋„์˜ animation ์†์„ฑ ์ถ”๊ฐ€

* refactor: COMMENT_VISIBLE_LINE_LIMIT ์˜คํƒ€ ์ˆ˜์ •

* feat: ReviewItem Skeleton ์ถ”๊ฐ€

* refactor: ๊ธฐ์กด ReviewList > ReviewListAndChart๋กœ ๋ณ€๊ฒฝ ๋ฐ ReviewList ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ

* refactor: query key ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ์ œ๊ฑฐ

* refactor: ๋ณ€๊ฒฝ๋œ ReviewListAndChart ๋„ค์ด๋ฐ ์ ์šฉ

* refactor: query key์— queryString ์ถ”๊ฐ€

* refactor: refetch > query key์— queryString์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ

* feat: SuspendedImg ์ถ”๊ฐ€

* refactor: StarRatingDisplay ๋ณ„์  ์ด๋ฏธ์ง€ SuspenedImg๋กœ ๋ณ€๊ฒฝ

* feat: ReviewControls Skeleton ์ถ”๊ฐ€

* refactor: SuspensedImg src๋ฅผ ์˜ต์…”๋„๋กœ ๋ณ€๊ฒฝ

* refactor: ReviewItem img > SuspendedImg๋กœ ๋ณ€๊ฒฝ

* refactor: ๋ˆ„๋ฝ๋๋˜ FilterSelectionDisplay ์žฌ์ ์šฉ

* feat: SuspenedImg lazy loading ๊ธฐ๋Šฅ ์ถ”๊ฐ€

* feat: FoodList Skeleton ์ถ”๊ฐ€

* feat: foodList fixture imageUrl ์ถ”๊ฐ€

* feat: FoodItem Skeleton ์ถ”๊ฐ€ ๋ฐ LazyImg > SuspendedImg๋กœ ๋ณ€๊ฒฝ

* feat: FoodList Skeleton ์ ์šฉ

* feat: FilterBottomSheet ์ตœ๋Œ€ ๋†’์ด ์ง€์ •

* feat: iPhone8 ์ดํ•˜ ์‚ฌ์ด์ฆˆ ๋Œ€์‘

* refactor: ReviewControls ๋ ˆ์ด์•„์›ƒ ์ˆ˜์ •

* chore: stylelint rule ์ถ”๊ฐ€

* refactor: ์‚ฌ๋ฃŒ ํ•„ํ„ฐ ๋ชฉ๋ก ๋ ˆ์ด์•„์›ƒ ์ตœ์†Œ ๋†’์ด ์„ค์ •

* refactor: GuideBanner ์ž‘์€ ๋””๋ฐ”์ด์Šค์—์„œ ํฐํŠธ ์‚ฌ์ด์ฆˆ ์ž‘๊ฒŒ ๋ณ€๊ฒฝ

* refactor: ์˜์–‘๊ธฐ์ค€ ๊ตญ๊ธฐ ์ด๋ชจ์ง€ > svg๋กœ ๋ณ€๊ฒฝ

* refactor: ReviewList ๋ฆฌ๋ทฐ ๊ฒฐ๊ณผ ์—†์Œ ์ปดํฌ๋„ŒํŠธ ๋””์ž์ธ์„ ์‹ํ’ˆ ๊ฒฐ๊ณผ ์—†์Œ๊ณผ ํ†ต์ผ

* fix: NutritionStandardBlock story State๋ฅผ ์ง์ ‘ ๋ช…๋ช…

* refactor: NonEmptyArray type export๋กœ ๋ณ€๊ฒฝ

* refactor: styledprops $์žฌ์ ์šฉ

* refactor: ๏ฟฝOAuth API ํ˜ธ์ถœ์„ ํŠธ๋žœ์žญ์…˜ ๋ฒ”์œ„์—์„œ ๋ถ„๋ฆฌ (#471)

* refactor: AuthServiceFacade ์ ์šฉ

* test: AuthServiceFacade๋ฅผ ๋ชจํ‚น์œผ๋กœ ๋ถ„๋ฆฌ

* test: OAuth API ์ƒ์„ฑ ๋ฉ”์„œ๋“œ๋ช… ํ†ต์ผ

* refactor: ์„œ๋“œํŒŒํ‹ฐ ์„ฑ๊ณต ์‘๋‹ต fixture ์ƒ์„ฑ

* refactor: AuthControllerTest๋กœ ๋„ค์ด๋ฐ ๋ณ€๊ฒฝ

* feat: ๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค(ios)์—์„œ <input>, <textarea> ํฌ์ปค์Šค ์‹œ ์ž๋™ zoom-in๋˜๋Š” ํ˜„์ƒ ๊ฐœ์„  (#492)

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

* feat/#491: ๊ธ€๋กœ๋ฒŒ์Šคํƒ€์ผ ์ˆ˜์ •

* fix/#491: ๋ฐ์Šคํฌํ†ฑ ์‚ฌํŒŒ๋ฆฌ์—์„œ ๋„ค๋ชจ๋กœ ๋‚˜์˜ค๋Š” ๋ผ๋ฒจ ๋””์ž์ธ ์ˆ˜์ •

* feat/#491: ๋ชจ๋ฐ”์ผ ํ™”๋ฉด์—์„œ zoom-in๋˜์ง€ ์•Š๋„๋ก ํฐํŠธ ์‚ฌ์ด์ฆˆ ์„ค์ •

* feat/#491: select border-radius ๊ธฐ๋ณธ ์Šคํƒ€์ผ ์ œ๊ฑฐ

* refactor/#491: ์ค‘๋ณต css ์ฝ”๋“œ ์‚ญ์ œ

* feat: ๋ฐ์Šคํฌํƒ‘ ๋ทฐ ์ „์—ญ ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„ (#494)

* feat: DesktopView ๊ตฌํ˜„

* fix: storybook ci ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

* refactor: redirectUri๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ๋กœ๋ถ€ํ„ฐ ๋ฐ›๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ (#456)

* fix: allowCredentials ์˜ต์…˜ ๋ฐ ํ—ˆ์šฉ ํ—ค๋” ์ถ”๊ฐ€ (#496)

* feat: ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ํ™˜๊ฒฝ๋ถ„๋ฆฌ ์ถ”๊ฐ€ (#495)

* feat: ์ฟ ํ‚ค ๋‚ด SameSite=None ์˜ต์…˜ ์ถ”๊ฐ€ (#497)

* fix: allowCredentials ์˜ต์…˜ ๋ฐ set-Cookie ํ—ค๋” ์ถ”๊ฐ€

* fix: sameSite none ์˜ต์…˜ ์ถ”๊ฐ€

* fix: sameSite none ์˜ต์…˜ ์ถ”๊ฐ€

* fix: ์ฟ ํ‚ค ๋‚ด domain ์„ค์ • ์ถ”๊ฐ€ (#498)

* fix: UI ๊นจ์ง ํ•ด๊ฒฐ (#501)

* feature: ์นด์นด์˜ค ๋กœ๊ทธ์ธ redirect uri ๋™์ ์œผ๋กœ ์„ค์ • (#500)

* feat: refreshZipgoAuth api ์ถ”๊ฐ€

* feat: response interceptor refresh ๋กœ์ง ์ถ”๊ฐ€

* refactor: useNavigate > useEasyNavigate๋กœ ์ˆ˜์ •

* chore: .gitignore *.pem ์ถ”๊ฐ€

* feat: https cert key paths ์ถ”๊ฐ€

* feat: localhost https ์ ์šฉ

* feat: ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ถ”๊ฐ€

- isLocal ์ถ”๊ฐ€
- HOMEPAGE ์ถ”๊ฐ€
- isDevelop, isProduction, HTTPS ๋ถ„๋ฆฌ
- KAKAO_REDIRECT_URI ์‚ญ์ œ ๋ฐ webpack์—์„œ ๋™์ ์œผ๋กœ ์„ค์ •ํ•˜๋„๋ก ๋ณ€๊ฒฝ

* feat: ๋กœ๊ทธ์ธ api ์ˆ˜์ •

- loginZipgoAuth redirect-uri ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง ์ถ”๊ฐ€
- refreshZipgoAuth withCredentials ์˜ต์…˜ ์ถ”๊ฐ€

* feat: isAuthError static method ์ถ”๊ฐ€

* refactor: ๋ถˆํ•„์š”ํ•œ axios instance ์„ค์ • ์ œ๊ฑฐ

* refactor: ์œ ์ € ๊ถŒํ•œ ์ธ์ฆ ๋กœ์ง ๋ถ„๋ฆฌ > useCheckAuth

* feat: Priavte route ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

* feat: Private route ์ ์šฉ

* refactor: test ์ฝ”๋“œ ์ œ๊ฑฐ

* refactor: ์นด์นด์˜ค ๋กœ๊ทธ์ธ ์—๋Ÿฌ๋ฅผ Runtime ์ปค์Šคํ…€ ์—๋Ÿฌ๋กœ ๋ณ€๊ฒฝ

* refactor: error text๊ฐ€ ๊ฐœํ–‰์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณ€๊ฒฝ

* fix: storybook process is not defined ์˜ค๋ฅ˜ ์ˆ˜์ •

* feat: RefreshToken ์ „ํ™˜ (#503)

* feat: RefreshToken ์ ์šฉ

* chore: EOF ์ถ”๊ฐ€

* refactor: refreshToken ํ”Œ๋กœ์šฐ ๋ณ€๊ฒฝ (#504)

* docs: README ์—…๋ฐ์ดํŠธ (#505)

* docs: README ์—…๋ฐ์ดํŠธ

* docs: README ์—…๋ฐ์ดํŠธ

* refactor: ๋ฆฌํ”„๋ ˆ์‹œ ์ฟ ํ‚ค > JWT ๋ณ€๊ฒฝ ๋ฐ ๋ฒ„๊ทธ + ๊ฐœ์„  ์‚ฌํ•ญ ๋ฐ˜์˜ (#506)

* feat: LoginZipgoaAuth refresh token ์ถ”๊ฐ€

* refactor: ๊ธฐ์กด refresh token ๋กœ์ง์„ ์ฟ ํ‚ค > JWT๋กœ ๋ณ€๊ฒฝ

* fix: FilterDialog Desktop์—์„œ position์ด ์•ˆ๋งž๋Š” ํ˜„์ƒ ์ˆ˜์ •

* refactor: Template min-height ์ˆ˜์ •

* refactor: FoodDetailWrapper padding bottom ์กฐ์ ˆ

* refactor: Toast ๋†’์ด ์ˆ˜์ •

* refactor: petFoodId type ์ˆ˜์ •

* refactor: ๋ฆฌ๋ทฐ CRUD์— ๋”ฐ๋ผ SummaryChart ๋ณ„์ ์ด ๋™๊ธฐํ™” ๋˜๋„๋ก ์ˆ˜์ •

* fix: UI ๊นจ์ง, ์Šค์ผˆ๋ ˆํ†ค UI ์ˆ˜์ • (#513)

* fix: 0์‚ด์ด๋ฉด 1์‚ด ๋ฏธ๋งŒ์œผ๋กœ ๋œจ๋„๋ก ์ˆ˜์ •, ๋ฆฌ๋ทฐ ๋”๋ณด๊ธฐ ํด๋ฆญ์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ (#512)

* fix/#511: ๋ฆฌ๋ทฐ ๋ชฉ๋ก ํ•˜๋‹จ margin ์ถ”๊ฐ€

- ๋ฆฌ๋ทฐ ๋”๋ณด๊ธฐ ํด๋ฆญ์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

* feat/#511: 0์‚ด์ด๋ฉด 1์‚ด ๋ฏธ๋งŒ์œผ๋กœ ๋œจ๋„๋ก ์ˆ˜์ •

* feat/#511: ์ƒํ’ˆ์ƒ์„ธ ํ•˜๋‹จ margin ์ถ”๊ฐ€

* hotfix: ๋ฆฌ๋ทฐ, ํŽซ ํ”„๋กœํ•„ ์—…๋ฐ์ดํŠธ์— ๋”ฐ๋ผ ์ƒํƒœ ๋™๊ธฐํ™” (#514)

* refactor: ๋ถˆํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ ๋ณ‘ํ•ฉ

* fix: 1๋ถ„ ์ž˜๋ชป๋œ ์‹œ๊ฐ„ ์ˆ˜์ •

* fix: ๋ฆฌ๋ทฐ ์—…๋ฐ์ดํŠธ์— ๋”ฐ๋ผ ์ƒํ’ˆ ๋ณ„์  ๋™๊ธฐํ™”

* fix: ํŽซ ํ”„๋กœํ•„ ์—…๋ฐ์ดํŠธ์— ๋”ฐ๋ผ ํŽซ ํ”„๋กœํ•„ ์ •๋ณด ๋™๊ธฐํ™”

---------

Co-authored-by: Sangwon Kang <[email protected]>
Co-authored-by: wyc <[email protected]>
Co-authored-by: Mooooooo <[email protected]>
Co-authored-by: iamjooon2 <[email protected]>
Co-authored-by: Seyeon Jeong <[email protected]>
Co-authored-by: Kayoung Yoon <[email protected]>
  • Loading branch information
7 people authored Oct 19, 2023
1 parent 9b78a2f commit c99f38f
Show file tree
Hide file tree
Showing 248 changed files with 5,855 additions and 2,683 deletions.
25 changes: 22 additions & 3 deletions .github/workflows/frontend-deploy-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@ name: Frontend Deploy to Dev

on:
push:
branches: [develop]
paths: frontend/**
branches:
- develop
paths:
- frontend/**
- .github/**

jobs:
build-dockerfile:
Expand All @@ -18,8 +21,24 @@ jobs:
with:
node-version: '18.x'

- name: Cache Yarn global cache
uses: actions/cache@v3
with:
path: '**/.yarn'
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Cache Yarn project cache
uses: actions/cache@v3
with:
path: '**/.yarn/cache'
key: ${{ runner.os }}-yarn-project-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-project-
- name: Install dependencies
run: yarn
run: yarn install --immutable

- name: Set up QEMU
uses: docker/setup-qemu-action@v2
Expand Down
25 changes: 22 additions & 3 deletions .github/workflows/frontend-deploy-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@ name: Frontend Deploy to Prod

on:
push:
branches: [main]
paths: frontend/**
branches:
- main
paths:
- frontend/**
- .github/**

jobs:
build-dockerfile:
Expand All @@ -18,8 +21,24 @@ jobs:
with:
node-version: '18.x'

- name: Cache Yarn global cache
uses: actions/cache@v3
with:
path: '**/.yarn'
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Cache Yarn project cache
uses: actions/cache@v3
with:
path: '**/.yarn/cache'
key: ${{ runner.os }}-yarn-project-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-project-
- name: Install dependencies
run: yarn
run: yarn install --immutable

- name: Set up QEMU
uses: docker/setup-qemu-action@v2
Expand Down
73 changes: 73 additions & 0 deletions .github/workflows/frontend-storybook-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Frontend Storybook Deploy To S3

on:
push:
branches:
- develop
paths:
- frontend/**
- .github/**

jobs:
build:
runs-on: ubuntu-22.04
defaults:
run:
working-directory: ./frontend
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true

steps:
- name: Use repository source
uses: actions/checkout@v3

- name: Use node.js
uses: actions/setup-node@v3
with:
node-version: 18.x

- name: Cache Yarn global cache
uses: actions/cache@v3
with:
path: '**/.yarn'
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Cache Yarn project cache
uses: actions/cache@v3
with:
path: '**/.yarn/cache'
key: ${{ runner.os }}-yarn-project-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-project-
- name: Install dependencies
run: yarn install --immutable

- name: Build Storybook
run: yarn build:sb

- name: Upload storybook build files to temp artifact
uses: actions/upload-artifact@v3
with:
name: Storybook
path: frontend/storybook-static
deploy:
needs: build
runs-on: front-dev-server
steps:
- name: Remove previous version app
working-directory: .
run: rm -rf frontend/storybook

- name: Download the built file to AWS EC2
uses: actions/download-artifact@v3
with:
name: Storybook
path: frontend/storybook

- name: Upload to S3
run: |
aws s3 sync frontend/storybook s3://2023-team-project/2023-zipgo/storybook --delete
49 changes: 39 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,43 @@
# 2023-zipgo
<p align="center">
<img src="https://github.com/woowacourse-teams/2023-zipgo/assets/24777828/e7eefb82-4bbf-47cd-a6ef-dc756d97c77d" alt="์ง‘๊ณ  README ๋ฐฐ๋„ˆ" />
<p align="center">
<img src="https://img.shields.io/badge/react-v18.2.0-9cf?logo=react" alt="react v18.2.0" />
<img src="https://img.shields.io/badge/spring_boot-v3.1.1-green?logo=springbootโ€ alt="spring-boot v3.1.1" />
<img src="https://img.shields.io/badge/typescript-v5.1.6-blue?logo=typescriptโ€ alt="typescript v5.1.6"/>
<img src="https://img.shields.io/badge/mysql-v8.0.34-blue?logo=mysql" alt="mysql v8.0.34"/>
</p>

## ๋ฉค๋ฒ„
**์ดˆ๋ณด ์ง‘์‚ฌ์˜ ๋ฐ˜๋ ค๋™๋ฌผ ์‹ํ’ˆ ์„ ํƒ์„ ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค**, ์ง‘์‚ฌ์˜๊ณ ๋ฏผ์ž…๋‹ˆ๋‹ค.

| Frontend | Frontend | Frontend |
| :--------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------: |
| <img src="https://avatars.githubusercontent.com/u/24777828?v=4" width=100px alt="์ฒต์Šค"/> | <img src="https://avatars.githubusercontent.com/u/79056677?v=4" width=100px alt="๋…ธ์•„์ด์ฆˆ"/> | <img src="https://avatars.githubusercontent.com/u/72087183?v=4" width=100px alt="์—๋””"/> |
| [์ฒต์Šค](https://github.com/HyeryongChoi) | [๋…ธ์•„์ด์ฆˆ](https://github.com/n0eyes) | [์—๋””](https://github.com/ksone02)
์ „๋ฌธ๊ฐ€๋“ค์˜ ์‚ฌ๋ฃŒ ์„ ํƒ ๊ธฐ์ค€์€ ๋ฌด์—‡์ผ๊นŒ์š”?

๋‹ค์–‘ํ•œ ์ „๋ฌธ๊ฐ€๋“ค์ด ์ธ์ •ํ•˜๋Š” [์ข‹์€ ์‚ฌ๋ฃŒ ์„ ํƒ ๊ธฐ์ค€]([https://translucent-mallet-426.notion.site/dae305b85c8146399d7de6a0e74b773d](https://www.notion.so/dae305b85c8146399d7de6a0e74b773d?pvs=21)), **์ง‘์‚ฌ์˜ ๊ณ ๋ฏผ**์—์„œ ํ™•์ธํ•˜์„ธ์š”!

| Backend | Backend | Backend | Backend |
|:--------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------:|:----------------------------------:| :----------------------------------:|
| <img src="https://avatars.githubusercontent.com/u/73161212?v=4" width=100px alt="๊ฐ€๋น„"/> | <img src="https://avatars.githubusercontent.com/u/76938931?v=4" width=100px alt="๋ฌด๋ฏผ"/> | <img src="https://avatars.githubusercontent.com/u/94087228?v=4" width=100px alt="๋ฒ ๋ฒ "/> | <img src="https://avatars.githubusercontent.com/u/61582017?v=4" width=100px alt="๋กœ์ง€"/> |
| [๊ฐ€๋น„](https://github.com/iamjooon2) | [๋ฌด๋ฏผ](https://github.com/parkmuhyeun) | [๋ฒ ๋ฒ ](https://github.com/wonyongChoi05) | [๋กœ์ง€](https://github.com/kyY00n)
- [zipgo.pet](https://zipgo.pet)
- [zipgo.wiki](https://github.com/woowacourse-teams/2023-zipgo/wiki)

# Skills

### Frontend Tech Stack
![Frontend Tech Stacks](https://github.com/woowacourse-teams/2023-zipgo/assets/24777828/4372f950-d29e-46a0-807c-79d78a7f6913)

### Backend Tech Stack
![Backend Tech Stacks](https://github.com/woowacourse-teams/2023-zipgo/assets/24777828/a4643676-e669-43f5-9bb4-d2f4e92ed470)

# Infra Structure
![Zigo Infra](https://github.com/woowacourse-teams/2023-zipgo/assets/24777828/09847ae1-2aac-41a1-9302-4a2b49a284e0)


### Frontend Infra Structure
![image](https://github.com/woowacourse-teams/2023-zipgo/assets/24777828/eac9e8af-2df3-486a-9812-6a39ab36eb4e)

### Backend Infra Structure
![image](https://github.com/woowacourse-teams/2023-zipgo/assets/24777828/c6b9ec96-1301-4088-98d1-1e1ec1d3b334)


# Member

| [์ฒต์Šค](https://github.com/HyeryongChoi) | [๋…ธ์•„์ด์ฆˆ](https://github.com/n0eyes) | [์—๋””](https://github.com/ksone02) | [๊ฐ€๋น„](https://github.com/iamjooon2) | [๋ฌด๋ฏผ](https://github.com/parkmuhyeun) | [๋ฒ ๋ฒ ](https://github.com/wonyongChoi05) | [๋กœ์ง€](https://github.com/kyY00n) |
| :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: |
| <img src="https://avatars.githubusercontent.com/u/24777828?v=4" width=200px alt="์ฒต์Šค" /> | <img src="https://avatars.githubusercontent.com/u/79056677?v=4" width=200px alt="๋…ธ์•„์ด์ฆˆ" /> | <img src="https://avatars.githubusercontent.com/u/72087183?v=4" width=200px alt="์—๋””" /> | <img src="https://avatars.githubusercontent.com/u/73161212?v=4" width=200px alt="๊ฐ€๋น„" /> | <img src="https://avatars.githubusercontent.com/u/76938931?v=4" width=200px alt="๋ฌด๋ฏผ" /> | <img src="https://avatars.githubusercontent.com/u/94087228?v=4" width=200px alt="๋ฒ ๋ฒ "/> | <img src="https://avatars.githubusercontent.com/u/61582017?v=4" width=200px alt="๋กœ์ง€" /> |
| Frontend | Frontend | Frontend | Backend | Backend | Backend | Backend |
4 changes: 4 additions & 0 deletions backend/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

implementation group: 'com.datadoghq', name: 'dd-trace-api', version: '1.21.0'

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"
Expand Down Expand Up @@ -110,6 +112,7 @@ jacocoTestReport {
'**/*Response*',
'**/*Request*',
'**/BaseTimeEntity',
'**/KakaoOAuthClient',
'**/*Dto*',
'**/S3*',
'**/*Interceptor*',
Expand Down Expand Up @@ -149,6 +152,7 @@ jacocoTestCoverageVerification {
'*.*Exception*',
'*.*Dto',
'*.S3*',
'*.KakaoOAuthClient*',
'*.*Response',
'*.*Request',
'*.BaseTimeEntity',
Expand Down
28 changes: 0 additions & 28 deletions backend/deploy-dev.sh

This file was deleted.

28 changes: 0 additions & 28 deletions backend/deploy-prod.sh

This file was deleted.

40 changes: 40 additions & 0 deletions backend/src/main/java/zipgo/aspect/ConnectionProxyHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package zipgo.aspect;

import org.springframework.web.context.request.RequestContextHolder;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class ConnectionProxyHandler implements InvocationHandler {

private static final String QUERY_PREPARE_STATEMENT = "prepareStatement";

private final Object connection;
private final QueryCounter queryCounter;

public ConnectionProxyHandler(Object connection, QueryCounter queryCounter) {
this.connection = connection;
this.queryCounter = queryCounter;
}

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
countQuery(method);
return method.invoke(connection, args);
}

private void countQuery(Method method) {
if (isPrepareStatement(method) && isRequest()) {
queryCounter.increaseCount();
}
}

private boolean isPrepareStatement(Method method) {
return method.getName().equals(QUERY_PREPARE_STATEMENT);
}

private boolean isRequest() {
return RequestContextHolder.getRequestAttributes() != null;
}

}
18 changes: 18 additions & 0 deletions backend/src/main/java/zipgo/aspect/QueryCounter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package zipgo.aspect;

import lombok.Getter;
import org.springframework.stereotype.Component;
import org.springframework.web.context.annotation.RequestScope;

@Getter
@Component
@RequestScope
public class QueryCounter {

private int count;

public void increaseCount() {
count++;
}

}
29 changes: 29 additions & 0 deletions backend/src/main/java/zipgo/aspect/QueryCounterAop.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package zipgo.aspect;

import lombok.RequiredArgsConstructor;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

import java.lang.reflect.Proxy;

@Aspect
@Component
@RequiredArgsConstructor
public class QueryCounterAop {

private final QueryCounter queryCounter;

@Around("execution(* javax.sql.DataSource.getConnection(..))")
public Object getConnection(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
Object connection = proceedingJoinPoint.proceed();

return Proxy.newProxyInstance(
connection.getClass().getClassLoader(),
connection.getClass().getInterfaces(),
new ConnectionProxyHandler(connection, queryCounter)
);
}

}
Loading

0 comments on commit c99f38f

Please sign in to comment.