Skip to content

Conversation

@manNomi
Copy link
Contributor

@manNomi manNomi commented Jan 18, 2026

관련 이슈

#350

작업 내용

기본적인 터보레포 셋업 진행했습니다

특이 사항

리뷰 요구사항 (선택)

  • 디테일하게 설정 해볼 요소가 있는지 검수가 필요

manNomi and others added 10 commits January 7, 2026 01:19
- Add .npmrc with Next.js compatibility settings (shamefully-hoist)
- Generate pnpm-lock.yaml and remove package-lock.json
- Update GitHub Actions workflows (ci.yml, build.yml, release.yml) to use pnpm
- Update Husky git hooks (pre-push, commit-msg) to use pnpm commands
- Update package.json scripts to use pnpm
- Update README.md with pnpm installation and usage guide

Benefits:
- Faster dependency installation with hard links
- Disk space savings across projects
- Stricter dependency management
- Future monorepo support ready

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
- Update verificationFile schema to remove nullable type
- Change error handling to use undefined instead of null
- Fix type compatibility between schema and form defaults

Fixes type errors:
- src/app/my/apply-mentor/_components/UniversityScreen/index.tsx
- src/app/my/apply-mentor/page.tsx
- src/app/my/apply-mentor/_lib/schema.ts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
- Resolve conflicts in ci.yml: use pnpm with ci:check script
- Resolve conflicts in package.json: add ci:check with pnpm, keep lint:all and fix:all
- Apply Prettier formatting fixes

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- 이모지 타입을 인식하도록 parserPreset 설정 추가
- type-enum에 Gitmoji 이모지 목록 추가

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Co-Authored-By: Claude Opus 4.5 <[email protected]>
- pnpm-workspace.yaml 추가
- turbo.json 설정 추가
- package.json 워크스페이스 구조로 변경
- vercel.json 배포 설정 업데이트
- 루트 레벨의 Next.js 앱 파일 삭제
- src 디렉토리 전체 제거
- public 디렉토리 전체 제거
- 앱별 설정 파일 제거 (next.config.mjs, tailwind.config.ts 등)
- 환경 변수 파일 제거 (.env 파일들)
- apps/web 워크스페이스 생성
- packages 워크스페이스 생성
- 기존 앱을 apps/web으로 마이그레이션
@coderabbitai
Copy link

coderabbitai bot commented Jan 18, 2026

Walkthrough

이 변경사항은 프로젝트의 패키지 관리자를 npm에서 pnpm으로 통합 마이그레이션합니다:

  1. GitHub Actions 워크플로우 업데이트 - 빌드, CI, 배포 워크플로우에서 pnpm 설정 단계를 추가하고 npm 명령어를 pnpm 명령어로 변경
  2. Husky 훅 수정 - 커밋 메시지 및 푸시 전 훅에서 npm/npx를 pnpm/pnpm dlx로 변경
  3. 구성 파일 추가 - .npmrc 파일에 npm 호환성 및 동작 설정 항목 추가
  4. 문서 및 무시 규칙 업데이트 - README에 pnpm 관련 지침 추가, .gitignore에 Turborepo 항목 추가, ESLint 구성 파일 신규 추가

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested reviewers

  • wibaek
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 변경사항의 핵심을 명확하게 반영합니다. Turborepo 기본 설정이라는 주요 작업을 간결하게 표현하고 있습니다.
Description check ✅ Passed PR 설명이 템플릿의 필수 섹션을 모두 포함하고 있으며, 관련 이슈, 작업 내용, 리뷰 요구사항이 적절히 기술되어 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@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: 1

🤖 Fix all issues with AI agents
In @.husky/commit-msg:
- Line 1: The commit hook uses an unquoted positional parameter ${1} which will
break if the commit message path contains spaces; update the hook invocation
(the line that runs pnpm dlx commitlint --edit ${1}) to wrap the argument in
quotes so the positional parameter is passed as a single argument (e.g., --edit
"${1}"), ensuring the commit message file path with spaces is handled correctly.
🧹 Nitpick comments (7)
apps/web/.eslintrc.js (1)

1-46: ESLint 설정이 잘 구성되어 있습니다.

  1. 파서 및 환경 설정

    • TypeScript 파서와 프로젝트 참조가 올바르게 설정되어 있습니다.
    • 브라우저, ES2021, Node 환경이 적절히 구성되어 있습니다.
  2. 확장 설정 순서

    • Next.js → TypeScript → Prettier 순서로 확장되어 규칙 충돌이 올바르게 해결됩니다.
  3. Overrides 설정 관련 작은 제안

    • 설정 파일 패턴에 .cjs 확장자도 포함하면 CommonJS 설정 파일도 커버할 수 있습니다.
♻️ 선택적 개선 제안
-      files: [".eslintrc.{js,cjs}", "*.config.{js,mjs,ts}"],
+      files: [".eslintrc.{js,cjs}", "*.config.{js,cjs,mjs,ts}"],
README.md (3)

17-27: Corepack 사용을 권장합니다.

Node.js 16.13 이상에서는 Corepack이 내장되어 있어 pnpm을 더 쉽게 관리할 수 있습니다. Prerequisites에서 Node.js 22.x를 요구하므로, Corepack을 활성화하는 방법을 추가하거나 주요 설치 방법으로 제안하는 것이 좋습니다.

📝 Corepack을 포함한 설치 안내 개선안
 ## Installation
 
 This project uses pnpm as the package manager.
 
 ```bash
-# Install pnpm globally
+# Option 1: Enable Corepack (recommended for Node.js 16.13+)
+corepack enable
+corepack prepare pnpm@latest --activate
+
+# Option 2: Install pnpm globally via npm
 npm install -g pnpm
 
 # Install dependencies
 pnpm install

</details>

---

`1-11`: **프로젝트 구조 안내 추가를 고려해 보세요.**

이번 PR에서 Turborepo 모노레포 구조를 도입했습니다. README에 간단한 프로젝트 구조 섹션을 추가하면 새로운 기여자들이 코드베이스를 더 쉽게 이해할 수 있습니다. 다만 문서를 간결하게 유지하려는 의도라면 현재 상태도 충분합니다.



<details>
<summary>📁 프로젝트 구조 섹션 추가 예시</summary>

스택 정보 아래에 추가할 수 있습니다:

```diff
 - Prettier
 - Vercel
 
+## Project Structure
+
+This project uses Turborepo for monorepo management:
+
+```
+├── apps/
+│   └── web/          # Main Next.js application
+└── packages/         # Shared packages
+```
+
 ## Prerequisites

12-16: Node.js 버전 요구사항 완화를 검토해 주세요.

현재 package.json에 명시된 Node.js 22.x 요구사항을 몇 가지 이유로 다시 검토하실 것을 권장합니다:

  1. LTS 버전이 아님: Node.js 22는 LTS 버전이 아니며, 2025년 4월에 지원이 종료됩니다. 반면 18.x와 20.x는 안정적인 LTS 버전입니다.

  2. 특별한 의존성 없음: 현재 프로젝트의 의존성(turbo, commitlint 등)은 Node.js 22.x를 특별히 요구하지 않습니다.

  3. 기여자 진입장벽: Node.js 22.x는 매우 최신 버전으로, 구버전을 사용 중인 기여자의 참여를 제한할 수 있습니다.

package.json의 engines 필드를 Node.js 20.x 이상으로 완화하거나, 22.x를 꼭 필요로 하는 이유가 있다면 README에 그 배경을 설명하는 것을 추천합니다.

.github/workflows/release.yml (1)

45-52: 1) Vercel CLI 버전 고정을 권장합니다.
1) @latest는 배포 재현성을 낮춥니다.
2) 고정 버전을 환경변수로 관리하면 롤백이 쉬워집니다.

♻️ 제안 예시
 env:
   VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
   VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
   VERCEL_ENV: production
+  VERCEL_CLI_VERSION: "X.Y.Z"
@@
-      - name: Install Vercel CLI
-        run: pnpm add --global vercel@latest
+      - name: Install Vercel CLI
+        run: pnpm add --global vercel@${{ env.VERCEL_CLI_VERSION }}
.github/workflows/build.yml (1)

30-36: 1) Preview 배포도 Vercel CLI 버전 고정이 안전합니다.
1) @latest는 예기치 않은 변경을 유발할 수 있습니다.
2) 고정 버전으로 일관성을 유지해 주세요.

.npmrc (1)

1-9: 1) peer 의존성 완화 설정 의도를 확인해주세요.
1) strict-peer-dependencies=false는 충돌을 숨길 수 있습니다.
2) 의도된 정책이면 간단한 주석으로 근거를 남겨두는 편이 안전합니다.

📝 주석 추가 예시
- strict-peer-dependencies=false
+ # NOTE: 의도적으로 peer 충돌을 허용(정리 후 true 복귀 고려)
+ strict-peer-dependencies=false

@@ -1,2 +1,2 @@
npx --no -- commitlint --edit ${1}
pnpm dlx commitlint --edit ${1}
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Check if the file exists and view its contents
if [ -f .husky/commit-msg ]; then
  echo "=== File exists ==="
  cat -n .husky/commit-msg
else
  echo "File not found"
fi

Repository: solid-connection/solid-connect-web

Length of output: 144


🏁 Script executed:

# Check other husky hooks to see if they have similar patterns
if [ -d .husky ]; then
  echo "=== Husky hooks directory ==="
  ls -la .husky/
  echo ""
  echo "=== Content of other hooks ==="
  for file in .husky/*; do
    if [ -f "$file ] && [ ! -d "$file" ]; then
      echo "--- $file ---"
      cat "$file"
    fi
  done
fi

Repository: solid-connection/solid-connect-web

Length of output: 147


🌐 Web query:

husky commit-msg hook ${1} argument positional parameter shell quoting best practices

💡 Result:

Short best-practices for using the commit-msg hook's positional parameter ($1) with Husky

  1. Always source Husky's init first in the hook file.

    • Example top lines (generated by husky):
      #!/usr/bin/env sh
      . "$(dirname -- "$0")/_/husky.sh"
    • Reason: ensures Husky wiring and correct working dir/behavior. [3]
  2. Treat $1 as a filename — not the message text — and quote it.

    • Read safely: commit_message="$(< "$1")" or commit_message="$(cat "$1")".
    • Don’t use unquoted $1 (echo $1) — it breaks with spaces/newlines. [2][3]
  3. Validate presence defensively.

    • Use ${1:?Missing commit message file} or test -f "$1" and fail with a clear error if absent. [2]
  4. When adding the hook via shell/echo/ npm scripts, escape the dollar or use single quotes so $1 is evaluated at runtime (hook), not when creating the file.

    • Good: echo 'npx --no -- commitlint --edit $1' > .husky/commit-msg
    • If double quotes are required, escape: echo "npx --no -- commitlint --edit $1" > .husky/commit-msg. [1][4]
  5. Use commitlint / other tools with --edit "$1" (or "${1}") so they read the temporary commit message file.

    • Example inside .husky/commit-msg: npx --no -- commitlint --edit "$1". [1][4]
  6. Windows caveat

    • Windows shell/encoding differences require care: use proper quoting/UTF-8 and follow platform notes in commitlint/husky docs (use backtick-escaping in some docs/examples). [1]

References

  • Commitlint local setup & Husky examples (shows echo "npx --no -- commitlint --edit $1"). [1]
  • Git commit-msg hook behavior / read the commit message file and examples for quoting ($1). [2]
  • Git hooks docs: commit-msg receives one parameter — path to the temp message file. [3]
  • Practical Husky + commitlint examples and quoting notes. [4]

1) 인자 경로는 따옴표로 감싸주세요.

$1에는 깃이 전달한 커밋 메시지 파일의 경로가 담깁니다. 따옴표 없이 사용하면 경로에 공백이 있을 때 명령이 깨질 수 있습니다.

🔧 제안 수정
-pnpm dlx commitlint --edit ${1}
+pnpm dlx commitlint --edit "$1"
📝 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
pnpm dlx commitlint --edit ${1}
pnpm dlx commitlint --edit "$1"
🤖 Prompt for AI Agents
In @.husky/commit-msg at line 1, The commit hook uses an unquoted positional
parameter ${1} which will break if the commit message path contains spaces;
update the hook invocation (the line that runs pnpm dlx commitlint --edit ${1})
to wrap the argument in quotes so the positional parameter is passed as a single
argument (e.g., --edit "${1}"), ensuring the commit message file path with
spaces is handled correctly.

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