Skip to content

feat: 공통 레이어 착수. 의존성과 shared 구조, 룰 셋, CI - #9

Merged
chan9yu merged 14 commits into
developfrom
feature/shared-layer-scaffold
Aug 29, 2026
Merged

feat: 공통 레이어 착수. 의존성과 shared 구조, 룰 셋, CI#9
chan9yu merged 14 commits into
developfrom
feature/shared-layer-scaffold

Conversation

@chan9yu

@chan9yu chan9yu commented Aug 29, 2026

Copy link
Copy Markdown
Member

변경 사항

  • 결정된 의존성 설치. TanStack Query, Zustand, react-hook-form과 zod와 @hookform/resolvers, date-fns, clsx, tailwind-merge, class-variance-authority, 개발 의존성 Query Devtools
  • src/app/providers.tsx에 QueryClientProvider를 두고 layout이 감싼다. .env.exampleNEXT_PUBLIC_API_BASE_URL, NEXT_PUBLIC_KAKAO_MAP_KEY
  • src/shared 아래 api, ui, hooks, lib 자리와 README 안내. lib/cn.ts, lib/kakao-map 자리
  • 룰 셋 추가. api.md, state.md, ui.md
  • CI 워크플로우 .github/workflows/ci.yaml. 게이트 넷을 PR과 develop, main 푸시에 돌린다
  • README, AGENTS.md, CONTRIBUTING, ROADMAP, RUNBOOK, DESIGN-SPEC, PR 템플릿, 커맨드, testing과 git-workflow 룰에 위 내용 반영

관련 문서

  • 로드맵: docs/product/ROADMAP.md 0.1 진행 상황, 하지 않기로 한 것, 미결정
  • 운영: docs/release/RUNBOOK.md 환경 변수, CI 머지 조건
  • 화면 명세: docs/design/DESIGN-SPEC.md 공통 컴포넌트 안내 위치

검증

  • pnpm type:check
  • pnpm build (라우트 /, /_not-found 그대로)
  • pnpm lint
  • pnpm format:check
  • 개발 서버에서 동작 확인 (화면 변화 없음. Providers만 추가)

이 PR이 CI의 첫 실행이다.

미리보기

https://pop-pick-web-git-feature-shared-layer-scaffold-chan9yus-projects.vercel.app (화면 변화 없음)

머지 방법

merge commit 또는 rebase merge로 머지해 주세요. squash는 쓰지 않습니다.

squash로 압축하면 maindevelop의 조상 관계를 잃어 다음 PR마다 충돌이 반복됩니다. 커밋 단위 이력도 함께 사라집니다.

chan9yu and others added 6 commits August 29, 2026 22:06
- 서버 상태 TanStack Query, 클라이언트 상태 Zustand, 폼 react-hook-form과 zod, 날짜 date-fns는 8/26과 8/28에 결정됐고 설치만 남아 있었다
- 디자인 시스템이 클래스를 합치고 variant를 선언할 도구로 clsx와 tailwind-merge, class-variance-authority를 더한다
- Query Devtools는 개발 의존성이다. 프로덕션 빌드에서는 빈 컴포넌트로 바뀐다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 화면 코드가 쿼리를 쓰려면 루트에 QueryClientProvider가 있어야 한다
- 서버는 요청마다 새 클라이언트, 브라우저는 하나를 재사용하는 공식 SSR 가이드 방식을 따른다. useState 방식은 초기 렌더가 suspend되면 클라이언트를 다시 만든다
- 백엔드 주소와 Kakao Map 키의 변수 이름을 .env.example로 고정해 팀원이 무엇을 채울지 알게 한다. 값은 아직 없다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- API 레이어와 디자인 시스템을 맡을 프론트엔드가 바로 시작할 수 있게 src/shared 아래 api, ui, hooks, lib 자리를 잡는다
- 구현은 담당이 정하도록 README에는 어디에 무엇을 두고 어떤 규칙을 따르는지만 적는다
- cn()은 두 담당이 모두 쓰는 헬퍼라 먼저 둔다. Kakao Map은 지도 담당이 정해질 때까지 자리와 키 이름만 잡는다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 8/26과 8/28에 정한 것(fetch 래퍼 하나, TanStack Query와 Zustand 최소, 기성 UI 라이브러리 없음, 모바일 퍼스트)이 회의록에만 있어 에이전트가 세션마다 읽는 룰로 옮긴다
- API 규약 여섯 항목은 8/30 개발자 논의 전이라 미결정으로 두고 기본값을 채우지 않는다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 게이트 넷은 lefthook 훅으로만 강제되는데 훅은 로컬에서 건너뛸 수 있고 팀원 환경에서 설치되지 않을 수 있다
- PR과 develop, main 푸시마다 같은 넷을 돌려 머지 조건으로 삼는다
- Node와 pnpm 버전은 .nvmrc와 packageManager에서 읽어 고칠 곳을 한 곳으로 둔다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 설치된 의존성과 src/shared 구조, 새 룰 셋, 환경 변수 둘을 README와 AGENTS.md, RUNBOOK, ROADMAP에 옮긴다
- CI가 머지 조건이 됐으므로 PR 템플릿과 커맨드, 기여 안내, 규칙에서 "CI가 아직 없다"를 걷어낸다
- lucide-react 보류와 Kakao Map npm 래퍼를 쓰지 않는 결정을 로드맵에 남긴다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pop-pick-web Ready Ready Preview Aug 29, 2026 1:34pm

chan9yu and others added 3 commits August 29, 2026 22:12
- CI 첫 실행이 layout.tsx의 LayoutProps를 찾지 못해 실패했다. Next 16이 .next/types에 만드는 전역 타입인데 새 체크아웃에는 그 폴더가 없다
- next typegen을 앞에 두면 빌드 없이 라우트 타입만 만들어 type:check가 어디서 돌든 같은 결과를 낸다. 게이트 순서는 그대로다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 컴포넌트 파일은 PascalCase, 라우트 파일만 Next 요구대로 소문자라는 규칙을 정했다
- Providers는 컴포넌트라 파일 이름을 규칙에 맞춘다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 프론트엔드 둘이 각자 만든 컴포넌트의 파일 이름과 내보내기 방식이 갈리면 import 자리마다 확인해야 한다
- 파일은 PascalCase, 컴포넌트는 함수 선언식과 named export로 고정하고 라우트 파일만 예외로 둔다
- 디자인 시스템 안내의 배치 제안을 규칙으로 바꾸고 로드맵 미결정에서 지운다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
chan9yu and others added 5 commits August 29, 2026 22:33
- app 폴더를 열면 라우트 구조만 보이게 하려고 컴포넌트와 CSS를 밖으로 뺀다
- Providers는 QueryClient 하나를 감싸는 컴포넌트라 이름을 역할대로 QueryProvider로 바꾼다
- create-next-app이 남긴 Geist 폰트와 Arial, 다크 블록을 걷어내고 제목과 설명을 팝픽으로 바꾼다. 글꼴은 디자이너 결정 전이라 시스템 글꼴 스택을 쓴다
- prettier의 tailwindStylesheet 경로를 옮긴 위치로 맞춘다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- public의 svg 다섯 개와 Next.js 로고 파비콘은 보일러플레이트 흔적이라 지운다
- 로고가 나오기 전까지 파란 둥근 사각형 ICO를 public/favicon.ico에 둔다. 브라우저가 기본으로 찾는 경로라 별도 설정이 없다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 디자인 시스템 담당이 따라 만들 첫 예시로 둔다. cva로 variant와 size를 선언하고 cn()으로 className을 합친다
- 키보드 사용자를 위해 focus-visible 포커스 표시를 넣고 disabled 스타일을 둔다
- 색은 토큰을 받기 전이라 Tailwind 기본 blue-600과 zinc를 임시로 쓴다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- create-next-app 기본 화면 대신 서비스가 무엇인지 한 문장으로 알리고 열릴 날을 보여준다
- 버튼 둘은 갈 곳이 아직 없어 disabled로 두고 만드는 중이라는 안내를 붙인다
- 모바일 폭을 기준으로 한 열로 잡고 데스크탑에서는 가운데 정렬한다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- app에는 라우트 파일만 두고 컴포넌트와 CSS는 shared에 둔다는 규칙을 ui 룰과 AGENTS.md에 적는다
- 토큰 정본 경로가 바뀌어 tailwind 룰과 디자인 문서, README를 맞춘다
- 화면 명세에 홈의 목적과 Button 행을 채우고 로드맵 진행 상황을 갱신한다

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@chan9yu
chan9yu force-pushed the feature/shared-layer-scaffold branch from dcabc5a to 120e051 Compare August 29, 2026 13:34
@chan9yu
chan9yu merged commit 79cdf15 into develop Aug 29, 2026
3 checks passed
@chan9yu
chan9yu deleted the feature/shared-layer-scaffold branch August 29, 2026 13:36
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.

1 participant