World Vibe Web
The distributed app store for vibe-coded projects. Browse, discover, and install open-source apps from across GitHub.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證팀 모코코 프로젝트입니다. - 동네수리
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
지역 기반으로 수리 요청자와 수리자를 연결하고, 제안 → 채택 → 채팅 → 거래 → 결제 → 후기까지 하나의 흐름으로 제공하는 P2P 수리 매칭 플랫폼 사용자는 자신의 활동 지역을 기반으로 수리 요청을 등록하거나 주변의 수리 요청을 확인할 수 있다. 수리자는 예상 가격과 작업 내용을 제안하고, 의뢰자가 제안을 채택하면 전용 채팅과 거래 절차가 시작된다. • 사용자의 활동 지역 설정 • 지역 코드 기반 수리 요청 조회 • 수리 요청 등록, 수정, 삭제 • 카테고리별 수리 요청 조회 • 게시글 이미지 첨부 • 수리자가 수리 요청에 예상 가격과 작업 내용을 제안 • 의뢰자가 원하는 제안을 채택 • 동일 수리 요청에서 하나의 제안만 최종 채택 • 채택 취소 및 재채택 지원 • 채택 결과에 따라 거래 상태 자동 변경 • 제안 채택 시 수리 거래 생성 • 상품 전달, 수리 진행, 수리 완료 요청 등 거래 단계 관리 • 거래 상태에 따른 허용 작업 제한 • 거래 완료 이후 잘못된 재진행 방지 • 중복 요청에도 동일한 거래 상태를 유지하도록 멱등성 처리檢視完整 README ↗
지역 기반으로 수리 요청자와 수리자를 연결하고, 제안 → 채택 → 채팅 → 거래 → 결제 → 후기까지 하나의 흐름으로 제공하는 P2P 수리 매칭 플랫폼
사용자는 자신의 활동 지역을 기반으로 수리 요청을 등록하거나 주변의 수리 요청을 확인할 수 있다. 수리자는 예상 가격과 작업 내용을 제안하고, 의뢰자가 제안을 채택하면 전용 채팅과 거래 절차가 시작된다.
초기에는 이메일을 JWT의 사용자 식별값으로 사용했지만, 이메일은 변경 가능한 정보이기 때문에 서비스 간 식별자로 적합하지 않다고 판단.
JWT Subject와 인증 계층의 사용자 식별 기준을 userId로 변경하고 공통 인증 객체인 LoginUser(userId, email)를 사용하도록 개선. 인증은 전 서비스가 Authorization: Bearer 하나로 통일됨(레거시 X-User-Email 헤더는 더 이상 신뢰하지 않음).
다만 도메인 데이터의 소유권 판별 기준은 서비스마다 다름 — 채팅방/계약은 userId(Long)를 쓰지만, 게시글·제안·후기·이력서·결제·알림은 여전히 이메일을 기준으로 함(전환 작업이 일부만 완료된 상태).
하나의 수리 요청에 여러 제안이 동시에 채택될 경우 거래가 중복 생성될 수 있는 문제를 고려.
게시글 조회 시 비관적 락(PostRepository.lockById)을 적용하고, fix_deals/proposals에 활성 행만 유일하게 만드는 generated column 기반 UNIQUE 제약을 함께 사용하여 애플리케이션과 데이터베이스 양쪽에서 중복 거래 생성을 방지.
다중 스레드로 동시 채택 요청을 발생시키는 별도의 동시성 테스트는 아직 없음 — 현재는 락·제약 자체의 존재로만 방지하고 있어 추가 검증이 필요한 부분.
네트워크 지연이나 사용자의 중복 클릭으로 동일 API가 여러 번 호출될 수 있는 상황을 고려.
등의 방식으로 주요 거래 API가 중복 요청에도 안정적으로 동작하도록 구현.
개발 환경과 테스트 환경의 DB 차이로 인해 발생할 수 있는 문제를 줄이기 위해 주요 서비스의 통합 테스트에 Testcontainers를 적용.
테스트 실행 시 실제 MySQL 컨테이너를 생성하고 Flyway Migration을 실행한 뒤 JPA Entity와 DB Schema가 일치하는지 검증.
이를 통해 단순 H2 테스트가 아닌 실제 운영 DB 환경과 가까운 조건에서 다음 항목을 검증.
FlywaySchemaTest)FixDealRepositoryTest)AiPostDraftRepositoryTest)결제 검증(
PaymentVerificationTest)이나 동시 요청 관련 테스트(제안 채택 동시성, 회원가입 중복, 채팅방 중복 생성)는 현재 코드베이스에 아직 없음 — 해당 로직 자체(PortOne 재조회, DB 제약)는 존재하지만 전용 테스트로 검증되지는 않은 상태.
각 서비스는 자신의 데이터베이스에 속한 Entity만 직접 관리하고, 다른 서비스의 데이터는 ID를 통해 참조하도록 구성.
현재는 데이터 보존을 위해 물리 DB를 공유하는 transitional architecture이며, 논리적 소유권 분리.
ex) 채팅 서비스는 Post, Proposal, FixDeal, User Entity를 직접 참조하지 않고 다음 식별값만 저장.
postIdproposalIdfixDealIdrequesterIdrepairerId| 서비스 | 주요 역할 |
|---|---|
api-gateway | API 요청 라우팅 및 외부 요청 진입점 |
user-service | 회원가입, 로그인, JWT, 사용자 정보, 지역 관리 |
post-service | 수리 요청, 제안, 거래, 후기, 알림, 계약 관리 |
chat-service | 채팅방, 실시간 메시지, 첨부파일 관리 |
payment-service | 결제 주문, 결제 검증, Webhook 처리 |
common | 공통 인증 객체 및 서비스 간 공유 계약 |
FixDealRepositoryTest)제안 채택/채팅방 생성/회원가입에 대한 동시 요청(다중 스레드) 테스트와 결제 검증 테스트는 아직 없음 — 위 목록은 실제 존재하는 테스트 기준으로 정리한 것.
멋쟁이사자처럼 백엔드 24기 — 5팀 (FindAnswer)
| 이름 | 역할 | 담당 도메인 |
|---|---|---|
| 곽승욱 | 팀장 | 로그인(JWT·OAuth), 게시글 CRUD, CI/CD 배포(EC2·GitHub Actions) |
| 변재웅 | 부팀장 | 후기 시스템, 프로필 및 거래 내역, 수리자 이력서, 결제 및 수수료 정산 |
| 박준성 | 팀원 | 1:1 실시간 채팅, 지역 정보 연동 조회, AI 전자계약서 및 게시글 초안 보조 |
| 정선우 | 팀원 | 실시간 알림 파이프라인, 카테고리/필터 검색 엔진, 서비스 정책 및 약관 페이지 |