Skip to content

prgrms-aibe-devcourse/AIBE3_Project2_Team4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IT 직종 클라이언트–프리랜서 매칭 플랫폼

프리랜서의 재능(서비스)을 등록하고, 클라이언트가 검색·구매하며, 실시간 협업을 돕는 기능을 제공합니다.

🧩 서비스 소개

IT 직종에 특화된 클라이언트–프리랜서 매칭·협업 플랫폼입니다. IT 키워드 중심의 카테고리/태그로 검색 정확도를 높이고, **모의 결제(샌드박스)**를 포함한 end-to-end 협업 흐름을 한 화면에서 이해하고 실행할 수 있도록 설계했습니다.

1) IT 중심 카테고리/태그로 정교한 매칭

  • 사용자는 자신의 스택/도메인에 맞춘 결과만 빠르게 탐색하고, 프리랜서는 전문성을 명확히 노출할 수 있습니다.

2) 한눈에 보는 협업 플로우 (모의 결제 포함)

컨택 → 채팅방 생성 → 실시간 협의 → 서비스 결제(모의 결제 지원) → 작업 진행 → 작업 완료

  • 모의 결제(샌드박스): 실제 결제 이전에 흐름을 체험하며, 결제/주문/승인 단계를 모두 시뮬레이션합니다.
  • 실시간 협의: STOMP/WebSocket 기반 채팅으로 요구사항을 조율하고, 필요시 파일/링크를 공유합니다.
  • 가시성: 각 단계가 타임라인으로 기록되어, 신규 사용자도 전체 프로세스를 쉽게 이해할 수 있습니다.

3) “협의가” 결제 지원 (리스트 가격을 넘어서)

  • 서비스에 등록된 기본 가격과 별개로, **클라이언트–프리랜서가 합의한 금액(협의가)**으로 결제할 수 있습니다.
  • 협의가 제안 → 상호 승인 → 결제 단계에서 협의가 고정(Price Lock) → 결제/영수증/이력에 반영.

4) 협의 메모 & 사이드 캔버스

  • 메모란: 일정, 산출물 범위, 변경사항 등 중요 합의 사항을 남길 수 있습니다.
  • 사이드 캔버스: 스케치·와이어프레임·코드 스니펫·체크리스트 등 비주얼/텍스트 보조 공간으로 사용합니다.

5) 프리랜서 프로필 관리

  • 프리랜서 프로필을 세밀하게 작성할 수 있도록 지원해 프리랜서는 스스로를 어필하고, 클라이언트에게는 서비스를 선택할 수 있는 기준을 추가 부여
    • 프로필 등록 & 수정 : 프로필 이미지, 경력, 자기 소개, 자격증 목록, 포트폴리오 목록 등록 및 수정 가능
    • 프로필 조회 : 비회원에게도 열려있는 프로필 조회 페이지를 통해 프리랜서 및 클라이언트에 대한 정보 사전 인지 가능

6) 서비스 품질 향상을 유도하는 프리랜서 랭킹 페이지

  • 프리랜서 중 가장 리뷰 평점이 좋은 4명을 선정하여 게시하는 랭킹 페이지 운영

7) 쉽고 안전한 로그인 & 가입

  • 카카오 로그인 연동 : Kakao Auth를 연동하여 쉽고 간편한 로그인 지원 → 서비스 접근성 UP
  • 이메일 기반 가입&비밀번호 찾기 : 이메일 인증을 사용해 다른 목적의 가입 계정 방지, 이메일 전송을 활용한 비밀번호 재설정 기능

✨ 주요 기능

  • 회원/인증: JWT(Access/Refresh), OAuth 2.0(카카오), Spring Security
  • 프로필 & 파일 업로드: S3 업로드(서버 업로드 / Presigned URL)
  • 서비스: 서비스 등록/검색/상세/구매
  • 결제: 토스 페이먼츠 연동(승인/실패 처리)
  • 실시간 채팅: Spring WebSocket + STOMP, 인증/인가 인터셉터
  • 마이페이지: 개인 정보 및 이미지 최적화 조회

