블레이버스 해커톤 2025 - Highlight 팀의 실시간 경매 플랫폼 백엔드 API 서버
실시간 경매 시스템을 통해 사용자가 상품에 입찰하고, 즉시 구매할 수 있는 온라인 경매 플랫폼의 백엔드 서비스입니다. WebSocket을 활용한 실시간 입찰, JWT 기반 인증, AWS S3 이미지 관리, SMS 인증 등의 기능을 제공합니다.
- Spring Boot 3.4.5 (Java 17)
- Spring Data JPA - 데이터 액세스 레이어
- Spring Security - 인증 및 보안
- Spring WebSocket - 실시간 통신 (STOMP)
- MySQL 8.0 - 메인 데이터베이스 (AWS RDS)
- AWS S3 - 이미지 파일 저장소
- H2 - 테스트용 인메모리 데이터베이스
- JWT (JSON Web Token) - Access/Refresh Token 기반 인증
- CoolSMS - SMS 휴대폰 인증
- AWS EC2 - 서버 호스팅 (프리티어)
- Docker & Docker Compose - 컨테이너 환경
- Gradle 8.4 - 빌드 도구
- Swagger/OpenAPI 3.0 - API 문서화
- Spring Actuator - 헬스체크 및 모니터링
src/main/java/com/highlight/highlight_backend/
├── config/ # 설정 클래스들
│ ├── SecurityConfig.java
│ ├── WebSocketConfig.java
│ └── SwaggerConfig.java
├── controller/ # REST API 컨트롤러 (18개 엔드포인트)
│ ├── user/ # 사용자 관련 컨트롤러
│ └── dashboard/ # 대시보드 관련 컨트롤러
├── domain/ # JPA 엔티티 (11개 도메인)
├── dto/ # 데이터 전송 객체
├── service/ # 비즈니스 로직 (14개 서비스)
├── repository/ # 데이터 액세스 레이어
├── security/ # JWT 인증 필터
├── exception/ # 전역 예외 처리
└── util/ # 유틸리티 클래스들
- 휴대폰 번호를 통한 SMS 인증 회원가입/로그인
- JWT 기반 Access/Refresh Token 인증
- 마이페이지 및 사용자 정보 관리
- 사용자 랭킹 시스템
- 상품 등록, 수정, 삭제 (이미지 업로드 포함)
- 경매 일정 관리 및 자동 시작/종료
- 실시간 경매 상태 관리
- 상품 찜하기 및 알림 설정
- 연관 상품 추천 시스템
- 실시간 입찰 시스템 (WebSocket)
- 즉시구매 기능
- 입찰 히스토리 및 알림
- 결제 미리보기 및 처리
- 상품 및 경매 관리
- 사용자 관리
- 대시보드 통계
- 판매자 관리
- WebSocket을 통한 실시간 입찰 알림
- 경매 상태 실시간 업데이트
- 입찰 경합 실시간 알림
- Java 17+
- Docker & Docker Compose
- MySQL 8.0 (또는 Docker 컨테이너 사용)
git clone https://github.com/blaybus-highlight/Highlight_Backend.git
cd Highlight_Backend.env 파일을 생성하고 다음 변수들을 설정하세요:
# Database
DB_NAME=highlight_db
DB_USERNAME=highlight_user
DB_PASSWORD=your_password
DB_PORT=3306
MYSQL_ROOT_PASSWORD=root_password
DB_DDL_AUTO=update
DB_SHOW_SQL=false
# Server
SERVER_PORT=8085
# JWT
JWT_SECRET=your_jwt_secret_key
JWT_ACCESS_TOKEN_EXPIRE_TIME=1800000
JWT_REFRESH_TOKEN_EXPIRE_TIME=604800000
# AWS S3
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_REGION=ap-northeast-2
S3_BUCKET_NAME=your_bucket_name
# CoolSMS
COOLSMS_API_KEY=your_api_key
COOLSMS_API_SECRET=your_api_secret
COOLSMS_FROM_NUMBER=your_phone_number# 전체 스택 실행 (MySQL + Backend)
docker-compose up -d
# 로그 확인
docker-compose logs -f highlight-backend# 데이터베이스만 Docker로 실행
docker-compose up -d highlight-db
# 애플리케이션 로컬 실행
./gradlew bootRun./gradlew test- Swagger UI: http://ec2-52-78-128-131.ap-northeast-2.compute.amazonaws.com:8085/swagger-ui/index.html
- OpenAPI JSON: http://ec2-52-78-128-131.ap-northeast-2.compute.amazonaws.com:8085/api-docs
- Swagger UI: http://localhost:8085/swagger-ui/index.html
- OpenAPI JSON: http://localhost:8085/api-docs
POST /api/auth/signup- 회원가입POST /api/auth/login- 로그인POST /api/auth/phone/send- SMS 인증 코드 발송POST /api/auth/phone/verify- SMS 인증 코드 검증
GET /api/products- 상품 목록 조회POST /api/products- 상품 등록GET /api/products/{id}- 상품 상세 조회PUT /api/products/{id}- 상품 수정
GET /api/auctions- 경매 목록 조회POST /api/auctions/{id}/start- 경매 시작POST /api/auctions/{id}/end- 경매 종료GET /api/auctions/{id}/status- 경매 상태 조회
POST /api/bids- 입찰하기GET /api/bids/auction/{auctionId}- 경매별 입찰 내역POST /api/buy-now- 즉시구매
Internet Gateway
↓
Application Load Balancer
↓
EC2 Instance (t2.micro)
├── Spring Boot Application (Port 8085)
├── MySQL Container (Port 3306)
└── Docker Network
↓
AWS S3 Bucket (이미지 저장)
- User - 사용자 정보
- Product - 상품 정보
- Auction - 경매 정보
- Bid - 입찰 정보
- ProductImage - 상품 이미지
- ProductWishlist - 상품 찜
- ProductNotification - 상품 알림
- Seller - 판매자 정보
- Admin - 관리자 정보
# 전체 테스트 실행
./gradlew test
# 특정 테스트 클래스 실행
./gradlew test --tests "com.highlight.highlight_backend.*"
# 테스트 커버리지 확인
./gradlew jacocoTestReport# 애플리케이션 상태 확인
curl http://localhost:8085/actuator/health
# 메트릭 확인
curl http://localhost:8085/actuator/metrics- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
이 프로젝트는 MIT 라이선스 하에 있습니다. 자세한 내용은 LICENSE 파일을 참조하세요.
| 이름 | 역할 | GitHub |
|---|---|---|
| 전우선 | 백엔드 개발 | @wooxexn |
| 탁찬홍 | 백엔드 개발 | @Takch02 |
📧 문의사항: 프로젝트 관련 문의사항이 있으시면 GitHub Issues를 통해 연락 부탁드립니다.