Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
p:nder(pinder): 주소 입력 동선 자동 생성 플랫폼 여러 장소를 이동해야 하는 여행객을 위해, 목적지만 입력하면 AI가 동선과 일정을 자동으로 짜주는 서비스 • 타깃 사용자: 국내에서 여행·데이트·모임 등으로 여러 장소를 이동해야 하는 사람들(외국인 포함) • 겪는 문제: 약속 장소나 목적지는 정해져 있어도, 주변에서 무엇을 할지와 장소 간 이동 순서를 함께 고려한 효율적인 일정을 짜기 어렵다 • 우리의 해결: 목적지를 입력하면 AI가 최적화된 일정과 이동 동선을 자동으로 생성해 주고("장소 입력 → AI가 최적 경로 생성 → 세부 정보 추가해 커스텀"), 생성 이후에도 같은 화면(플래너)에서 계속 수정할 수 있다 • 교통·날씨 등 변동을 자동으로 감지해 동선을 재조정하는 기능 — 이유: 기획 단계에서 제외 결정, 대신 사용자가 "변수 추가"를 눌러야 재계산 시작 1. 홈에서 "새 일정 만들기" 클릭 → 2. 생성 방식(직접/AI) 선택 및 날짜 지정 → 3. 방문지 추가(검색·지도클릭·현재위치, 또는 AI 자동 생성) → 4. 경로 계산 및 편집 → 5. 저장 완료README 전문 보기 ↗
여러 장소를 이동해야 하는 여행객을 위해, 목적지만 입력하면 AI가 동선과 일정을 자동으로 짜주는 서비스
| 항목 | 내용 |
|---|---|
| 팀명 | 인사팀 |
| 팀원 | 김예린(Next.js 전환·배포 환경 구축, DB·인증·이메일·지도·AI 연동, 플래너 경로 계산/최적화 개발), 류다연(서비스 기획·정책 문서화, AI 가중치 기반 최적경로 기능, 내 일정 권한·개인화 기능 개발), 양다연(AI 도우미(챗봇)·AI 동선 생성 기능 개발, 초대·공유 권한 체계, 탐색 페이지 콘텐츠 구성), 박유수(Route Planner·커뮤니티·알림 기능 개발, 온보딩(Product Tour)·화면 UI 다듬기, 모바일 반응형 전면 작업) |
| 기간 | 2026.09.07 ~ 2026.09.21 |
| 배포 링크 | https://pinder-one.vercel.app/ |
| 피그마 | https://www.figma.com/make/ud387SQMeP4m5WJTFciCXg/Travel-Route-Planner-Wireframe?fullscreen=1&t=kdsf4qiqAWLw50Et-1&code-node-id=0-6 |
| Claude Design | https://claude.ai/design/p/f9f84bdd-ea4c-4e76-b7bc-cad662483c31?file=Route+Planner+App.dc.html&via=share |
| 우선순위 | 카테고리 | 기능 | 상태 |
|---|---|---|---|
| 1 | 장소 탐색 | 목적지 검색 및 추가 | 완료 |
| 2 | 장소 탐색 | 지도에 목적지 표시 | 완료 |
| 3 | 경로 계산 | 출발지 선택 및 경로 계산 | 완료 |
| 4 | 경로 계산 | 최단시간·최단거리 경로 계산 | 완료 |
| 5 | 경로 계산 | 변수·가중치 적용 | 완료 |
| 상황 | 사용자에게 보이는 것 | 다음 행동 | 구현 여부 |
|---|---|---|---|
| 필수 입력이 비어 있음(예: 커뮤니티 글쓰기 시 사진 0장) | 인라인 오류 문구(예: "사진을 1장 이상 첨부해주세요.") | 값 보완 후 재시도 | ✅ |
| 데이터가 하나도 없음(빈 상태, 예: 커뮤니티 검색/필터 결과 없음) | "검색 결과가 없어요" / "아직 게시물이 없어요" 안내 | 다른 조건으로 검색 또는 첫 글 작성 | ✅ |
| 일정 저장 중 서버 오류 | "저장하지 못했어요. 다시 시도해주세요." 토스트, 화면은 저장 전 상태 유지 | 다시 저장 시도 | ✅ |
| 비로그인 상태에서 저장/새 일정 만들기/편집 권한 요청 시도 | 화면마다 다름 — 로그인 필요 모달 또는 즉시 /login 이동 | 로그인 또는 회원가입 | ✅ |
| AI 추천 장소의 좌표를 카카오에서 못 찾음(대체 후보로 최대 3회 재시도 후에도 실패) | "좌표 매칭에 실패했습니다" 모달 — 해당 장소는 제외하고 진행(전부 실패 시 "조건을 바꾸거나 다시 시도해주세요.") | 나머지 장소로 계속 진행, 또는 조건 변경 후 재시도 | ✅ |
git log상 커밋 d61b43b, 2026-09-15 17:22 — 첫 코드 커밋 16:58 직후): 문제 정의 · 요구사항 · 기능| 도구 | 어느 단계에 썼나 | 원본 여부 |
|---|---|---|
| 피그마 | 초안 main 화면 참고 및 디자인 방향 확인 / 색상 팔레트 원본 정의 | 참고 |
| Claude Design | Figma의 디자인과 색상 팔레트를 참고하여 초기 프로토타입 제작 및 UI/UX 구체화 | 원본 |
| VS Code / Claude Code | Claude Design에서 구성한 프로토타입을 기반으로 실제 React/Next.js 화면 및 서비스 구현 및 UI/UX 수정 | 구현 |
| 구분 | 정의 | 피그마 | Claude Design |
|---|---|---|---|
| 색상 | Brand #7BCB93, Brand-strong #63B37E, Brand-accent #26AB4E, Light/Dark Background, Text 색상 사용 | ❌ | ✅ |
| 타이포 | Pretendard 기반으로 화면·컴포넌트별 크기 및 굵기 적용 | ❌ | ❌ |
| 아이콘 | Lucide 등 아이콘 라이브러리 미사용. PNG 래스터(public/icons/)가 주력이며, 이모지, 인라인 <svg> 및 유니코드 기호 혼용 | ❌ | ❌ |
src/components/ui/ 기준 실제 export된 컴포넌트 총 9개 사용
| 피그마 | Claude Design | 실제 화면 |
|---|---|---|
이 프로젝트는 화면을 직접 만드는 "디자이너→퍼블리셔" Agent 대신, 기획·문서 작업을 나눠 맡는 Agent 5개를 저장소에 정의해 썼다(근거: plan/.claude/agents/*.md).
flowchart LR
T[팀원] -->|답변| PP[planning-partner]
PP -->|기획 초안| PC[product-planner]
PC -->|빠진 것·질문 목록| T
T -->|재답변| PP
LG["legacy: Claude Design export"] --> DA[design-abstractor]
PP -->|기획 초안| PE[plan-example 폴더]
DA -->|design-abstract.md| PE
PE -->|내용·양식 참고| HW[hello-plan-writer]
CB[배포 링크 + 코드베이스] --> HW
HW -->|Hello-plan-docs 01~12| RW[rm-writer]
RW -->|READ_ME.md 섹션별 초안| T
T -->|섹션 승인| RW
| Agent | 역할 | 입력 | 출력 | 제약 |
|---|---|---|---|---|
| planning-partner | 기획 인터뷰 진행, 팀 답변을 문서 양식에 기록 | 팀의 답변(질문 1개씩) | 기획 문서 초안, [제안]/[?] 표시 | 팀 대신 결정하지 않음, 지정된 문서 외 쓰기 금지 |
| product-planner | 기획 문서의 빈 칸·모호한 문장 검증 | 작성된 기획 문서 | 빠진 것/모호한 문장/질문 목록(문서는 직접 쓰지 않음) | Read 전용, 답을 대신 채우지 않음 |
| design-abstractor | Claude Design export를 코드 기준으로 요약 | legacy/ 폴더 원본 | design-abstract.md(화면·요소·상호작용 표) | legacy 원본 수정 금지, design-abstract.md 외 쓰기 금지 |
| hello-plan-writer | 배포된 서비스를 코드·화면 기준으로 역산해 기획 문서화 | 배포 링크(읽기 전용 GET) + 레포 소스 | plan/Hello-plan-docs/ 01~12번 문서 | 그 폴더 외 쓰기 금지, 추측·[제안]/[?] 금지, 근거 없으면 "미확인" |
| rm-writer | Hello-plan-docs 내용을 종합해 발표용 README 작성 | Hello-plan-docs/ + 코드베이스(모두 읽기 전용) | READ_ME.md 한 파일, 섹션별 팀원 승인 절차 | READ_ME.md 외 쓰기 금지, 근거 없는 내용은 <확인 필요>로 표시 |
가장 많은 이 문서의 근거를 만들어낸 hello-plan-writer의 절대 규칙:
1. Write/Edit는 오직 plan/Hello-plan-docs/ 안의 파일에만 한다.
2. plan-example/ 폴더는 양식(표 구조·섹션 순서)만 참고하고 내용은 전부 무시한다.
3. 추측하지 않는다. [제안]·[?] 태그를 쓰지 않는다. 확인이 안 되면 "미확인 — 근거 없음"으로만 표시한다.
4. 모든 서술 항목에는 근거를 남긴다. 형식: (근거: src/app/matches/page.tsx)
5. "계획"이 아니라 "실제로 지금 동작하는 것"만 쓴다.
git log --follow 결과 파일마다 커밋 1개).CLAUDE.md는 @AGENTS.md 한 줄만 있고, AGENTS.md는 next dev가 자동으로 재생성하는 안내문이라 팀이 직접 쓴 규칙이 아니다. 실제 팀 규칙은 docs/ARCHITECTURE.md·docs/CONTRIBUTING.md에 있다.
app/ → components/ → lib·constants·types 한쪽으로만, 기본은 서버 컴포넌트(필요할 때만 'use client'), CSS는 *.module.css + tokens.css 변수만 사용src/app(라우팅) · components/{ui,layout,providers} · lib(도메인 로직) · constants · types · legacy/(구 프로토타입, 빌드 제외) · docs/(팀 문서)NEXT_PUBLIC_ 접두사 금지), main 직접 push 금지(PR만)실제로 지켜졌는지: 색상 토큰 규칙은 지켜지지 않았다 — CSS 모듈 90건 이상에서 하드코딩된 hex가 발견되고(planner.module.css 약 50건), 다크모드 미대응을 스스로 주석으로 인정한 곳도 있다(근거: docs/ARCHITECTURE.md, plan/Hello-plan-docs/10-Hello-design-system.md).
저장소에 별도 Skill 파일(.claude/skills/)은 없고, 3번 섹션의 Agent 지시문 5개가 재사용 프롬프트 역할을 겸한다.
| 이름 | 하는 일 | 사용 횟수 |
|---|---|---|
| hello-plan-writer | 배포된 코드를 역산해 기획 문서 작성 | Hello-plan-docs 12개 문서 생성 |
| rm-writer | Hello-plan-docs를 종합해 README 작성 | 섹션 단위로 반복 사용 중 |
| planning-partner / product-planner | 기획 인터뷰 진행(작성) / 빈 칸·모호한 문장 검증(검토만, 직접 안 씀) | plan-example 초안 다수 생성 · 검증 라운드 다수 |
| design-abstractor | Claude Design export를 코드 기준으로 요약 | 1회(design-abstract.md 생성) |
git log로 실제 수정 이력까지 확인한다<확인 필요>로 남긴다실제 사례: AI가 추천한 장소의 좌표를 카카오에서 못 찾으면 좌표 없이 그대로 일정에 들어가고, 플래너가 이를 알리지 않은 채 가짜 이동시간·지하철 노선명을 지어내 보여주는 결함을 코드 추적(AiGenerateWizard.tsx → PlannerClient.tsx → route-engine.ts)으로 발견했다. 이후 AiGenerateWizard.tsx에 대체 후보 재시도(최대 3회)와 "좌표 매칭에 실패했습니다" 안내 모달이 추가되어, 실패한 장소는 가짜 데이터 대신 제외되도록 고쳐졌다(근거: 커밋 8d81aaa "지역 우선 매칭, 가짜 데이터 생성 금지, 좌표 매칭 실패 팝업").
기획 단계(hello-planning) — 실제로 분기·병합이 일어난 브랜치, PR 1~16번 전부 반영
gitGraph
commit id: "rule.md(브랜치명 규칙)"
branch R-branch
branch P-branch
branch K-branch
branch y-branch
checkout R-branch
commit id: "01-R" tag: "PR#1, 류다연 자가병합"
checkout main
merge R-branch
checkout P-branch
commit id: "01-P" tag: "PR#5, 박유수 자가병합"
checkout main
merge P-branch
checkout y-branch
commit id: "01-Y" tag: "PR#2, 양다연 자가병합"
checkout main
merge y-branch
checkout K-branch
commit id: "01-K" tag: "PR#4, 김예린 자가병합"
checkout main
merge K-branch
checkout K-branch
commit id: "04·05 정책 문서" tag: "PR#7, 김예린 자가병합"
checkout main
merge K-branch
checkout K-branch
commit id: "02-workflow 재구성" tag: "PR#10, 류다연이 대신 병합"
checkout main
merge K-branch
checkout R-branch
commit id: "기획서 02-05" tag: "PR#6, 미병합"
branch new-R-Branch
commit id: "2,3,4 기획서+행위자+memo" tag: "PR#11~13, 전부 미병합"
branch cherry-branch
commit id: "뉴브랜치+업무분석" tag: "PR#14,16, 전부 미병합"
55a6025, 09-10 17:11) — 이 저장소 전체에서 "내가 아닌 다른 사람이 리뷰하고 병합해준" 유일한 사례R-branch)이 막힌 뒤 new-R-Branch(류다연이 실제 커밋 작성, PR은 김예린이 대신 열어줌 — git log상 커밋 작성자와 PR#11의 GitHub 작성자가 다름)로, 다시 cherry-branch로 두 번 더 새 브랜치를 파서 재시도했지만 PR#11~14·16 다섯 건 모두 병합되지 못함개발 단계(pinder) — 09-17까지는 "브랜치"라는 이름은 있지만 실제로는 분기가 거의 없었음. 09-22 README 문서화부터 처음으로 실제 PR 기반 분기·병합이 자리 잡음
gitGraph
commit id: "init(09-15 16:17)"
commit id: "화면 이식 다수(같은 날 직접 커밋 — feat/* 이름표는 이 줄 위에 붙어있을 뿐 실제 분기 없음)"
commit id: "이후 전원 main 직접 커밋 반복"
commit id: "pull 충돌 병합 커밋 94개"
branch feat/saved-view-past-trips
commit id: "종료된 일정 읽기전용 뷰 전환(09-17, 병합되지 않고 방치됨)"
checkout main
branch R-branch
commit id: "기획 문서 갱신, main을 계속 pull해서 추적"
checkout main
commit id: "문서 R-branch->Main 직접 복사(09-17, merge 없이 파일만 복사)"
commit id: "chore/format-fix 병합" tag: "PR#9"
commit id: "로그인 아이디/이메일 겸용 기능"
branch P-branch
commit id: "2절 디자인 시스템 작성"
checkout main
merge P-branch tag: "PR#11"
branch feature/readme-1-3-4
commit id: "1·3·4절 작성"
checkout main
merge feature/readme-1-3-4 tag: "PR#10"
branch K-branch
commit id: "5·6절 작성 + 이슈·PR 스크린샷"
checkout main
merge K-branch tag: "PR#7"
branch Y-branch
commit id: "7절 회고 작성"
checkout main
merge Y-branch tag: "PR#6"
commit id: "루트 README.md 교체(직접 push)"
feat/google-login·feat/home-page-port·feat/login-signup-screens·feat/planner-screen·feature/migration: 5개 브랜치 tip 커밋을 전부 확인한 결과 부모가 1개뿐임(git log -1 --format=%P) → 실제로 분기된 적이 없고, 같은 한 줄의 커밋 위에 이름표만 붙어 있는 상태. 그래서 위 그래프에는 넣지 않고 "화면 이식 다수" 한 줄로만 표시함
feat/saved-view-past-trips: 09-17까지 기준으로는 유일하게 진짜로 갈라진 브랜치 — main에 없는 커밋이 정확히 1개 있음(a487d9a 김예린, 09-17 09:57, "종료된 일정을 KST 기준 저장된 뷰(읽기 전용)로 전환") — 지금까지 병합되지 않고 그대로 방치돼 있음. 이게 바로 02-Hello-workflow.md에서 "확인되지 않은 분기"로 적어둔 "일정 종료 후에도 편집·저장·초대가 그대로 동작한다"는 문제의 원인 — 그 기능을 실제로 만들다가 병합을 안 한 것
R-branch: 기획 저장소의 R-branch와 이름만 같은 별개 브랜치. 류다연이 origin/main을 반복해서 merge해 들여오며(041905b 등) 기획 문서를 갱신하다가, 09-17에 결국 PR·merge 없이 069a41c 문서 R-branch->Main 옮김 커밋으로 파일만 main에 복사해 넣고 끝남
09-22 README 문서화 — 개발 저장소(pinder)에서 처음으로 실제 PR 분기·병합이 일어남: 기획 저장소의 K-branch·P-branch·Y-branch와 이름만 같은(내용은 무관한) 별개 브랜치를 pinder에도 새로 파서, 팀원별로 섹션을 나눠(2절 박유수, 1·3·4절 류다연, 5·6절 김예린, 7절 양다연) 각자 커밋 후 PR을 열고 실제로 GitHub에서 "Merge pull request" 버튼을 눌러 병합함(PR#6,7,10,11)
그동안 이 저장소는 PR 없이 main 직접 커밋만 반복했는데, 이번이 사실상 "PR 생성 → 리뷰 없이 병합" 방식으로나마 기획 저장소의 관행을 처음 재현한 사례. 다만 병합 도중 main에 먼저 들어와 있던 다른 기능 커밋(로그인 아이디/이메일 겸용, vercel-deployments.json 제거)과 충돌이 나서, Y-branch·P-branch는 각각 main을 다시 merge해 충돌을 해결한 뒤 재push해야 했음. 루트 README.md 교체 커밋만은 예외적으로 PR 없이 main에 직접 push함(문서 내용을 옮기는 후속 작업이라 팀 판단하에 생략)
브랜치 이름 규칙: 기획 단계는 <성 이니셜>-branch, 개발 단계 초기엔 feat/<화면명>(그러나 위에서 확인했듯 실제로 분기되지는 않음). 이슈 번호를 붙이는 규칙(feature/<이슈번호>-<기능명>)은 두 저장소 어디에서도 실제로 쓰인 적이 없음(전체 커밋 메시지에 #<숫자> 형태 이슈 참조 0건)
합치기 규칙: 기획 단계는 "PR 생성 → (대부분 자가)병합"을 실제로 시도했음(총 PR 13건 중 7건 병합, 아래 "PR 활용" 참고). 개발 단계로 넘어오면서는 PR 없이 "각자 main에 직접 커밋 → 로컬 git pull로 병합 → 충돌은 로컬에서 직접 해결"로 바뀌었음(병합 커밋 95개 전부 pull 충돌 해소용, Merge pull request 흔적 0건)
이번 README.md 문서화(2 ~ 5·6·7절)부터는 팀원별로 각자 브랜치를 파서 PR로 병합하는 방식을 다시 시도하기로 함 — 2절(디자인 시스템) 박유수, 3·4절(Agent 구성/프로젝트 규칙) 류다연, 5·6절(협업 방식·데모, 본 절 포함) 김예린, 7절(팀 회고) 양다연
| 이슈 | 생성일 | 작성자(=사실상 담당) | 라벨 | 담당자(assignee) | 체크리스트 진행률 | 댓글 | 연결 PR | 상태 |
|---|---|---|---|---|---|---|---|---|
| #8 "9/10 - 프로토타입 기반으로 기획서 수정할 것" | 09-10 | 류다연 | (없음) | (없음) | 6/6 (100%, 그날 오후 할 일 전부 완료 처리) | 0 | 없음 | open(닫힌 적 없음) |
| #9 "문서 2,3,4번 수정사항" | 09-10 | 김예린 | (없음) | (없음) | 0/18 (0%) | 0 | 없음 | open(닫힌 적 없음) |
| #15 "할 일 정리" | 09-14 | 류다연 | (없음) | (없음) | 1/219 (0.5%) | 0 | 없음 | open(닫힌 적 없음) |
src/db/schema.ts의 scheduleCollaborators.role, 02-Hello-workflow.md의 A1~A4 행위자 표)와 거의 그대로 일치함 — 체크박스로는 진행률을 전혀 추적하지 않았지만, 실질적으로는 설계 문서로 계속 참조된 것으로 보임closed_at: null) — 저장소가 pinder로 옮겨가면서 정리 없이 그대로 두고 온 것Closes #, Fixes #) 관행은 0건 — 이슈 본문·PR 본문 어디에도 서로를 참조하는 표현이 없음pinder)의 .github/ISSUE_TEMPLATE/(버그 신고·기능 요청·화면 작업)는 만들어져 있지만 실제 이슈가 하나도 없음(0건). 기획 저장소(hello-planning)의 이슈 3건(위 표)도 템플릿 없이 자유 형식(체크리스트)으로 작성됐고 라벨도 전혀 쓰지 않음 — "추적할 문제"가 아니라 "todo 메모장"으로 쓴 것| 이슈 목록 | 이슈 #15 상세 |
|---|---|
pinder에는 .github/PULL_REQUEST_TEMPLATE.md 있음(작업 내용/관련 이슈/lint·typecheck·build 체크리스트/라이트·다크·모바일 확인/스크린샷) — 그러나 실제 PR 자체가 없어 쓰인 적이 없음. hello-planning에는 별도 템플릿 없이 자유 형식으로 PR을 열었음(본문이 "01-K" 한 줄뿐인 경우가 대부분)closes #이슈번호 — 그러나 실제 병합된 PR(hello-planning #1,2,3,4,5,7,10)의 본문은 한 줄 제목뿐이라 이 형식이 실제로 지켜진 적은 없음pinder의 CODEOWNERS(@팀장/@담당자)는 실제 GitHub 계정으로 치환되지 않은 채 남아 있어 강제되는 리뷰가 없었음. 다만 hello-planning의 PR#10 제목("...류다님 확인 바랍니다")처럼 특정 팀원을 지목해 리뷰를 요청하는 관행은 있었고, PR#6에는 실제 인라인 리뷰 코멘트가 12건 오갔음(양다연: "05번 파일 정책... 추가하면 좋을 거 같습니다", 김예린: "문서 2,3까지만 완료함" 등)hello-planning 13개(#1 ~ 16, 결번 8·9·15는 위 이슈 번호), pinder 5개(#6,7,9,10,11 — 아래는 이 5개 기준, hello-planning의 동일 번호와는 무관한 별개 저장소 번호). 리뷰 코멘트가 오간 PR: hello-planning 3개(#6에 12건, #12·#13에 각 1건) — 나머지 10개는 코멘트 없이 병합되거나 방치됨. pinder의 5개는 전부 코멘트 없이 병합됨. 병합 결과는 hello-planning 7건 병합(#1,2,3,4,5,7,10 — 전부 기획 첫 주 09-08 ~ 09-10) / 6건 미병합(#6,11,12,13,14,16 — 류다연이 R-branch→new-R-Branch→cherry-branch로 계속 새 브랜치를 파며 재시도했지만 끝내 병합되지 못하고 방치됨, 09-17에 069a41c 커밋으로 PR 없이 main에 직접 복사해 넣으며 마무리), pinder는 09-22에 연 5건 전부 병합(#9 chore/format-fix, #11 P-branch, #10 feature/readme-1-3-4, #7 K-branch, #6 Y-branch — 이 저장소가 생긴 이후 처음 발생한 PR이자 첫 병합)[근거] 두 저장소의 커밋을 모두 합쳐서 다시 작성함 — 기획 저장소(
hello-planning, 4명 합계 43커밋)는git log --all --author=<계정>으로 실제 커밋 제목을 전부 읽고, 개발 저장소(pinder, 4명 합계 337커밋)는git log --author=<계정> --numstat으로 실제 변경 파일을 집계함(커밋 메시지의fix(범위):스코프 표기가 아니라 실제 diff 기준).
| 팀원 | 기획 단계(hello-planning, 총 커밋) | 개발 단계(pinder, 총 커밋) | 담당 이슈 | 주요 PR |
|---|---|---|---|---|
김예린 (paaaraaaeaaa) | 12커밋 — "01-K" 작성 후 P/R/y 3개 브랜치를 K-branch로 직접 merge해 "01통합본" 정리, 04·05번 정책 문서 추가, 02-workflow 재구성(단 병합은 류다연이 대신 해줌) | 135커밋 — 09-15 초기 화면 이식 다수를 직접 작성, 이후 플래너 핵심 로직(PlannerClient.tsx 46회)·인증(api/auth 24회)·일정 API(api/schedules 16회)·마이페이지(16회) 담당. 미병합 상태로 남은 feat/saved-view-past-trips("종료된 일정 읽기전용 뷰 전환")도 본인 작업 | #9 | #4, #7, #10 (전부 병합) |
박유수 (yoosoo2217) | 8커밋 — rule.md(브랜치명 규칙 자체를 작성)로 시작, "저장"(01-P), 유사 서비스 조사 3건, 01-merged.md 리네임·정리 | 94커밋 — 커뮤니티 화면(30회), 플래너 모바일 반응형 CSS(planner.module.css 21회 — 뒤로가기 버튼 위치를 5번 반복 수정한 것도 포함), 내 일정 카드(7회) | (없음) | #5 (병합) |
양다연 (yang7493) | 4커밋 — "첫번째 파일"(01-Y), 유사 서비스 조사·표 수정 2건 | 65커밋 — PlannerClient.tsx(17회)·내 일정(routes 17회)·AI 도우미(api/chat 13회, "생성 AI와 대화로 수정" 기능)·탐색 페이지(11회)·플래너 모바일 버튼 위치(7회, AI도우미/현재위치 버튼 겹침을 7번 반복 수정) | (없음) | #2 (병합) |
류다연 (dyryoo316) | 18커밋(4명 중 최다) — "pr 01파일 템플릿"·"01-R"로 시작, "문제상황 및 아이디어 1차 작성" 등 초기 기획을 주도. PR#6이 리뷰까지 받고도 막힌 뒤 new-R-Branch("2,3,4 기획서 커밋"·"02 파일 행위자·스탭 추가"·"로그인에 따른 행위자 기능 반영")→cherry-branch("뉴브랜치"·"업무 분석 커밋")로 두 번 더 재시도했지만 전부 미병합. 유일하게 김예린의 PR#10을 대신 병합해줌 | 43커밋 — PlannerClient.tsx(14회, "출발지 선택" 팝업 흐름)·내 일정 개인화(routes 7회)·커뮤니티(5회)·인증(api/auth 4회). 기획 저장소의 R-branch를 코드 저장소에서도 이어가다가 결국 09-17에 PR 없이 main에 문서를 직접 복사 | #8, #15 | #1, #3 (병합) · #6, #11~14, #16 (미병합) |
PlannerClient.tsx는 네 명 모두가 상위권으로 고친 파일이고(김예린 46 · 양다연 17 · 류다연 14 · 박유수 8),planner.module.css도 세 명이 반복해서 고쳤다(박유수 21 · 김예린 18 · 양다연 13 — 류다연은 이 파일을 건드린 적 없음). 이렇게 겹치는 구조가 아래 "충돌 해결 사례"의 반복 수정·되돌림으로 이어졌다.
PlannerClient.tsx·planner.module.css 두 파일은 네 명 전원의 작업 영역이 겹치는 지점이었고, 실제로 이 두 파일에서 반복 수정과 되돌림이 몰려 있었음(아래 참고)R-branch) 리뷰는 했지만 끝내 병합 못함: 양다연·김예린이 실제로 인라인 리뷰 코멘트 12건을 남겼는데도("05번 파일 정책... 추가하면 좋을 거 같습니다" 등) 반영·재승인까지 이어지지 않고 09-11에 병합 없이 종료됨. 류다연은 이후 new-R-Branch(PR#11~13)→cherry-branch(PR#14, 16)로 계속 새 브랜치를 만들어 재시도했지만 전부 병합되지 못했고, 결국 코드 저장소로 넘어온 뒤 09-17에 069a41c 커밋으로 PR 없이 main에 문서를 직접 복사해 넣으며 마무리함 — "리뷰는 있었지만 반영·재병합 절차가 끝까지 지켜지지 않은" 사례MyPageClient.tsx의 일반 탈퇴 처리(onConfirmWithdraw)에 router.push('/login') 3줄을 추가(067f9fc, 11:39) → 13분 뒤 양다연이 그 3줄을 git revert로 통째로 삭제(1e8c103, 11:52) → 10분 뒤 김예린이 같은 3줄을 재적용(7f59765, 12:02)하며 커밋 메시지에 "팀원이 별다른 설명 없이 revert 했는데, 테스트로 확인된 실제 버그 수정이라 다시 적용한다"고 직접 기록. diff가 3줄 추가/3줄 삭제로 완전히 대칭이라 코드 충돌은 아니고, 사전 소통 없이 되돌렸다가 다시 되돌려진 사건임(왜 되돌렸는지는 기록에 남아있지 않아 [확인 필요]). 개선안: 같은 영역(인증/마이페이지) 작업 전 담당·범위를 먼저 공지하고, git revert처럼 되돌리는 작업은 사유를 남기기114ecb4(추가 후 되돌아갈 팝업을 "목록"에서 "출발지 확정"으로 변경) → b4eacf0("취소"를 "이전"으로 바꾸고 스크롤 추가) → 7d8159b(ESC/뒤로가기 처리에 returnToOriginPickerAfterAdd 상태 확인 로직 추가) → b2d8349·3349a20(위 흐름 재조정). git 충돌은 아니지만, 추가 후 어느 팝업으로 돌아가야 하는지에 대한 요구사항이 구현 중 계속 바뀐 사례planner.module.css를 반복 수정: 박유수는 지도 화면 "뒤로가기" 버튼이 검색 오버레이와 겹치는 문제를 09-17에 5번 수정(602267a에서 버튼 JSX를 mapCol 밖에서 mapArea 안으로 옮김); 양다연은 AI 도우미·현재 위치 버튼이 하단 요약바와 겹치는 문제를 09-18 아침에 7번 연속 수정(ddcc42c→...→f27b62e) — 전부 CSS position/z-index만 계속 바꾸며 한 번에 맞는 값을 못 찾은 패턴| PR 화면 |
|---|
main에 push하면 Vercel Git Integration이 자동으로 새 프로덕션 배포를 만듦. 이 저장소 자체의 CI(ci.yml)는 lint·typecheck·build 검증만 하고 실제 배포는 하지 않으므로, 배포 성공 여부는 GitHub 커밋 상태가 아니라 Vercel 대시보드(또는 PR에 자동으로 달리는 Vercel 프리뷰 배포 코멘트)에서 확인해야 함 [확인 필요: Vercel 대시보드 접근 권한이 없는 팀원은 이 문서에 스크린샷으로 배포 상태를 남겨둘 것]npm i -g vercel # Vercel CLI (이 개발 환경에는 아직 설치돼 있지 않음 — 최초 1회만)
vercel login
vercel link # 이미 연결된 프로젝트 "pinder"를 선택 (.vercel/repo.json 참고)
vercel env pull .env.local # KAKAO_JS_KEY / KAKAO_REST_API_KEY / GEMINI_API_KEY / GOOGLE_CLIENT_ID / DATABASE_URL 등을 실제 배포값 그대로 받아옴
npm install
npm run dev # http://localhost:3000
README.md "환경 변수" 절 "키가 없어도 앱은 뜨고, 해당 기능만 오류 메시지를 보여준다")로그인 — 홈에서 "내 일정" 클릭 → 로그인 진행(helloteam / eulji2026@)
내 일정 — 미리 제작된 내 일정 진입 → 제목·일정 수정 → 온보딩 설명("다시 보지 않기") → 최단 시간 / 최단 거리 옵션 확인 → 이동수단 설정(일괄 적용, 개별 변경, 카카오맵 연동까지) → 방문지 추가(주소 검색 / 지도 클릭 / 현위치) → 경로 계산 팝업에서 출발지 설정(방문지 목록 선택, 검색, 현위치 선택) 및 변수 추가
최적 동선 생성하기 — AI 일정 생성 → 이틀 일정 선택 → **"다시 추천받기"**로 재생성 → "이 일정으로 시작하기" → 경로 계산 → 전체보기에서는 추가 입력이 불가능함을 언급 → 저장하지 않고 나갈 때 "저장하시겠습니까?" 확인창 시연
여행지 탐색 — 경북 선택 → 포항 진입 → "일정짜기" → 이틀로 변경 → 전체보기에서 주소를 추가하는 방법 시연(주소 검색은 불가, 지도 클릭으로만 가능) → 경로 계산 → AI 도우미에 "포항에서 진짜 유명한 곳으로 추천해줘" 입력 → **"호미곶을 일정에 추가해줘"**로 추가 → 제시된 예시 문항을 선택해 추가 → 저장 → 편집 링크 공유(다른 팀원이 따로 권한 신청) → 홈 화면 이동 알림창 언급 → 내 일정에서 권한 관리 팝업 시연
편집 링크 접속 — 편집자 화면 시연: 처음에는 보기 전용 상태 → 권한 신청 → 승인 후 편집자 화면으로 전환되는 과정 및 제작자 화면과의 차이점 언급
커뮤니티 — 게시물 작성 / 댓글 / 좋아요 / 저장 기능 시연 → 내 프로필에서 저장 목록 확인 → 여행지 검색 기능 시연
| 무엇이 실패했나 | 왜 | 어떻게 고쳤나 |
|---|---|---|
| 커뮤니티 글 작성 실패를 성공으로 처리 | 에러 응답을 성공 케이스로 잘못 분기 처리 | 실패 응답을 실패로 처리하도록 분기 로직 수정 |
| UI 요소 겹침·간격 문제를 여러 번 임시방편으로 반복 수정 | 레이아웃 구조(z-index, 앵커 기준 등)를 먼저 정하지 않고 그때그때 다르게 시도 | 여러 차례 수정을 거쳐 최종 배치로 수렴 |
| 동시 경로 요청이 몰려 일부 이동수단 경로 계산 실패 | 여러 이동수단 API를 동시에 호출해 요청 과부하 | 요청 처리 방식을 수정해 과부하 해소 |
| Neon DB의 네트워크 사용량을 모두 소진해 사용 불가 | 네트워크 사용량 한도 초과 | Supabase로 새 데이터베이스를 구축해 재배포, 기존 스키마 구조만 그대로 이전 |
[제안], 근거가 없는 추정은 [확인 필요]/[?]로 표시해 나중에 섞여서 사실처럼 보이지 않게 함@AGENTS.md, @docs/ARCHITECTURE.md, @docs/CONTRIBUTING.md로만 연결(bdeddd9) — 컨벤션·폴더 구조가 바뀌어도 CLAUDE.md를 따로 고칠 필요 없이 원본 문서만 갱신하면 Claude Code가 항상 최신 규칙을 읽게 함