Skip to content

[feature] 카카오톡 공유하기 기능을 추가한다#589

Merged
seongwon030 merged 12 commits intodevelop-fefrom
feature/#588-add-kakao-share-MOA-112
Jul 27, 2025
Merged

[feature] 카카오톡 공유하기 기능을 추가한다#589
seongwon030 merged 12 commits intodevelop-fefrom
feature/#588-add-kakao-share-MOA-112

Conversation

@seongwon030
Copy link
Member

@seongwon030 seongwon030 commented Jul 26, 2025

#️⃣연관된 이슈

ex) #588

📝작업 내용

이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지/동영상 첨부 가능)

스크린샷 2025-07-26 18 45 19
  • 공유하기 버튼을 추가했습니다
  • cludId로 clubDetail을 전역으로 받아와 title, description, logo가 보이도록 했습니다.

공유하기 시 화면

클릭 시 첫 화면 카카오톡 공유 완료
스크린샷1 스크린샷2

추가 변경

  • 하드코딩된 url을 상수로 변경
  • 버튼에 aria-label, role 추가

중점적으로 리뷰받고 싶은 부분(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

논의하고 싶은 부분(선택)

코드래빗이 onKeyDown 속성을 추가하라고 하는데 이 부분은 처음 보는 속성이라 추가하는게 좋을지 고민되네요

🫡 참고사항

Summary by CodeRabbit

  • 신규 기능

    • 클럽 상세 페이지에 카카오톡 공유 버튼이 추가되었습니다. 이제 사용자는 클럽 정보를 카카오톡으로 손쉽게 공유할 수 있습니다.
  • 기타

    • 카카오 SDK가 앱 시작 시 자동으로 초기화되도록 개선되었습니다.
    • 카카오 SDK 보안 속성(integrity, crossorigin)이 적용된 스크립트가 포함되었습니다.

@netlify
Copy link

netlify bot commented Jul 26, 2025

Deploy Preview for moadong ready!

Name Link
🔨 Latest commit 7b047a3
🔍 Latest deploy log https://app.netlify.com/projects/moadong/deploys/6884fcd0ec955c00088e1c79
😎 Deploy Preview https://deploy-preview-589--moadong.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 32
Accessibility: 89
Best Practices: 92
SEO: 92
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@seongwon030 seongwon030 requested a review from lepitaaar July 26, 2025 09:44
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 26, 2025

Warning

.coderabbit.yaml has a parsing error

The CodeRabbit configuration file in this repository has a parsing error and default settings were used instead. Please fix the error(s) in the configuration file. You can initialize chat with CodeRabbit to get help with the configuration file.

💥 Parsing errors (1)
Validation error: Invalid regex pattern for base branch. Received: "**" at "reviews.auto_review.base_branches[0]"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

"""

Walkthrough

카카오톡 공유 기능이 프론트엔드에 추가되었습니다. Kakao SDK가 HTML에 삽입되고, 앱 초기화 시 SDK가 초기화됩니다. 클럽 상세 페이지에 ShareButton 컴포넌트가 도입되어, 사용자는 클럽 정보를 카카오톡으로 공유할 수 있습니다. 타입 선언 및 스타일 파일도 추가되었습니다.

Changes

파일/경로 요약 변경 요약
frontend/public/index.html Kakao SDK 스크립트 태그 추가, 메타 및 링크 태그 포맷팅 개선
frontend/src/index.tsx Kakao SDK 초기화 함수 import 및 앱 시작 시 호출 추가
frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx ShareButton 컴포넌트 import 및 ClubDetailHeader 아래에 추가
frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx
frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.styles.ts
ShareButton 컴포넌트 및 스타일 파일 신규 추가
frontend/src/types/window.d.ts window 객체에 Kakao 속성 타입 선언 추가
frontend/src/utils/initSDK.ts initializeKakaoSDK 함수 신규 추가

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant ClubDetailPage
    participant ShareButton
    participant KakaoSDK
    participant Mixpanel

    User->>ClubDetailPage: 페이지 진입
    ClubDetailPage->>ShareButton: ShareButton 렌더링 (clubId 전달)
    ShareButton->>KakaoSDK: Kakao SDK 로드 및 초기화 확인
    ShareButton->>KakaoSDK: club 정보로 공유 버튼 생성
    User->>ShareButton: 공유 버튼 클릭
    ShareButton->>KakaoSDK: 카카오톡 공유 실행
    ShareButton->>Mixpanel: 공유 버튼 클릭 이벤트 트래킹
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~15 minutes

Possibly related issues

Suggested labels

✨ Feature, 💻 FE
"""

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a8be646 and 7b047a3.

📒 Files selected for processing (2)
  • frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx (1 hunks)
  • frontend/src/utils/initSDK.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx
  • frontend/src/utils/initSDK.ts
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/#588-add-kakao-share-MOA-112

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@seongwon030 seongwon030 added ✨ Feature 기능 개발 💻 FE Frontend labels Jul 26, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (2)
frontend/src/types/window.d.ts (1)

1-7: 타입 안전성 개선 고려사항

현재 any 타입 사용은 동작하지만, 더 구체적인 타입 정의를 고려해보세요:

declare global {
  interface Window {
-    Kakao: any;
+    Kakao: {
+      init: (key: string) => void;
+      Share: {
+        createDefaultButton: (options: any) => void;
+      };
+    };
  }
}

다만 Kakao SDK의 공식 타입 정의가 없다면 현재 방식도 실용적인 접근입니다.

frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx (1)

22-22: 클럽 데이터 로딩 상태 처리를 고려하세요.

현재 clubDetail이 없을 때 단순히 early return하고 있지만, 로딩 상태나 에러 상태에 대한 사용자 피드백이 없습니다.

useGetClubDetail 훅의 로딩 및 에러 상태를 활용하는 것을 고려해보세요:

const ShareButton = ({ clubId }: ShareButtonProps) => {
  const kakaoBtnRef = useRef<HTMLDivElement>(null);
- const { data: clubDetail } = useGetClubDetail(clubId as string);
+ const { data: clubDetail, isLoading, error } = useGetClubDetail(clubId);
  const trackEvent = useMixpanelTrack();

+ if (isLoading) return <div>로딩 중...</div>;
+ if (error) return null;
  if (!clubDetail) return null;
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f803075 and fb4db7f.

⛔ Files ignored due to path filters (1)
  • frontend/src/assets/images/icons/share_icon.svg is excluded by !**/*.svg
📒 Files selected for processing (7)
  • frontend/public/index.html (2 hunks)
  • frontend/src/index.tsx (1 hunks)
  • frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx (2 hunks)
  • frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.styles.ts (1 hunks)
  • frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx (1 hunks)
  • frontend/src/types/window.d.ts (1 hunks)
  • frontend/src/utils/initSDK.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
frontend/**/*.{ts,tsx}

📄 CodeRabbit Inference Engine (frontend/.cursorrules)

frontend/**/*.{ts,tsx}: Replace magic numbers with named constants for clarity.
Replace complex or nested ternary operators with if/else statements or IIFEs for readability.
Assign complex boolean conditions to named variables.
Use consistent return types for similar functions and hooks.
Avoid hidden side effects; functions should only perform actions implied by their signature (Single Responsibility Principle).
Use unique, descriptive names for custom wrappers and functions to avoid ambiguity.
Define constants near related logic or ensure names link them clearly.

Files:

  • frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx
  • frontend/src/index.tsx
  • frontend/src/utils/initSDK.ts
  • frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.styles.ts
  • frontend/src/types/window.d.ts
  • frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx
frontend/**/*.tsx

📄 CodeRabbit Inference Engine (frontend/.cursorrules)

frontend/**/*.tsx: Abstract complex logic/interactions into dedicated components or higher-order components (HOCs).
Separate significantly different conditional UI/logic into distinct components.
Colocate simple, localized logic or use inline definitions to reduce context switching.
Choose field-level or form-level cohesion based on form requirements.
Break down broad state management into smaller, focused hooks or contexts.
Use component composition instead of props drilling.

Files:

  • frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx
  • frontend/src/index.tsx
  • frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx
🧠 Learnings (5)
📓 Common learnings
Learnt from: seongwon030
PR: Moadong/moadong#195
File: frontend/src/pages/AdminPage/AdminPage.tsx:7-7
Timestamp: 2025-03-19T05:18:07.818Z
Learning: AdminPage.tsx에서 현재 하드코딩된 클럽 ID('67d2e3b9b15c136c6acbf20b')는 로그인 기능 구현 후 동적으로 가져오는 방식으로 수정될 예정입니다.
frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx (5)

Learnt from: seongwon030
PR: #195
File: frontend/src/pages/AdminPage/AdminPage.tsx:7-7
Timestamp: 2025-03-19T05:18:07.818Z
Learning: AdminPage.tsx에서 현재 하드코딩된 클럽 ID('67d2e3b9b15c136c6acbf20b')는 로그인 기능 구현 후 동적으로 가져오는 방식으로 수정될 예정입니다.

Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-19T05:09:10.702Z
Learning: Applies to frontend/**/*.tsx : Separate significantly different conditional UI/logic into distinct components.

Learnt from: seongwon030
PR: #548
File: frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx:17-57
Timestamp: 2025-07-19T05:05:10.196Z
Learning: ClubDetailPage.tsx에서 notJoinedClubNames 배열의 하드코딩은 의도적인 설계 결정입니다. 개발자가 명시적으로 하드코딩을 선택했으므로 이에 대한 리팩토링 제안을 하지 않아야 합니다.

Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-19T05:09:10.702Z
Learning: Applies to frontend/**/*.tsx : Abstract complex logic/interactions into dedicated components or higher-order components (HOCs).

Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-19T05:09:10.702Z
Learning: Applies to frontend/**/*.tsx : Colocate simple, localized logic or use inline definitions to reduce context switching.

frontend/src/index.tsx (1)

Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-19T05:09:10.702Z
Learning: Applies to frontend/**/*.tsx : Colocate simple, localized logic or use inline definitions to reduce context switching.

frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.styles.ts (2)

Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-19T05:09:10.702Z
Learning: Applies to frontend/**/*.tsx : Separate significantly different conditional UI/logic into distinct components.

Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-19T05:09:10.702Z
Learning: Applies to frontend/**/*.{ts,tsx} : Replace magic numbers with named constants for clarity.

frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx (3)

Learnt from: seongwon030
PR: #195
File: frontend/src/pages/AdminPage/AdminPage.tsx:7-7
Timestamp: 2025-03-19T05:18:07.818Z
Learning: AdminPage.tsx에서 현재 하드코딩된 클럽 ID('67d2e3b9b15c136c6acbf20b')는 로그인 기능 구현 후 동적으로 가져오는 방식으로 수정될 예정입니다.

Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-19T05:09:10.702Z
Learning: Applies to frontend/**/*.tsx : Separate significantly different conditional UI/logic into distinct components.

Learnt from: CR
PR: Moadong/moadong#0
File: frontend/.cursorrules:0-0
Timestamp: 2025-07-19T05:09:10.702Z
Learning: Applies to frontend/**/*.tsx : Abstract complex logic/interactions into dedicated components or higher-order components (HOCs).

🔇 Additional comments (5)
frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx (1)

16-16: 깔끔한 ShareButton 컴포넌트 통합

ShareButton 컴포넌트의 import와 사용이 적절하게 구현되었습니다. clubId prop 전달과 컴포넌트 배치가 논리적입니다.

Also applies to: 59-59

frontend/src/index.tsx (1)

8-8: 일관성 있는 SDK 초기화 통합

다른 SDK 초기화와 동일한 패턴으로 Kakao SDK 초기화가 적절히 추가되었습니다.

Also applies to: 14-14

frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.styles.ts (1)

1-8: 깔끔한 스타일 컴포넌트 구현

ShareButtonContainer의 스타일링이 적절하게 구현되었습니다. 우측 정렬과 포인터 커서로 사용자 경험이 명확합니다.

frontend/public/index.html (2)

6-14: 코드 가독성 개선이 잘 되었습니다.

메타 태그들의 포맷팅이 일관성 있게 개선되어 코드 가독성이 향상되었습니다.


56-60: Kakao SDK(2.7.5) 최신 버전·보안 취약점 공식 확인 필요

스크립트로는 CDN 버전 정보와 GitHub 이슈가 조회되지 않아, 다음을 직접 검토해주세요.

  • 파일: frontend/public/index.html 56–60라인
  • 공식 문서(https://developers.kakao.com/sdk/reference/js) 혹은 SDK 배포 페이지에서 2.7.5가 최신인지 확인
  • 알려진 보안 취약점이나 패치 내역(changelog) 확인
  • 필요 시 integrity 해시와 버전을 업데이트

Comment on lines +17 to +20
if (!window.Kakao || !window.Kakao.isInitialized()) {
alert('카카오 SDK가 아직 준비되지 않았습니다.');
return;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

alert() 대신 더 나은 사용자 경험을 제공하는 에러 처리를 사용하세요.

alert()는 사용자 경험을 해치고 모던 웹 애플리케이션에서 권장되지 않습니다. 토스트 알림이나 에러 상태 표시를 고려해보세요.

- if (!window.Kakao || !window.Kakao.isInitialized()) {
-   alert('카카오 SDK가 아직 준비되지 않았습니다.');
-   return;
- }
+ if (!window.Kakao || !window.Kakao.isInitialized()) {
+   console.error('Kakao SDK is not initialized');
+   // TODO: 토스트 알림이나 에러 상태 표시로 교체
+   return;
+ }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if (!window.Kakao || !window.Kakao.isInitialized()) {
alert('카카오 SDK가 아직 준비되지 않았습니다.');
return;
}
if (!window.Kakao || !window.Kakao.isInitialized()) {
console.error('Kakao SDK is not initialized');
// TODO: 토스트 알림이나 에러 상태 표시로 교체
return;
}
🤖 Prompt for AI Agents
In frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx
around lines 17 to 20, replace the alert() call used for Kakao SDK readiness
check with a non-blocking user-friendly error notification such as a toast
message or an inline error display component to improve user experience and
align with modern web app practices.

Comment on lines 52 to 61
return (
<Styled.ShareButtonContainer
ref={kakaoBtnRef}
onClick={() => {
trackEvent(`${clubDetail?.name} 공유하기 버튼 클릭`);
}}
>
<img src={ShareIcon} alt='카카오톡 공유' />
</Styled.ShareButtonContainer>
);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

접근성을 위한 ARIA 속성과 키보드 내비게이션을 추가하세요.

공유 버튼에 적절한 ARIA 라벨과 키보드 접근성이 필요합니다.

return (
  <Styled.ShareButtonContainer
    ref={kakaoBtnRef}
+   role="button"
+   tabIndex={0}
+   aria-label="카카오톡으로 클럽 정보 공유하기"
    onClick={() => {
      trackEvent(`${clubDetail?.name} 공유하기 버튼 클릭`);
    }}
+   onKeyDown={(e) => {
+     if (e.key === 'Enter' || e.key === ' ') {
+       e.currentTarget.click();
+     }
+   }}
  >
    <img src={ShareIcon} alt='카카오톡 공유' />
  </Styled.ShareButtonContainer>
);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
return (
<Styled.ShareButtonContainer
ref={kakaoBtnRef}
onClick={() => {
trackEvent(`${clubDetail?.name} 공유하기 버튼 클릭`);
}}
>
<img src={ShareIcon} alt='카카오톡 공유' />
</Styled.ShareButtonContainer>
);
return (
<Styled.ShareButtonContainer
ref={kakaoBtnRef}
role="button"
tabIndex={0}
aria-label="카카오톡으로 클럽 정보 공유하기"
onClick={() => {
trackEvent(`${clubDetail?.name} 공유하기 버튼 클릭`);
}}
onKeyDown={(e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.currentTarget.click();
}
}}
>
<img src={ShareIcon} alt="카카오톡 공유" />
</Styled.ShareButtonContainer>
);
🤖 Prompt for AI Agents
In frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx
around lines 52 to 61, the ShareButtonContainer lacks ARIA attributes and
keyboard accessibility. Add an appropriate aria-label to describe the button's
purpose and ensure it is focusable and operable via keyboard by adding tabIndex
and handling key events like Enter or Space to trigger the onClick
functionality.

- createDefaultButton 방식에서 커스텀 버튼(onClick + sendDefault) 방식으로 변경
- 버튼 클릭 시 카카오 공유와 믹스패널 트래킹이 정확히 동작하도록 개선
- 환경변수 미설정 시 경고 출력
- Kakao SDK 미로딩 시 에러 출력
- 초기화 실패 시 예외 처리
- 접근성 속성(role, aria-label) 추가
@seongwon030 seongwon030 linked an issue Jul 26, 2025 that may be closed by this pull request
1 task
Copy link
Contributor

@lepitaaar lepitaaar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@seongwon030 seongwon030 merged commit 2567131 into develop-fe Jul 27, 2025
7 checks passed
@seongwon030 seongwon030 deleted the feature/#588-add-kakao-share-MOA-112 branch July 27, 2025 03:52
Copy link
Member

@oesnuj oesnuj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

공유하기 기능 추가 좋습니다!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💻 FE Frontend ✨ Feature 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] MOA-112 카카오톡 공유하기 기능을 추가한다

3 participants

Comments