Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
17abe26
docs(template): PR 템플릿 추가
ddooyn Aug 28, 2026
e8d2d44
chore(infra): 개발 인프라 구성
ddooyn Aug 28, 2026
aa80afa
docs(template): Issue 템플릿 추가
ddooyn Aug 28, 2026
6e3c2a9
feat(domain): 핵심 도메인 entity 및 repository 추가
ddooyn Aug 28, 2026
9272461
Merge pull request #3 from drop-it-dev/feature/domain-entity-model
jungu8745 Aug 28, 2026
1ca9eb4
Merge pull request #1 from drop-it-dev/chore/setup-infra
jungu8745 Aug 28, 2026
363091b
fix: 엔티티 생성 및 수정 시간 자동 기록
Aug 31, 2026
48abfa5
feat: 상품 등록 서비스 구현
Aug 31, 2026
406f485
refactor: 상품 응답 DTO 변환 방식 단순화
Aug 31, 2026
187dcb6
feat: 상품 등록 API 구현
Aug 31, 2026
f951089
feat(global): JPA Auditing 활성화
ddooyn Aug 31, 2026
5a7e8f9
feat(global): 공통 예외 처리 구조 추가
ddooyn Aug 31, 2026
8fa27b2
fix(entity): BaseEntity 시간 필드를 JPA Auditing으로 관리
ddooyn Aug 31, 2026
a97fabc
Merge pull request #6 from drop-it-dev/feature/global-exception-handler
ddooyn Aug 31, 2026
8899b20
feat: 상품 조회 수정 삭제 API 구현
Aug 31, 2026
f307395
Merge branch 'dev' into feature/product
Aug 31, 2026
f0d1b6f
fix : BaseEntity 수정
Aug 31, 2026
8339aa0
feat: 상품 공통 예외 처리 적용
Aug 31, 2026
6760b77
fix : BaseEntitytest 테스트코드 삭제
Aug 31, 2026
d74e13c
feature(User): Changed User entity to have a unique username
gustavors88 Aug 31, 2026
cd3129f
feat(drop): 드랍 생성 API 구현
ddooyn Aug 31, 2026
8d7606f
feat(users): add User request and response DTOs
gustavors88 Aug 31, 2026
d9f813f
feat(users): add User Controller
gustavors88 Aug 31, 2026
d93f37c
feat(users): add User Service
gustavors88 Aug 31, 2026
7036a63
feat(users): add to UserRepository methods existsByEmail and existsBy…
gustavors88 Aug 31, 2026
910942b
feat(drop): 드랍 조회 API 구현, 상태 필드를 도메인 메서드로 변경
ddooyn Aug 31, 2026
f38a768
feat(drop): 드랍 수정 API 구현
ddooyn Aug 31, 2026
90cd39d
feat(drop): 드랍 삭제 API 구현
ddooyn Aug 31, 2026
03b4f29
Merge pull request #9 from drop-it-dev/feature/product
ddooyn Sep 1, 2026
a47645f
fix(users): add to the User entity update methods for its fields (upd…
gustavors88 Sep 1, 2026
d322b10
Merge remote-tracking branch 'origin/dev' into feature/User-Basic-CRUD
gustavors88 Sep 1, 2026
8e147a3
feat(users): add Error codes to be utilized by UserService (USER_NOT_…
gustavors88 Sep 1, 2026
bf400c5
feat(users): modified UserService ServiceExceptions specified in the …
gustavors88 Sep 1, 2026
f4a027a
Merge pull request #11 from drop-it-dev/feature/drop-crud
ddooyn Sep 1, 2026
79a1410
Merge pull request #10 from drop-it-dev/feature/User-Basic-CRUD
jungu8745 Sep 1, 2026
62672e5
refactor(drop): 상품 price 필드를 드랍으로 이동
ddooyn Sep 1, 2026
7d09fec
refactor(drop): 가격을 원화 정수 단위로 제한
ddooyn Sep 1, 2026
e1e4863
feat(drop): 드랍 visible 필드 추가 및 공개여부 관리 API 추가
ddooyn Sep 1, 2026
3ab2255
test(product): 상품 테스트에 price 필드 제거 반영
ddooyn Sep 1, 2026
fd28dcf
test(drop): 드랍 테스트 추가
ddooyn Sep 1, 2026
8b9bfbd
fix(drop): 할인율 100까지 지원
ddooyn Sep 1, 2026
ff34d73
test(drop): 할인율 변경사항 반영
ddooyn Sep 1, 2026
a403b98
Merge pull request #15 from drop-it-dev/feature/drop-price-visible
ddooyn Sep 1, 2026
63222e7
feat: SellerProfile CRUD 구현
jungu8745 Sep 1, 2026
539caba
feat: SellerProfile 판매자 권한 검증 추가
jungu8745 Sep 1, 2026
d61facd
test: SellerProfile CRUD 테스트 추가
jungu8745 Sep 1, 2026
3fed4dc
feat(product): 판매자별 상품 페이징 조회 API 구현
Sep 2, 2026
568a3e9
feat(drop) 판매자별 공개 드롭조회 및 비공개 드롭조회
Sep 2, 2026
cf2da5e
feat(drop): 전체 공개 드롭 페이징 조회 구현
Sep 2, 2026
b64381f
Merge pull request #16 from drop-it-dev/feature/seller-profile-crud
ddooyn Sep 2, 2026
695d23c
feat(order): OrderItem 주문 스냅샷 모델 추가
ddooyn Sep 2, 2026
88a806d
feat(order): 주문 상태와 재고 변경 도메인 추가
ddooyn Sep 2, 2026
a0ce189
feat(order): 주문 생성, 조회, 취소 API 추가
ddooyn Sep 2, 2026
f3a24ab
Merge pull request #20 from drop-it-dev/feature/drop-seller-list
jungu8745 Sep 3, 2026
a733438
Merge branch 'dev' into feature/product-seller-list
ddooyn Sep 3, 2026
dd7b0d3
Merge pull request #19 from drop-it-dev/feature/product-seller-list
ddooyn Sep 3, 2026
eb59281
Merge pull request #21 from drop-it-dev/feature/order-crud
ddooyn Sep 3, 2026
052e453
feat(drop): 검색 상태 정렬 쿼리 DSL로 구현
Sep 3, 2026
7132824
feat(drop): 검색 상태 정렬 쿼리 DSL로 구현
Sep 3, 2026
49fd54b
chore(gradle): Add Spring Security and JWT dependencies
gustavors88 Sep 3, 2026
e302138
feat(jwt): JwtProperties configuration
gustavors88 Sep 3, 2026
92d9fa2
feat(jwt): Added JWT token issuance and verification features"
gustavors88 Sep 3, 2026
a453c59
feat(security): Add JWT authentication object and authority conversion
gustavors88 Sep 3, 2026
a44091e
feat(security): Add JWT authentication filter and exception response …
gustavors88 Sep 3, 2026
132c315
test(security): Add tests for JWT issuance and authentication filter
gustavors88 Sep 3, 2026
266cce3
chore(grade): Add Spring security test dependency.
gustavors88 Sep 3, 2026
f85814c
Merge remote-tracking branch 'origin/dev' into feature/Security-JWT
gustavors88 Sep 3, 2026
b82c4f1
feat(drop): 검색 상태 정렬 쿼리 DSL로 구현
Sep 3, 2026
3df2493
Merge pull request #24 from drop-it-dev/feature/Security-JWT
ddooyn Sep 4, 2026
0426b60
feat(user): add soft deletion support for users
gustavors88 Sep 5, 2026
1a5fd5b
feat(auth): add signup login and token reissue APIs
gustavors88 Sep 5, 2026
e2163e7
refactor(user): use JWT authenticated user for user APIs
gustavors88 Sep 5, 2026
be15a52
Merge pull request #26 from drop-it-dev/feature/auth-user
ddooyn Sep 5, 2026
7f56525
Merge origin/dev into feature/drop-search-querydsl
Sep 7, 2026
652b5aa
refactor(order): 주문에 CurrentUserId 적용
ddooyn Sep 5, 2026
a4da909
test(product,drop): 판매자별 페이징 조회 테스트 보완
Sep 7, 2026
b630694
Merge pull request #27 from drop-it-dev/refactor/order-authuser
ddooyn Sep 7, 2026
d84fc43
refactor(product,drop): JWT 로그인 사용자 ID 적용
Sep 7, 2026
2c3b156
refactor: SellerProfile 로그인 사용자 적용
jungu8745 Sep 7, 2026
f48fc22
Merge pull request #29 from drop-it-dev/feature/seller-profile-curren…
ddooyn Sep 7, 2026
9279490
Merge pull request #28 from drop-it-dev/feature/drop-search-querydsl
ddooyn Sep 7, 2026
06add6c
ci(workflow): CI 워크플로우 생성, actuator, parameter store 의존성 추가
ddooyn Sep 7, 2026
9a896fc
Merge pull request #30 from drop-it-dev/ci/workflow
ddooyn Sep 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
DB_HOST=
DB_PORT=
DB_NAME=
DB_USERNAME=
DB_PASSWORD=
MYSQL_ROOT_PASSWORD=
REDIS_HOST=
REDIS_PORT=
JWT_SECRET=
29 changes: 29 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
name: Bug
about: 버그 또는 예상하지 못한 동작을 수정하기 위한 이슈입니다.
title: "[Bug] "
labels: "bug"
assignees: ""
---

## 문제 상황

발생한 문제를 작성해주세요.

## 재현 방법

1.
2.
3.

## 기대 동작

정상적으로 기대했던 동작을 작성해주세요.

## 실제 동작

실제로 발생한 동작을 작성해주세요.

## 참고 사항

에러 로그, 스크린샷 등 문제 파악에 도움이 되는 내용이 있다면 첨부해주세요.
21 changes: 21 additions & 0 deletions .github/ISSUE_TEMPLATE/chore.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: Chore
about: 환경 설정, 인프라, 문서 등의 작업을 위한 이슈입니다.
title: "[Chore] "
labels: "chore"
assignees: ""
---

## 작업 내용

환경 설정, 인프라, 문서 등의 작업 내용을 작성해주세요.

## 세부 작업

- [ ] 작업 1
- [ ] 작업 2
- [ ] 작업 3

## 참고 사항

추가적으로 공유할 내용이 있다면 작성해주세요.
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
blank_issues_enabled: false
contact_links: []
21 changes: 21 additions & 0 deletions .github/ISSUE_TEMPLATE/feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: Feature
about: 새로운 기능 구현을 위한 이슈입니다.
title: "[Feature] "
labels: "feature"
assignees: ""
---

## 작업 내용

구현할 기능 또는 작업 내용을 작성해주세요.

## 세부 작업

- [ ] 작업 1
- [ ] 작업 2
- [ ] 작업 3

## 참고 사항

관련 문서, 이미지, 논의 내용 등이 있다면 작성해주세요.
25 changes: 25 additions & 0 deletions .github/ISSUE_TEMPLATE/refactor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
name: Refactor
about: 기능 변경 없이 코드 또는 구조를 개선하기 위한 이슈입니다.
title: "[Refactor] "
labels: "refactor"
assignees: ""
---

## 리팩토링 대상

리팩토링할 코드 또는 구조를 작성해주세요.

## 개선 이유

현재 구조의 문제점 또는 개선하려는 이유를 작성해주세요.

## 세부 작업

- [ ] 작업 1
- [ ] 작업 2
- [ ] 작업 3

## 참고 사항

추가적으로 공유할 내용이 있다면 작성해주세요.
24 changes: 24 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
## 🛠️ 주요 변경 사항
> 이번 PR에서 작업한 내용을 간략히 요약해주세요. (기능 추가, 버그 수정, 리팩토링 등)
-


## ✨ 작업 내용
> 코드에서 변경된 핵심 내용을 설명해주세요.
-


## ⚠️ 주의 사항 및 특이사항
> 리뷰어가 특별히 참고해야 할 부분이나 고민했던 점이 있다면 적어주세요.
- [ ] (예: DB 인덱스 추가 필요, 특정 API 성능 테스트 여부 등)


## 💡 관련 이슈 (Optional)
> 연관된 이슈 번호를 작성해주세요. (예: Close #123)
-


## 🧪 테스트 결과 (Optional)
> 기능이 정상 동작하는지 확인한 테스트 결과(포스트맨, 단위 테스트 등)를 첨부하거나 설명해주세요.
- [ ] 단위 테스트 통과
- [ ] 통합 테스트 통과
184 changes: 184 additions & 0 deletions .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
name: CI/CD Pipeline

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

# OIDC 토큰 요청 권한
permissions:
id-token: write # OIDC 토큰 요청용
contents: read # 코드 체크아웃용 (체크아웃 - Repo에 있는 코드를 Runner에 옮김)

jobs:
build:
runs-on: ubuntu-latest
outputs:
image_tag: ${{ steps.vars.outputs.short_sha }}

steps:
# Step 1: 코드 가져오기
- name: Checkout code
uses: actions/checkout@v6

# Step 2: 커밋 해시 추출
- name: Set short SHA
id: vars
run: echo "short_sha=$(echo ${{ github.sha }} | cut -c1-7)" >> $GITHUB_OUTPUT

# Step 3: 스프링 빌드를 위한 Java 21 설치
- name: Setup Java 21
uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'corretto'

# Step 4: Gradle 캐시
- name: Cache Gradle packages
uses: actions/cache@v5
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

# Step 5: 테스트 실행
- name: Run tests
run: ./gradlew test

# Step 6: JAR 빌드
- name: Build JAR
run: ./gradlew bootJar

# Step 7: AWS 자격증명 - OIDC
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ vars.AWS_ROLE_ARN }}
aws-region: ${{ vars.AWS_REGION }}

# Step 8: ECR 로그인
- name: Login to ECR
uses: aws-actions/amazon-ecr-login@v2

# Step 9: Docker 빌드 및 push
- name: Build and push Docker image
run: |
SHORT_SHA=${{ steps.vars.outputs.short_sha }}
IMAGE_URI=${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_REGION }}.amazonaws.com/${{ vars.ECR_REPOSITORY }}

