Skip to content

prgrms-web-devcourse-final-project/WEB5_7_4Please_BE

Repository files navigation

💰팀 4줘 프로젝트 - Deal4U

🔗 배포 링크

http://www.deal4u.shop/


💸프로젝트 소개

실시간 입찰 시스템을 도입한 중고 경매 플랫폼입니다.

이메일 인증 기반의 회원 가입부터 상품 등록, 경매, 결제까지 전 과정을 지원하는 경매 플랫폼입니다. 정교한 입찰 시스템과 시간 제한 기반의 정산 절차를 통해 안전하고 투명한 거래 환경을 제공합니다.


📌 주요 기능

회원 관리

  • 회원 가입: 이메일 인증 후 가입, 비밀번호 패턴 검증, 닉네임 중복 체크
  • 로그인: 소셜 로그인, 비밀번호 재발급 지원
  • 회원 정보 관리: 닉네임 수정, 회원 탈퇴 (진행 중인 경매가 없을 때만 가능)
  • 이력 조회: 판매 이력, 입찰 내역 확인

상품 관리

  • 상품 등록: 상품명, 카테고리, 설명, 이미지(1-4장), 썸네일, 주소 입력
  • 상품 제거: 낙찰 완료 전 상품 삭제

경매 시스템

  • 경매 시작: 경매 기간, 시작가 설정, 즉시 입찰가 옵션
  • 응찰: 최고가 입찰자가 낙찰, 동일가격 시 시간순 우선
  • 즉시 입찰: 설정된 즉시 입찰가로 바로 구매
  • 경매 취소: 낙찰 전까지 가능

결제 및 정산

  • 결제 프로세스: 배송지 입력 후 결제 진행
  • 시간 제한: 낙찰자 24시간, 차상위 입찰자 48시간
  • 차상위 입찰자 시스템: 1차(최상위) 낙찰자 결제 실패 시 차상위자에게 기회 제공

⚙ 기술 스택

언어

Java
Java 21

프레임 워크 및 라이브러리

Spring Boot
Spring Boot 3.4.3
React
React
Spring Security
Spring Security
Spring Data JPA
Spring Data JPA
JWT
JWT

데이터 베이스

MySQL
MySQL

협업 도구

Git
Git
GitHub
GitHub
Notion
Notion

문서

Swagger
Swagger

테스트

Notion
Postman

인프라

Arch_Amazon-EC2_64
AWS EC2
Arch_Amazon-RDS_64
AWS RDS
Arch_Amazon-S3-on-Outposts_64
AWS S3
Nginx
Nginx

💁‍♂️ 프로젝트 팀원

PO 백엔드 리더 AWS 팀원 팀원
허재원
고지훈
이선빈
김성원
안필온
박유한
정미광
정미광
박유한
진주열

🛠️ 역할 분담

이름 담당 기능
고지훈 프로젝트 총괄
S3 이미지 업로드
인프라 설정 및 관리
락 설정 및 관리
알림 시스템
BugFix
김성원 입찰 도메인 담당
리뷰 도메인 담당
웹 소켓
스케줄러
마이페이지
GitHub Action
BugFix
박유한 AWS 담당
인프라 설정 및 관리
결제 및 주문 도메인 담당
정산 도메인 담당
스케줄러 작성
배송 도메인 담당
마이페이지
BugFix
GitHub Action
정미광 상품-경매 도메인 담당
위시리스트 도메인 담당
BugFix
진주열 회원 도메인 담당
시큐리티 설정 및 보안
소셜 로그인(Oauth2.0) 연동
BugFix

🛠️ 프로젝트 아키텍쳐

시스템 아키텍처

Image

ERD

image

Event Storming

🔗 https://www.figma.com/board/HZuZEZW5UYBZts5dtOUH8j/4%EC%A4%98---Domain?node-id=0-1&p=f&t=8vs7HYxMhQDLTEYJ-0

image

화면 구성

메인페이지

image image

로그인 및 회원가입

image

회원탈퇴

image

회원 정보 수정

image

마이페이지 내 입찰 내역

image

마이페이지 내 판매 내역

image

마이페이지 관심 목록

image

판매하기

image

경매 결제

image

결제하기

image

상품 설명

image

실시간 입찰 내역

image

입찰하기

image

판매자 정보 조회

image

전체 상품 조회

image

상품 검색

image

협업 방식

🛠️ 브랜치 전략

Image20250428163351

  1. 이슈 생성

    • GitHub 이슈를 통해 작업 항목 정의
  2. 브랜치 생성

    • dev 브랜치에서 이슈별 작업 브랜치 생성
    • 브랜치 명명 규칙 예시: feat/이슈번호/JJY
  3. PR 및 코드 리뷰

    • 작업 완료 후 Pull Request(PR) 생성
    • 팀원 간 코드 리뷰 진행
  4. Merge 및 브랜치 정리

    • 리뷰 완료 후 dev 브랜치로 Squash and Merge
    • 병합 후 해당 이슈 브랜치 삭제하여 브랜치 난립 방지
    • dev 브랜치 최신 상태 유지

