Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
480e7a5
init: project initial
ht3064 Jan 19, 2025
4c7ee65
chore: 프로젝트 초기 세팅 (#4)
ht3064 Jan 20, 2025
5e7b1c9
chore: Swagger 설정 (#6)
ht3064 Jan 21, 2025
7c596f4
chore: actuator 설정 (#10)
ht3064 Jan 21, 2025
8d841e1
chore: Spring Security 설정 (#13)
ht3064 Jan 22, 2025
c044afb
chore: 공통 응답 로직 설정 (#14)
chsubinn Jan 22, 2025
fdb11a5
chore: 공통 예외 처리 로직 구현(Exception Handler, ErrorCode, ErrorDetail)(#9) …
willjsw Jan 27, 2025
941d9a8
chore: CI/CD 파이프라인 구축 (#20)
ht3064 Jan 29, 2025
6ee204f
chore: Docker Compose 적용 (#22)
ht3064 Jan 30, 2025
afc3f1a
chore: Redis 설정 (#23)
ht3064 Jan 31, 2025
73c0d7b
chore: application.yml 환경 분리 및 DB 설정 (#25)
ht3064 Jan 31, 2025
7198ca9
feat: 소셜 로그인 구현 (#26)
ht3064 Feb 3, 2025
5693b56
feat: BaseTimeEntity 생성 (#30)
ht3064 Feb 3, 2025
5d23c28
refactor: 공통예외처리 로직 및 구조 수정 (#31)
willjsw Feb 3, 2025
1f2a6a8
chore: 로그인한 멤버 조회 유틸리티 구현 (#34)
ht3064 Feb 4, 2025
90957b5
feat: Swagger Authorization 헤더 추가 (#36)
ht3064 Feb 5, 2025
d5d6a3e
fix: 도커 컨테이너 Timezone Asia/Seoul로 변경 (#38)
ht3064 Feb 5, 2025
915df58
feat: 회원 탈퇴 구현 (#40)
ht3064 Feb 7, 2025
6cc0090
chore: Querydsl 설정 (#42)
ht3064 Feb 7, 2025
0c40236
feat: 팀 생성 및 참여 구현 (#44)
chsubinn Feb 9, 2025
1240c70
refactor: Spotless Code Formatter 적용 (#51)
ht3064 Feb 10, 2025
93f0a8e
feat: 회원 프로필 이미지 및 닉네임 변경 기능 구현 (#47)
ht3064 Feb 10, 2025
5826153
chore: Validation 및 Internal Server Error 처리 (#55)
ht3064 Feb 11, 2025
5ed8841
feat: 회원 정보 조회 (#59)
ht3064 Feb 12, 2025
cbf6783
feat: 로그아웃 구현 (#58)
ht3064 Feb 12, 2025
6405f43
feat: 팀 수정, 팀 삭제, 팀 기본 정보 조회 기능 구현 (#53)
chsubinn Feb 12, 2025
810d9ed
fix: image request dto validation 수정 (#64)
ht3064 Feb 12, 2025
ea71987
feat: project/sprint/task 도메인 추가 (#56)
willjsw Feb 12, 2025
1c34aac
feat: 팀 도메인에 이모지 추가 (#66)
chsubinn Feb 12, 2025
770695b
feat: 회원이 참여한 팀 목록 조회 (#67)
ht3064 Feb 13, 2025
f172b6e
test: 테스트 격리 (#76)
ht3064 Feb 14, 2025
092229b
feat: 이미지 삭제 스케줄러 추가 (#72)
ht3064 Feb 15, 2025
f4101ee
feat: 프로젝트 생성/조회 구현 (#68)
willjsw Feb 15, 2025
e2a4399
refactor: LocalDateTime 타입 LocalDate 변경 및 JsonProperty 어노테이션 제거 (#80)
willjsw Mar 2, 2025
ba273a1
feat: 팀에 속한 회원 이미지, 회원 목록, 팀장 조회 (#78)
chsubinn Mar 2, 2025
25d6eca
feat: 스프린트 생성 기능 구현 (#83)
ht3064 Mar 2, 2025
156ab09
refactor: Swagger API 목록 정렬 (#89)
ht3064 Mar 4, 2025
2fb289c
feat: 스프린트 수정, 삭제 기능 구현 (#86)
ht3064 Mar 4, 2025
e63b2cc
refactor: 예외 응답에서 field 및 given 제거 (#93)
ht3064 Mar 5, 2025
92e53b8
refactor: 스프린트 제목에 번호가 자동으로 지정되도록 변경 (#95)
ht3064 Mar 5, 2025
22bc5f4
feat: 프로젝트 업데이트 구현 (#85)
willjsw Mar 5, 2025
7ba6e25
feat: Task 생성, 수정, 삭제 기능 구현 (#96)
chsubinn Mar 6, 2025
56e612e
test: 스프린트 테스트 코드 추가 (#100)
ht3064 Mar 6, 2025
515845d
feat: sos 기능 구현 & 관련 태스크 메소드 수정 (#104)
chsubinn Mar 7, 2025
5bfe36e
feat: 프로젝트 삭제/나가기 구현 (#101)
willjsw Mar 7, 2025
1cb565e
feat: 프로젝트별 스프린트 목록 조회 (#106)
ht3064 Mar 11, 2025
a3fcd83
feat: OpenAI 기반 피드백 메시지 개선 (#109)
ht3064 Mar 12, 2025
8445e44
feat: 프로젝트 가입/참여자 조회 구현 (#108)
willjsw Mar 12, 2025
23b4f60
feat: 피드백 메시지 전송 기능 구현 (#114)
ht3064 Mar 17, 2025
899c1f9
refactor: 프로젝트 목록 조회 QueryDSL 적용 (#105)
willjsw Mar 20, 2025
49409d4
feat: 팀 미팅 생성 구현 (#117)
willjsw Mar 20, 2025
d9abcdf
feat: 피드백 메시지 조회 기능 구현 (#116)
ht3064 Mar 20, 2025
fae1fd1
feat: 스프린트별 태스크 목록 조회 · 회원이 담당하고 있는 태스크 목록 조회 기능 구현 (#107)
chsubinn Mar 20, 2025
5439a43
refactor: projectParticipant 필드 수정 및 테스트케이스 반영 (#125)
willjsw Mar 20, 2025
25fc6ff
feat: 기여도 · 진척도 조회 기능 구현 (#112)
chsubinn Mar 21, 2025
658322e
refactor: 프로젝트, 스프린트 생성 시 시작 날짜를 현재 날짜로 설정되도록 변경 (#128)
ht3064 Mar 21, 2025
d582945
feat: 팀 미팅 수정/조회/삭제 (#123)
willjsw Mar 22, 2025
9ba4a3c
refactor: projectListInfoResponse 요청/응답 형식 수정 및 isParticipant, isAdmi…
willjsw Mar 22, 2025
32d65a2
fix: 기존 스프린트가 종료되지 않은 상태에서 새로운 스프린트가 생성되는 문제 수정 (#131)
ht3064 Mar 22, 2025
d9b1a03
Revert "refactor: projectListInfoResponse 요청/응답 형식 수정 및 isParticipant…
ht3064 Mar 22, 2025
5b0de6a
refactor: 프로젝트 참가자 목록 조회 API 페이지네이션 적용 (#126)
ht3064 Mar 22, 2025
ff38d30
Revert "fix: 기존 스프린트가 종료되지 않은 상태에서 새로운 스프린트가 생성되는 문제 수정 (#131)" (#136)
ht3064 Mar 22, 2025
6f91b06
fix: 기존 스프린트가 종료되지 않은 상태에서 새로운 스프린트가 생성되는 문제 수정 (#137)
ht3064 Mar 22, 2025
83a97ec
feat: 회원별 프로젝트 내 스프린트 목록 조회 기능 구현 (#132)
chsubinn Mar 23, 2025
b6cf9a8
chore: Nginx 리버스 프록시 도입 및 HTTPS 적용 (#138)
ht3064 Mar 23, 2025
e8c302e
refactor: 프로젝트 목록 조회 시 Admin 표시 (#142)
willjsw Mar 25, 2025
c37b39d
chore: SpringEnvironmentHelper 적용 (#144)
ht3064 Mar 25, 2025
d619069
feat: 프로젝트 가입 신청 목록 조회 시 request의 닉네임과 프로필 함께 조회 (#146)
chsubinn Mar 25, 2025
77a8c1d
chore: 개발 환경 ddl-auto 설정 변경 (#148)
ht3064 Mar 25, 2025
0f16243
fix: 프로젝트에서 나간 사용자(Unknown)에게 피드백 전송이 불가능하도록 수정 (#150)
ht3064 Mar 25, 2025
91aa0ed
fix: 스프린트 수정 시 마감일을 다음 스프린트 시작일 이후로 설정할 수 없도록 수정 (#153)
ht3064 Mar 26, 2025
e2e0ba4
feat: 스프린트와 태스크 조회 기능 구현 (#152)
chsubinn Mar 27, 2025
57e8da8
Revert "feat: 스프린트와 태스크 조회 기능 구현 (#152)" (#154)
chsubinn Apr 2, 2025
937abff
refactor: project 삭제 uri 수정 (#158)
willjsw Apr 3, 2025
6fb15d4
refactor: 프로젝트 기본 정보 수정 Request Dto에서 goal 필드 제거 (#160)
ht3064 Apr 4, 2025
641f233
feat: 스프린트 & 태스크 조회 기능 구현 (#155)
chsubinn Apr 5, 2025
39b12ce
fix: 팀 정보 수정 시 팀 이모지 포함 수정 (#164)
chsubinn Apr 5, 2025
4743964
refactor: 프로젝트 및 스프린트 수정 API 하나로 통합 (#165)
ht3064 Apr 5, 2025
82abe9d
fix: 스프린트 페이징 방향 처리 누락으로 인한 목록 조회 오류 수정 (#169)
ht3064 Apr 6, 2025
a491f96
refactor: Docker 네트워크 모드 bridge로 변경 (#161)
ht3064 Apr 7, 2025
c8a2294
fix: Docker bridge 네트워크 전환 후 Nginx 502 에러 수정 (#171)
ht3064 Apr 9, 2025
19979c6
fix: 태스크 진행 상태별 수정 삭제 권한 설정 (#176)
chsubinn Apr 9, 2025
be7dd48
chore: Swagger 보안 설정 (#167)
chsubinn Apr 9, 2025
03bf20b
refactor: projectInfoResponse teamName 추가 (#180)
willjsw Apr 9, 2025
ed4c590
fix: 태스크 sos 후 본인 할당 문제 수정 (#178)
chsubinn Apr 9, 2025
a4a2b47
fix: 태스크 완료 처리 후 undo 기능 추가 & SOS 상태 태스크 완료 시 예외처리 (#177)
chsubinn Apr 9, 2025
94a537e
feat: 운영 환경 구성 (#182)
ht3064 Apr 12, 2025
943c370
refactor: 개발 및 운영 환경에서 쿠키 설정 변경 (#184)
ht3064 Apr 12, 2025
326ed5e
refactor: 쿠키 CORS 세팅 임시 완화 (#186)
willjsw Apr 13, 2025
1119788
Refactor/185 cookie cors tmp (#187)
willjsw Apr 13, 2025
33a8cef
Revert "Refactor/185 cookie cors tmp (#187)" (#188)
ht3064 Apr 13, 2025
b6b3ebb
refactor: 프로젝트 참여자 나간 상태를 UNKNOWN 처리 방식에서 참여 상태로 관리하도록 개선 (#191)
ht3064 Apr 13, 2025
d6f0fb5
refactor: meetingInfoResponse 응답 필드에 meetingId 추가 (#194)
willjsw Apr 13, 2025
8e403aa
fix: 스프린트 내 태스크가 조회되지 않을 경우 예외 처리 & 팀/프로젝트/태스크 명 글자수 제한 (#195)
chsubinn Apr 13, 2025
326d293
refactor: changeProjectAdmin-> memberId -> projectParticipantId로 변경 (…
willjsw Apr 14, 2025
8da635f
refactor: projectParticipant status inactive 일 때 isParticipant 속성 fal…
willjsw Apr 14, 2025
1b7254b
refactor: projectRegistration 검증 로직 status-Active 확인하도록 수정 (#203)
willjsw Apr 14, 2025
037d5b0
Refactor/202 project request status (#204)
willjsw Apr 14, 2025
7510c4a
refactor: projectRegistration 생성 시 팀 전체-> 프로젝트 해당하는 요청만 검증하도록 오류 수정 (…
willjsw Apr 14, 2025
c77b15e
bug: DB에 중복 칼럼 있을 시 첫번쨰 registration 반환하도록 디버깅 (#206)
willjsw Apr 14, 2025
aea1fcb
fix: 프로젝트 참가 칼럼명 수정 (#209)
chsubinn Apr 20, 2025
f716987
feat: 프로젝트별 스프린트 아이디 목록 조회 기능 (#211)
chsubinn Apr 20, 2025
9d50b9a
refactor: projectRegistration 삭제 요청 파라미터 및 내부 로직 수정 (#214)
willjsw Apr 21, 2025
d0e8a81
refactor: api 요청 파라미터 수정 (#215)
willjsw Apr 21, 2025
e3ba3da
feat: 스프린트별 참가자 목록 & 동료 평가 여부 반환 메소드 (#218)
chsubinn Apr 21, 2025
aa402e7
fix: OpenAI 피드백 메시지 프롬프트 수정 (#217)
ht3064 Apr 21, 2025
f9e1cdd
fix: prod 환경 profile group 추가 (#221)
ht3064 Apr 21, 2025
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
28 changes: 28 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
root = true

[*]
# [encoding-utf8]
charset = utf-8

# [newline-lf]
end_of_line = lf

# [newline-eof]
insert_final_newline = true

[*.bat]
end_of_line = crlf

[*.java]
# [indentation-tab]
indent_style = tab

# [4-spaces-tab]
indent_size = 4
tab_width = 4

# [no-trailing-spaces]
trim_trailing_whitespace = true

[line-length-120]
max_line_length = 120
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/gradlew text eol=lf
*.bat text eol=crlf
*.jar binary
12 changes: 12 additions & 0 deletions .github/ISSUE_TEMPLATE/♻️-refactor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
name: "♻️ refactor"
about: 리팩토링 이슈 템플릿
titles: "♻️ "
labels: "♻️ refactor"
assignees: ''

---

## 📌 Description

-
12 changes: 12 additions & 0 deletions .github/ISSUE_TEMPLATE/⚙️-chore.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
name: "⚙️ chore"
about: CI/CD 및 설정 이슈 템플릿
titles: "⚙️ "
labels: "⚙️ chore"
assignees: ''

---

## 📌 Description

-
12 changes: 12 additions & 0 deletions .github/ISSUE_TEMPLATE/✨-feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
name: "✨ feature"
about: 기능 추가 이슈 템플릿
titles: "✨ "
labels: "✨ feature"
assignees: ''

---

## 📌 Description

-
12 changes: 12 additions & 0 deletions .github/ISSUE_TEMPLATE/🐛-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
name: "🐛 fix"
about: 버그 및 에러 이슈 템플릿
titles: "🐛 "
labels: "🐛 bug/error"
assignees: ''

---

## 📌 Description

-
13 changes: 13 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## 🌱 관련 이슈

- close #Issue_number

---
## 📌 작업 내용 및 특이사항

-

---
## 📚 참고사항

-
88 changes: 88 additions & 0 deletions .github/workflows/develop_build_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Build and Deploy to Develop

on:
push:
branches:
- develop

env:
DOCKERHUB_USERNAME: ht3064
DOCKERHUB_IMAGE_NAME: devfit-server

jobs:
build-deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Start Redis container for test
run: docker compose -f ./docker-compose-test.yml up -d

- name: Grant execute permission for gradlew
run: chmod +x ./gradlew

- name: Build with Gradle
run: ./gradlew clean build -x test

- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}

- name: Extract metadata for Docker
id: metadata
uses: docker/metadata-action@v4
with:
images: ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKERHUB_IMAGE_NAME }}
tags: |
type=sha,prefix=

- name: Build and Push Docker image
uses: docker/build-push-action@v4.1.1
with:
context: .
push: true
tags: ${{ steps.metadata.outputs.tags }}

- name: Copy docker-compose.yml to EC2
uses: appleboy/scp-action@v0.1.4
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
source: docker-compose.yml
target: /home/ubuntu/

- name: Copy default.conf to EC2
uses: appleboy/scp-action@v0.1.4
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
source: nginx/default.conf
target: /home/ubuntu/

- name: Deploy to EC2
uses: appleboy/ssh-action@master
env:
IMAGE_FULL_URL: ${{ steps.metadata.outputs.tags }}
DOCKERHUB_IMAGE_NAME: ${{ env.DOCKERHUB_IMAGE_NAME }}
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
envs: IMAGE_FULL_URL, DOCKERHUB_IMAGE_NAME
script: |
echo "${{ secrets.DOCKERHUB_ACCESS_TOKEN }}" | docker login -u "${{ env.DOCKERHUB_USERNAME }}" --password-stdin
docker compose up -d
docker exec nginx nginx -s reload
docker image prune -a -f
37 changes: 37 additions & 0 deletions .github/workflows/develop_pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Check Style And Test

on:
pull_request:
branches:
- develop

jobs:
test:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Start Redis container for test
run: docker compose -f ./docker-compose-test.yml up -d

- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle

- name: Grant execute permission for gradlew
run: chmod +x ./gradlew

- name: Test
run: |
./gradlew test
94 changes: 94 additions & 0 deletions .github/workflows/production_build_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: Build and Deploy to Production

on:
push:
tags:
- v*.*.*

env:
DOCKERHUB_USERNAME: ht3064
DOCKERHUB_IMAGE_NAME: devfit-server

jobs:
build-deploy:
runs-on: ubuntu-latest
environment: production

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Start Redis container for test
run: docker compose -f ./docker-compose-test.yml up -d

- name: Grant execute permission for gradlew
run: chmod +x ./gradlew

- name: Build with Gradle
uses: gradle/actions/setup-gradle@v3
with:
arguments: build
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }}

- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}

- name: Extract metadata for Docker
id: metadata
uses: docker/metadata-action@v5
with:
images: ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKERHUB_IMAGE_NAME }}
tags: |
type=semver,pattern={{version}}
flavor: |
latest=false

- name: Build and Push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ${{ steps.metadata.outputs.tags }}

- name: Copy docker-compose.yml to EC2
uses: appleboy/scp-action@v0.1.4
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
source: docker-compose.yml
target: /home/ubuntu/

- name: Copy default.conf to EC2
uses: appleboy/scp-action@v0.1.4
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
source: nginx/default.conf
target: /home/ubuntu/

- name: Deploy to EC2
uses: appleboy/ssh-action@master
env:
IMAGE_FULL_URL: ${{ steps.metadata.outputs.tags }}
DOCKERHUB_IMAGE_NAME: ${{ env.DOCKERHUB_IMAGE_NAME }}
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
envs: IMAGE_FULL_URL, DOCKERHUB_IMAGE_NAME
script: |
echo "${{ secrets.DOCKERHUB_ACCESS_TOKEN }}" | docker login -u "${{ env.DOCKERHUB_USERNAME }}" --password-stdin
docker compose up -d
docker exec nginx nginx -s reload
docker image prune -a -f
40 changes: 40 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

### Custom ###
.env
4 changes: 4 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM openjdk:17
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
Loading