KanVibe에 관심을 가져주셔서 감사합니다! 이 가이드가 시작하는 데 도움이 될 것입니다.
- Node.js 20+ (
.nvmrc참조) - pnpm
- Docker (PostgreSQL용)
- tmux 또는 zellij (터미널 기능용)
# 저장소 클론
git clone https://github.com/rookedsysc/kanvibe.git
cd kanvibe
# 환경변수 복사
cp .env.example .env
# PostgreSQL 시작
docker compose up db -d
# 의존성 설치
pnpm install
# 데이터베이스 마이그레이션 실행
pnpm migration:run
# 개발 서버 시작
pnpm dev브라우저에서 http://localhost:4885 접속.
-
모든 체크가 통과해야 합니다:
pnpm build # 빌드 성공 pnpm check # 타입 체크 통과 pnpm test # 테스트 통과
-
동작하는 스크린샷 또는 GIF를 첨부하세요. 기능 동작을 시각적으로 증명하지 않은 PR은 머지되지 않습니다.
-
기존 코드 스타일을 따르세요. 프로젝트에서 사용하는 규칙:
- TypeScript strict 모드
- Tailwind CSS v4 + 디자인 토큰 (CSS 변수)
- next-intl로 모든 사용자 텍스트 처리
- TypeORM migration으로 스키마 변경
- 저장소를 Fork
main에서 feature 브랜치 생성- 변경 사항 작성
- 모든 체크 실행 (
pnpm build && pnpm check && pnpm test) - Conventional Commits 형식으로 커밋
- Push 후 Pull Request 생성
- 동작하는 기능의 스크린샷/GIF 첨부
feat(scope): 새 기능 추가
fix(scope): 특정 버그 수정
docs: 문서 업데이트
refactor(scope): 코드 구조 개선
모든 사용자 대면 문자열은 번역이 필요합니다. UI 텍스트를 추가하거나 수정할 때:
messages/ko.json에 키/값 추가messages/en.json과messages/zh.json에 번역 추가- 컴포넌트에서
useTranslations또는getTranslations로t("key")사용
모든 스키마 변경은 TypeORM migration을 통해 수행합니다:
# 엔티티 변경으로부터 마이그레이션 생성
pnpm migration:generate -- src/migrations/DescriptiveName
# 마이그레이션 실행
pnpm migration:run절대 synchronize: true를 사용하지 마세요. 자세한 마이그레이션 워크플로우는 CLAUDE.md를 참조하세요.
사용자 대면 동작에 영향을 주는 변경을 할 때는 해당 문서도 함께 업데이트하세요:
| 변경 내용 | 업데이트 대상 |
|---|---|
| 기능 또는 UI | README.md, docs/README.ko.md, docs/README.zh.md |
| 기여 프로세스 | docs/CONTRIBUTING.md, docs/CONTRIBUTING.ko.md, docs/CONTRIBUTING.zh.md |
| 환경변수 | .env.example + 모든 README 파일 |
| Hook API | 모든 README 파일 (Hook API 섹션) |
세 가지 언어 버전 (EN, KO, ZH)은 항상 함께 업데이트해야 합니다.
현재 KanVibe는 자동 상태 추적을 위해 Claude Code Hooks를 지원합니다. Gemini Hooks와 Codex Hooks 지원은 계획 중이며 개발 진행 중입니다.
멀티 에이전트 hook 지원에 대해 더 좋은 방향이나 아키텍처 아이디어가 있다면, 먼저 Discussion을 열어주세요. 구현 전에 함께 최적의 방향을 찾고 싶습니다.
다음 주요 기능 목표는 토큰 사용량 추적 대시보드입니다 - 태스크와 세션별 AI 에이전트 토큰 소비량을 모니터링합니다.
중요한 변경이나 새 기능의 경우:
- Discussion에서 아이디어를 공유
- 커뮤니티와 메인테이너의 피드백을 받기
- 방향이 합의되면 Issue를 생성하고 PR 제출
KanVibe에 기여함으로써, 귀하의 기여가 AGPL-3.0 라이센스에 따라 라이선스됨에 동의합니다.