🧑‍💻 코딩 컨벤션

스타일 가이드

패키지 구조

deal4u/
├── FourPleaseBeApplication.java    # 스프링 부트 메인 실행 파일
├── config/                         # 환경 설정 (보안, CORS, Swagger, 인코딩 등)
├── domain/                         # 비즈니스 도메인 계층
│   ├── auction/                    # 상품-경매 도메인
│   │   ├── controller/              
│   │   ├── dto/                     
│   │   ├── entity/                  
│   │   ├── factory/                 
│   │   ├── mapper/                  
│   │   ├── reader/                    
│   │   ├── repository/                
│   │   ├── rules/                     
│   │   ├── service/                   
│   │   └── validator/                 
│   ├── auth/                       # 인증 도메인
│   │   ├── controller/               
│   │   ├── dto/                      
│   │   ├── entity/                   
│   │   ├── filter/                  
│   │   ├── handler/                   
│   │   ├── model/                   
│   │   ├── repository/               
│   │   ├── service/                  
│   │   └── token/                
│   ├── bid/                         # 입찰 도메인
│   │   ├── controller/               
│   │   ├── dto/                      
│   │   ├── entity/                   
│   │   ├── mapper/                   
│   │   ├── repository/               
│   │   └── service/                  
│   ├── common/                      # 공통 도메인
│   ├── file/                        # 파일 도메인
│   │   ├── config/                
│   │   ├── entity/                   
│   │   ├── service/                   
│   │   ├── type/                  
│   │   └── util/                 
│   ├── member/                      # 멤버 도메인
│   │   ├── controller/                
│   │   ├── dto/                      
│   │   ├── entity/                    
│   │   ├── mypage/                   
│   │   │   ├── controller/                      
│   │   │   ├── dto/                      
│   │   │   ├── mapper/                      
│   │   │   └── service/                      
│   │   ├── repository/                
│   │   └── service/                   
│   ├── notification/                # 알림 도메인
│   │   ├── email/                
│   │   └── pushnotification/                       
│   │       ├── controller/                   
│   │       ├── dto/                    
│   │       ├── entity/                    
│   │       ├── exception/                   
│   │       ├── mapper/                    
│   │       ├── message/                    
│   │       ├── repository/                    
│   │       └── service/                                                 #              # 
│   ├── order/                       # 주문 도메인
│   │   ├── controller/                
│   │   ├── dto/                       
│   │   ├── entity/                    
│   │   ├── mapper/                    
│   │   ├── repository/                
│   │   ├── service/                   
│   │   └── util/                
│   ├── payment/                      # 결제 도메인
│   │   ├── config/               
│   │   ├── controller/                      
│   │   ├── dto/                      
│   │   ├── entity/                   
│   │   ├── mapper/                   
│   │   ├── repository/               
│   │   └── service/                
│   ├── review/                       # 리뷰 도메인
│   │   ├── controller/                
│   │   ├── dto/                       
│   │   ├── entity/                    
│   │   ├── mapper/                    
│   │   ├── repository/                
│   │   └── service/                 
│   ├── settlement/                   # 정산 도메인
│   │   ├── controller/                
│   │   ├── entity/                    
│   │   ├── mapper/                    
│   │   ├── repository/                
│   │   └── service/                 
│   ├── shipment/                     # 배송 도메인
│   │   ├── controller/                
│   │   ├── dto/                       
│   │   ├── entity/                    
│   │   ├── mapper/                    
│   │   ├── repository/                
│   │   └── service/                
│   ├── wishlist/                     # 위시리스트 도메인
│   │   ├── controller/               
│   │   ├── dto/                      
│   │   ├── entity/                   
│   │   ├── mapper/                   
│   │   ├── repository/               
│   │   ├── service/                  
│   │   └── validator/                
├── global/                           # 전역 설정
│   ├── exception/                    # 전역 예외 처리 (GlobalExceptionHandler 등)
│   ├── lock/                         # 전역 락 관련 처리 
│   ├── properties/                   # 전역 S3 관련 처리 
│   ├── scheduler/                    # 전역 스케줄러 처리 
│   └── util/                         # 전역 유틸리티 클래스 (암호화, 유효성 검증 등)

🤔 전체적인 과정 및 개선 과정

https://drive.google.com/file/d/1IE1btKPtBWgmXyU6UdWVOH_c1h7N-uWT/view?usp=sharing

About

프로그래머스 백엔드 데브코스 5기 7회차 4팀 최종 프로젝트 BE입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5