# Docker 빌드 및 push
docker build -t $IMAGE_URI:$SHORT_SHA .
# docker build --platform linux/arm64 -t $IMAGE_URI:$SHORT_SHA .
docker push $IMAGE_URI:$SHORT_SHA

echo "✅ Pushed: $IMAGE_URI:$SHORT_SHA"

# deploy:
# needs: build
# if: github.ref == 'refs/heads/main' # main push에서만 배포 (PR에서는 CI만 실행)
# runs-on: ubuntu-latest
#
# steps:
# # Step 1: AWS 자격증명 - OIDC
# - name: Configure AWS credentials
# uses: aws-actions/configure-aws-credentials@v6
# with:
# role-to-assume: ${{ vars.AWS_ROLE_ARN }}
# aws-region: ${{ vars.AWS_REGION }}
#
# # Step 2: Launch Template 새 버전 생성 (User Data의 IMAGE_TAG를 새 커밋 SHA로 교체)
# - name: Update Launch Template
# env:
# IMAGE_TAG: ${{ needs.build.outputs.image_tag }}
# AWS_ACCOUNT_ID: ${{ vars.AWS_ACCOUNT_ID }}
# AWS_REGION: ${{ vars.AWS_REGION }}
# ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY }}
# LAUNCH_TEMPLATE_ID: ${{ vars.LAUNCH_TEMPLATE_ID }}
# run: |
# ECR_URI="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${ECR_REPOSITORY}"
#
# USER_DATA=$(cat <<'USERDATA' | sed "s|__IMAGE_TAG__|${IMAGE_TAG}|g; s|__AWS_ACCOUNT_ID__|${AWS_ACCOUNT_ID}|g; s|__AWS_REGION__|${AWS_REGION}|g; s|__ECR_REPOSITORY__|${ECR_REPOSITORY}|g" | base64 -w 0
# #!/bin/bash
# set -e
# AWS_REGION="__AWS_REGION__"
# AWS_ACCOUNT_ID="__AWS_ACCOUNT_ID__"
# ECR_REPOSITORY="__ECR_REPOSITORY__"
# IMAGE_TAG="__IMAGE_TAG__"
# ECR_URI="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${ECR_REPOSITORY}"
# dnf update -y
# dnf install -y docker
# systemctl enable docker
# systemctl start docker
# aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com
# docker pull ${ECR_URI}:${IMAGE_TAG}
# docker run -d -p 8080:8080 --restart unless-stopped --name ci-demo -e SPRING_PROFILES_ACTIVE=prod ${ECR_URI}:${IMAGE_TAG}
# USERDATA
# )
#
# NEW_VERSION=$(aws ec2 create-launch-template-version \
# --launch-template-id ${LAUNCH_TEMPLATE_ID} \
# --source-version '$Latest' \
# --launch-template-data "{\"UserData\":\"${USER_DATA}\"}" \
# --query 'LaunchTemplateVersion.VersionNumber' \
# --output text)
#
# echo "✅ Launch Template v${NEW_VERSION} 생성 완료"
#
# aws ec2 modify-launch-template \
# --launch-template-id ${LAUNCH_TEMPLATE_ID} \
# --default-version ${NEW_VERSION}
#
# echo "✅ 기본 버전 → v${NEW_VERSION} 변경 완료"
#
# # Step 3: Instance Refresh 시작
# - name: Start Instance Refresh
# id: refresh
# env:
# ASG_NAME: ${{ vars.ASG_NAME }}
# run: |
# REFRESH_ID=$(aws autoscaling start-instance-refresh \
# --auto-scaling-group-name ${ASG_NAME} \
# --preferences '{
# "MinHealthyPercentage": 100,
# "InstanceWarmup": 120
# }' \
# --query 'InstanceRefreshId' \
# --output text)
#
# echo "refresh_id=${REFRESH_ID}" >> $GITHUB_OUTPUT
# echo "✅ Instance Refresh 시작: ${REFRESH_ID}"
#
# # Step 4: Instance Refresh 완료 대기
# - name: Wait for Instance Refresh
# env:
# ASG_NAME: ${{ vars.ASG_NAME }}
# REFRESH_ID: ${{ steps.refresh.outputs.refresh_id }}
# run: |
# echo "⏳ Instance Refresh 완료 대기 중..."
#
# for i in $(seq 1 30); do
# STATUS=$(aws autoscaling describe-instance-refreshes \
# --auto-scaling-group-name ${ASG_NAME} \
# --instance-refresh-ids ${REFRESH_ID} \
# --query 'InstanceRefreshes[0].Status' \
# --output text)
#
# echo "시도 ${i}/30 - 상태: ${STATUS}"
#
# if [ "${STATUS}" = "Successful" ]; then
# echo "✅ Instance Refresh 성공! 배포 완료!"
# exit 0
# elif [ "${STATUS}" = "Failed" ] || [ "${STATUS}" = "Cancelled" ]; then
# echo "❌ Instance Refresh 실패: ${STATUS}"
# exit 1
# fi
#
# sleep 30
# done
#
# echo "❌ Instance Refresh 타임아웃 (15분 초과)"
# exit 1
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,10 @@ out/

### VS Code ###
.vscode/

### ENV ###
.env
.env.*
!.env.example
!.env.example.DS_Store
performance/reports/*.html
7 changes: 7 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM eclipse-temurin:21-jre
WORKDIR /app

COPY build/libs/*.jar app.jar

EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
Loading