🛠 기술 스택

  • Backend: Java 21, Spring Boot, Spring Validation, Spring Security, Spring WebSocket, Spring Boot Mail
  • Data: JPA, MySQL, H2, Redis
  • Auth: JWT, OAuth 2.0(Kakao)
  • Infra: AWS S3
  • Payment: 토스 페이먼츠 API
  • Frontend: TypeScript, Tailwind CSS
  • Docs: Swagger(OpenAPI)

🧱 폴더 구조

forward.javaqna
├─ JavaQnaApplication
├─ AppConfig
├─ global
│  ├─ init/           # ApplicationRunner 등 초기화
│  ├─ app/
│  ├─ security/
│  ├─ springdoc/
│  ├─ exception/
│  └─ jpa/
│     └─ entity/
│        └─ BaseEntity
├─ Standard
│  └─ util/
└─ domain
   └─ question
      ├─ controller
      ├─ service
      ├─ repository
      ├─ entity
      ├─ dto
      └─ exception

🧭 브랜치 전략 & 컨벤션

  • 브랜치: main(배포), feat/*, hotfix/*

👥 팀 & 역할

이름 담당
정다솔 FE, 마이페이지
홍석환 서비스
장근영 결제, GET 위주 API
김도하 회원
이승원 프로필, 프리랜서, S3
김찬종 채팅

🧩 팀 회고 요약

어려웠던 점

  • 연관관계/조회: 비연관 엔티티 속성 조회 방법 선택의 난점(정다솔), 복잡한 연관관계 모델링(홍석환)
  • JPA 상속 전략 선택: SINGLE_TABLE/JOINED/TABLE_PER_CLASS 트레이드오프(이승원)
  • 보안/실시간: WebSocket 인증/인가, STOMP 흐름, Principal 처리(김찬종)
  • 리뷰/협업: 미숙한 상태에서의 PR 리뷰 난이도(이승원, 김도하, 홍석환)
  • 우선순위/시간관리: 트러블슈팅·기술 로그 병행의 일정 관리(장근영)

새롭게 배운 점

  • Security/JWT 플로우 심화 및 오류/상태코드 관리(정다솔, 김도하)
  • JPA 매핑 확장: @ElementCollection, @Embedded 활용(이승원)
  • 파일 업로드 패턴: 서버 업로드 vs Presigned URL(이승원)
  • WebSocket/STOMP: 핸들러/인터셉터, Principal 접근 방식(김찬종)
  • 운영 관점: Refresh 쿠키 Path 최소화, Hikari autoCommit, 로깅 클래스, AuthenticationManager 주입(장근영)
  • JPA 쿼리 이해: Pageable DB 페이징, @Query 옵션(nativeQuery 등)(홍석환)

개선할 점

  • 일정 관리: 기능 명세 단위 관리로 협업 효율화(정다솔)
  • 코드 품질: S3 디렉토리 분류 로직 enum 리팩토링(이승원), 정규화/도메인 연동(채팅/버튼)(김찬종)
  • 운영 안정성: 외부 API 타임아웃 설정, 시큐리티 엔드포인트 최적화, 테스트 코드 보강(장근영)
  • 리소스 보호: 메일 전송 제한 등 Rate Limiting(김도하)
  • 성능: 레포지토리 과다 호출 감소(홍석환)

향후 개선 로드맵

  • CI/CD 파이프라인 구축, N+1 개선(정다솔)
  • 캔버스 실시간 DB 연동으로 영속성 강화(김찬종)
  • 코드 컨벤션 통일: DTO 표기, 트랜잭션 시작 계층, ResponseEntity 사용 기준(장근영)
  • JPA 연관/조회 최적화로 쿼리 성능 개선(김도하)
  • Git 전략: PR 대상 브랜치를 develop로 일원화, main은 배포용(홍석환)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors