Skip to content

[project] 프로젝트 신청·조회 앱(apps/projects) 추가 - #236

Merged
yeondon125 merged 47 commits into
developfrom
feat/project-archive-app
Oct 5, 2026
Merged

yeondon125 merged 47 commits into
developfrom
feat/project-archive-app

Conversation

@yeondon125

@yeondon125 yeondon125 commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

개요

학생이 직접 프로젝트를 신청·관리하고 누구나 조회할 수 있는 프로젝트 아카이브 앱(apps/projects)을 추가하였습니다. 어드민에는 신청 심사 화면을 추가하였고, 서버 PR #451(deploymentUrl)과 #452(수정 시 값 유지·삭제 규칙)를 반영하였습니다.

작업내용

apps/projects (포트 3005)

  • 공개 프로젝트 목록(검색, 동아리·상태 필터, 정렬)을 추가하였습니다. 카드를 누르면 페이지 이동 없이 오른쪽 시트로 상세가 열리며, 주소에는 ?project=<id>만 붙어 목록·필터가 유지되고 링크로 공유할 수 있습니다.
  • OAuth 로그인·콜백 라우트(/api/login, /api/callback)를 추가하였습니다.
  • 내 프로젝트(/me) 화면에서 신청 상태별 목록 확인, 신규·수정 신청, 아이콘 업로드(presigned URL로 S3 직접 업로드)를 할 수 있도록 하였습니다.

apps/admin

  • 프로젝트 신청 심사 화면(/projects/requests)을 추가하였습니다. 신청 내용·신청자 이메일·처리일을 확인하고 수락·거절할 수 있습니다.
  • 프로젝트 관리 폼과 목록에 배포 URL 입력·컬럼을 추가하였습니다.

packages/shared

  • 프로젝트 API의 타입, URL, 쿼리 키와 공용 Sheet 컴포넌트를 추가하였습니다.
  • http(s) 주소 검증(HTTP_URL_PATTERN, getSafeUrl)을 공용으로 두고, 사용자가 입력한 배포 URL·리포지토리는 http(s) 주소일 때만 링크로 표시하도록 하였습니다.
  • client·admin·projects의 OAuth 콜백 처리를 @repo/shared/server의 createOAuthCallbackHandler로 통합하였습니다.
  • 공개 조회 401에서 토큰 갱신이 반복되지 않도록 skipAuthRefresh 옵션을 추가하였고, Header에 projects role과 로그인 시 로그아웃 버튼을 추가하였습니다.

서버 변경 반영

  • deploymentUrl은 서버와 같은 규칙(http(s)://로 시작, 300자 이하)으로 검증하였습니다.
  • 수정 시 생략한 값은 유지되고 ""는 삭제되는 규칙에 맞춰, 수정 폼이 기존 iconKey·deploymentUrl·참여자 ID를 그대로 보내고 비운 값은 ""로 보내도록 하였습니다.

리뷰 반영

  • 리포지토리 링크 스킴 검사, 수정 시 참여자 유지, 아이콘 업로드 중 제출 차단, 내 프로젝트 오류 표시, 카드 key 충돌, 검색창 동기화, 심사 뱃지 통일을 반영하였습니다(각 코멘트에 커밋 답글).

문서

  • 개발 참고용 API 명세(apps/projects/docs/api-spec.md)를 추가하고, docs 앱의 프로젝트 응답·웹훅 문서에 deploymentUrl·iconKey를 반영하였습니다.

관련 이슈

리뷰 요청사항

  • 배포 전 설정이 필요합니다. apps/projects는 NEXT_PUBLIC_API_BASE_URL, NEXT_PUBLIC_OAUTH_BASE_URL, NEXT_PUBLIC_DATAGSM_CLIENT_ID, NEXT_PUBLIC_DATAGSM_REDIRECT_URI를 사용하고, 다른 앱의 Projects 링크는 NEXT_PUBLIC_PROJECTS_URL을 사용합니다. OAuth 클라이언트에 projects 앱의 redirect URI도 등록해야 합니다.
  • OAuth 콜백 통합은 기존 client·admin 콜백 테스트를 그대로 통과시켜 동작이 같음을 확인하였습니다. admin은 develop에서 바뀐 DATAGSM_CLIENT_SECRET을 사용합니다.
  • 알려진 제한: 승인 전 신규 신청을 수정하면 기존 신청이 남은 채 새 신청이 하나 더 생깁니다. 특정 신청을 수정하는 서버 API가 없어 후속 작업으로 남겼습니다.
  • 참여자 지정 UI는 학생 검색 API가 없어 이번 범위에서 제외하였습니다.

@s2yeons

s2yeons commented Oct 5, 2026

Copy link
Copy Markdown
Member

충돌 해결해주세요

@s2yeons s2yeons left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

수고하셨습니다.

@yeondon125
yeondon125 merged commit 9377e52 into develop Oct 5, 2026
7 checks passed

This branch was successfully deployed

5 active deployments
Preview – datagsm-front-docs — c3a7a17b Deployed Oct 5, 2026 by vercel[bot]
Preview – datagsm-front-admin — c3a7a17b Deployed Oct 5, 2026 by vercel[bot]
Preview – datagsm-front-oauth — c3a7a17b Deployed Oct 5, 2026 by vercel[bot]
Preview – datagsm-front-status — c3a7a17b Deployed Oct 5, 2026 by vercel[bot]
Preview – datagsm-front-client — c3a7a17b Deployed Oct 5, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants