Commit f7bf794
feat: api client 모듈 생성 (#37)
* feat: ky 기반 공용 API 클라이언트 구현
- ApiResponse, ErrorResponse 타입 정의
- ApiError 커스텀 에러 클래스 및 isApiError 타입 가드
- createApiClient 팩토리 함수 (GET, POST, PUT, PATCH, DELETE)
- 기본 apiClient 인스턴스 (NEXT_PUBLIC_API_URL 환경변수 사용)
- 불필요한 utils/index.ts barrel export 제거
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: API 클라이언트 baseUrl에 공통 경로 추가
- /api/v1 공통 경로를 baseUrl에 포함
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* style: API 클라이언트 코드 포맷 정리
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: API 클라이언트 타입을 KyOptions 기반으로 개선
- ApiClientConfig: KyOptions indexed access type 활용
- ApiRequestOptions: Pick<KyOptions, ...>으로 변경
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: 모임장 모임 생성 api 연동 (Tanstack-Query 기반 요청 제외) (#38)
* style: API 클라이언트 코드 포맷 정리
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: 모임 생성 API 정의
- CreateGatheringRequest, CreateGatheringResponse 타입
- createGathering API 함수
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: 모임 생성 완료 페이지 동적 라우트 변경
- /gathering/create/complete → /gathering/create/complete/[accessKey]
- useParams로 accessKey 파라미터 수신
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: 모임 생성 API 연동
- RegionStep에서 createGathering API 호출
- 로딩 중 Spinner 표시
- API 에러 시 toast 알림
- 성공 시 accessKey로 완료 페이지 라우팅
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: 루트 레이아웃에서 전역 Toaster 제거
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: 모임 생성 완료 페이지 기능 연결
- handlePreferenceInput: opinion 페이지로 라우팅 구현
- handleShare: opinion 페이지 URL로 공유 기능 연결
- 미사용 Toaster import 제거
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: participant 도메인 내 신규 모임 참여 API 함수 추가 (#39)
* feat: participant API 추가
- POST /api/v1/participants 모임 참여 API
- CreateParticipantRequest, CreateParticipantResponse 타입 정의
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: prettier 양식에 어긋난 코드를 수정
* feat: recommend-result 도메인 내 추천 결과 조회 API 함수 추가 (#40)
* feat: recommend-result API 추가
- GET /api/v1/recommend-results/{accessKey} 추천 결과 조회 API
- GetRecommendResultResponse 타입 정의 (기존 RecommendationResult 재사용)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: prettier 양식에 어긋난 코드를 수정
* feat: 모임 단건 조회 API 추가 (#41)
* chore: prettier 양식에 어긋난 코드를 수정
* feat: 모임 단건 조회 API 추가
- GET /api/v1/gatherings/{accessKey} 모임 단건 조회 API
- GetGatheringResponse 타입 정의
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: GetGatheringResponse 타입 NonNullable 적용
- timeSlot, region 필드에 NonNullable 적용
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat: 모임 참여 현황 조회 API 함수 추가 (#46)
* feat: 모임 참여자 현황 조회 API 추가
- GatheringCapacityResponse 타입 정의 추가
- getGatheringCapacity API 함수 구현
- GET /api/v1/gatherings/{accessKey}/capacity 엔드포인트 연동
Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
* chore: prettier 포맷에 맞지 않았던 코드 수정
* chore: 병합 과정에서 충돌이 발생했던 코드 수정
---------
Co-authored-by: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
* feat: 모임장 모임 생성 api Tanstack-Query 기반 요청 적용 (#42)
* feat: QueryProvider 설정 추가
- QueryClientProvider 래퍼 컴포넌트 생성
- 기본 staleTime 60초, retry 설정
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: gathering Query Factory Pattern 파일 추가
- gatheringKeys: mutation key factory
- gatheringOptions: mutation options factory
- index.ts에 export 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: useCreateGathering mutation hook 추가
- useMutation 기반 모임 생성 hook
- gatheringOptions.create() 활용
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: RegionStep에 useMutation 적용
- useCreateGathering hook으로 API 호출 변경
- useState(isSubmitting) → isPending으로 대체
- gathering layout에 QueryProvider 적용
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: QueryProvider 포맷팅
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: queryOption 포맷팅
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: participant 도메인 내 신규 모임 참여 API 함수 추가 (#39)
* feat: participant API 추가
- POST /api/v1/participants 모임 참여 API
- CreateParticipantRequest, CreateParticipantResponse 타입 정의
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: prettier 양식에 어긋난 코드를 수정
* feat: recommend-result 도메인 내 추천 결과 조회 API 함수 추가 (#40)
* feat: recommend-result API 추가
- GET /api/v1/recommend-results/{accessKey} 추천 결과 조회 API
- GetRecommendResultResponse 타입 정의 (기존 RecommendationResult 재사용)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: prettier 양식에 어긋난 코드를 수정
* feat: 모임 단건 조회 API 추가 (#41)
* chore: prettier 양식에 어긋난 코드를 수정
* feat: 모임 단건 조회 API 추가
- GET /api/v1/gatherings/{accessKey} 모임 단건 조회 API
- GetGatheringResponse 타입 정의
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: GetGatheringResponse 타입 NonNullable 적용
- timeSlot, region 필드에 NonNullable 적용
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat: opengraph, favicon 적용 (#43)
* feat: 페이지별 OpenGraph 메타데이터 적용
- 루트 layout에 기본 OG 이미지 활성화
- 모임 생성 완료 페이지 OG 메타데이터 추가
- 의견 수합 페이지들 OG 메타데이터 추가
- 결과 페이지 OG 메타데이터 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: favicon 및 앱 아이콘 적용
- favicon.ico 교체
- icon.png (32x32) 추가
- apple-icon.png (180x180) 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: 모임 생성 퍼널 전환을 모임원 의견 수합 퍼널 전환과 동일하게 적용 (#44)
* refactor: StepTransition 컴포넌트를 공용 컴포넌트로 마이그레이션
- src/components/stepTransition으로 이동
- opinion 전용 타입(OpinionStep)을 제네릭(string)으로 변경
- intro step 체크 로직 제거 (페이지 레벨에서 처리)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: useCreateMeetingFunnel에 direction 상태 추가
- step 전환 방향(forward/backward) 추적
- StepTransition 애니메이션 지원을 위한 준비
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: create Step 컴포넌트를 Content/Footer로 분리
- PeopleStep → PeopleStepContent, PeopleStepFooter
- DateStep → DateStepContent, DateStepFooter
- RegionStep → RegionStepContent, RegionStepFooter
- Content만 StepTransition으로 감싸기 위한 구조 변경
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: 모임 생성 페이지에 StepTransition 적용
- renderContent/renderFooter 패턴 적용
- Content 영역만 전환 애니메이션 적용
- Footer는 고정 유지
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix: gatheringId 기반의 Path URL 을 accessKey 기반으로 수정 (#45)
* feat: participant 도메인 내 신규 모임 참여 API 함수 추가 (#39)
* feat: participant API 추가
- POST /api/v1/participants 모임 참여 API
- CreateParticipantRequest, CreateParticipantResponse 타입 정의
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: prettier 양식에 어긋난 코드를 수정
* feat: recommend-result 도메인 내 추천 결과 조회 API 함수 추가 (#40)
* feat: recommend-result API 추가
- GET /api/v1/recommend-results/{accessKey} 추천 결과 조회 API
- GetRecommendResultResponse 타입 정의 (기존 RecommendationResult 재사용)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: prettier 양식에 어긋난 코드를 수정
* feat: 모임 단건 조회 API 추가 (#41)
* chore: prettier 양식에 어긋난 코드를 수정
* feat: 모임 단건 조회 API 추가
- GET /api/v1/gatherings/{accessKey} 모임 단건 조회 API
- GetGatheringResponse 타입 정의
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix: GetGatheringResponse 타입 NonNullable 적용
- timeSlot, region 필드에 NonNullable 적용
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* chore: prettier 포맷에 맞지 않았던 코드 수정
* refactor: change route params from gatheringId to accessKey
- Rename route directory: [gatheringId] → [accessKey]
- Update ShareButton to use accessKey from params
- Add gathering detail query with accessKey parameter
Co-Authored-By: Claude (us.anthropic.claude-sonnet-4-5-20250929-v1:0) <noreply@anthropic.com>
* fix: 타입스크립트 에러를 발생시키는 코드 제거
* fix: 이전 작업에서 혼용되었던 변경 이력을 초기화 하여 반영
* chore: 코드 포맷팅
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: 위영민 <youngminieo1005@gmail.com>
* chore: 코드 포맷팅
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Gwangin Baik <gwangin1999@naver.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Gwangin Baik <gwangin1999@naver.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Gwangin Baik <gwangin1999@naver.com>1 parent b415c73 commit f7bf794
File tree
50 files changed
+870
-152
lines changed- app
- gathering
- [accessKey]/opinion
- complete
- pending
- result
- create
- complete/[accessKey]
- src
- apis
- gathering
- participant
- recommend-result
- components
- stepTransition
- hooks
- apis/gathering
- create
- gathering
- pageComponents/gathering
- create
- opinion
- providers
- types/gathering
- utils
- api
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
50 files changed
+870
-152
lines changedLoading
Binary file not shown.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
Lines changed: 3 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
14 | | - | |
| 13 | + | |
15 | 14 | | |
16 | 15 | | |
17 | 16 | | |
| |||
20 | 19 | | |
21 | 20 | | |
22 | 21 | | |
23 | | - | |
| 22 | + | |
24 | 23 | | |
25 | 24 | | |
26 | 25 | | |
27 | | - | |
| 26 | + | |
28 | 27 | | |
29 | 28 | | |
30 | 29 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
Lines changed: 22 additions & 24 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | 4 | | |
6 | 5 | | |
7 | 6 | | |
8 | 7 | | |
9 | 8 | | |
10 | 9 | | |
11 | 10 | | |
12 | | - | |
13 | 11 | | |
14 | 12 | | |
15 | 13 | | |
| 14 | + | |
16 | 15 | | |
17 | 16 | | |
18 | 17 | | |
19 | | - | |
20 | | - | |
21 | 18 | | |
22 | 19 | | |
23 | 20 | | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
| 26 | + | |
27 | 27 | | |
28 | | - | |
29 | 28 | | |
30 | 29 | | |
31 | 30 | | |
32 | 31 | | |
33 | 32 | | |
34 | 33 | | |
35 | | - | |
| 34 | + | |
36 | 35 | | |
37 | 36 | | |
38 | 37 | | |
39 | | - | |
| 38 | + | |
40 | 39 | | |
41 | 40 | | |
42 | 41 | | |
43 | 42 | | |
44 | | - | |
| 43 | + | |
45 | 44 | | |
46 | 45 | | |
47 | 46 | | |
48 | 47 | | |
49 | 48 | | |
50 | 49 | | |
51 | | - | |
| 50 | + | |
52 | 51 | | |
53 | 52 | | |
54 | 53 | | |
55 | 54 | | |
56 | | - | |
| 55 | + | |
57 | 56 | | |
58 | 57 | | |
59 | 58 | | |
60 | 59 | | |
| 60 | + | |
61 | 61 | | |
62 | | - | |
63 | 62 | | |
| 63 | + | |
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
74 | | - | |
| 74 | + | |
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| |||
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
117 | 115 | | |
118 | 116 | | |
119 | 117 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
Lines changed: 2 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
14 | | - | |
| 13 | + | |
15 | 14 | | |
16 | | - | |
17 | 15 | | |
18 | 16 | | |
19 | 17 | | |
20 | 18 | | |
21 | 19 | | |
22 | | - | |
| 20 | + | |
23 | 21 | | |
24 | 22 | | |
25 | 23 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
0 commit comments