Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
3488d6d
Initial commit
danaggero Nov 16, 2025
9b97f5f
chore: project setting
danaggero Nov 17, 2025
67b18f7
chore: gitignore에 env 파일 추가
danaggero Nov 17, 2025
9474bc2
chore: pr-template
danaggero Nov 17, 2025
aa22542
chore: coderabbit config
danaggero Nov 17, 2025
bc1414c
Merge pull request #1 from GroomEasy/chore/project-setting
danaggero Nov 18, 2025
0677b2b
feat: JWT 관련 설정 및 회원가입 API 완성
danaggero Nov 18, 2025
9aa5055
chore: pr template 경로 변경
danaggero Nov 18, 2025
faf4994
delete: Auth 도메인 클래스 삭제
danaggero Nov 18, 2025
9f101ec
refactor: jwt key에 final 키워드 추가
danaggero Nov 18, 2025
677032a
refactor: security config에 swagger 경로 추가
danaggero Nov 18, 2025
998a427
refactor: jwtprovider에 getter 삭제
danaggero Nov 19, 2025
0e3c668
Merge pull request #2 from GroomEasy/feat/jwt-token
danaggero Nov 19, 2025
0e2bc62
chore: CORS 설정
danaggero Nov 19, 2025
c17de89
chore: issue template 변경
danaggero Nov 19, 2025
25f9db2
Merge pull request #4 from GroomEasy/chore/manual-deployment
danaggero Nov 20, 2025
01e064f
feat: login api 개발
danaggero Dec 14, 2025
9d97d9b
feat: login api 개발
danaggero Dec 14, 2025
5028701
Add docker-compose and nginx conf for deploy
danaggero Dec 20, 2025
74de4f9
chore: cicd.yml
danaggero Dec 20, 2025
978842b
chore: cicd.yml
danaggero Dec 20, 2025
58911e2
fix: ec2 url
danaggero Dec 20, 2025
863adb9
Merge pull request #5 from GroomEasy/feat/login-jwt
danaggero Dec 20, 2025
dea853e
trigger ci
danaggero Dec 20, 2025
3c0b83f
trigger ci
danaggero Dec 20, 2025
39fdf54
fix: refresh token 제거
danaggero Dec 20, 2025
3d1ca9c
feat: 파트별 후보자 불러오기 기능
danaggero Dec 20, 2025
f63c1c1
feat: 파트장 투표하기 기능
danaggero Dec 20, 2025
fdd9efc
Merge pull request #6 from GroomEasy/feat/vote
danaggero Dec 20, 2025
e2774dd
feat: 팀 투표 기능 API
danaggero Dec 20, 2025
ab798ab
feat: 팀 투표 조회 API
danaggero Dec 20, 2025
2260511
Merge pull request #7 from GroomEasy/feat/vote-team
danaggero Dec 20, 2025
da558f0
Add files via upload
danaggero Dec 22, 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
17 changes: 17 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# .coderabbit.yaml
language: "ko-KR" # 한국어
early_access: false
reviews:
profile: "chill"
request_changes_workflow: true
high_level_summary: true
poem: true
review_status: true
collapse_walkthrough: false
auto_review:
enabled: true
drafts: false
branches:
- "*"
chat:
auto_reply: true
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
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/issue-form.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: 'BE 이슈 생성'
description: 'BE Repo에 이슈를 생성합니다.'
labels: [order]
title: '이슈 이름을 작성해주세요'
body:

- type: textarea
id: description
attributes:
label: '📋이슈 내용(Description)'
description: '이슈에 대해서 자세히 설명해주세요'
validations:
required: true

- type: textarea
id: tasks
attributes:
label: '☑️체크리스트(Tasks)'
description: '해당 이슈에 대해 필요한 작업목록을 작성해주세요'
value: |
- [ ] Task1
- [ ] Task2
validations:
required: true

- type: textarea
id: references
attributes:
label: '📁참조(References)'
description: '해당 이슈과 관련된 레퍼런스를 참조해주세요'
value: |
- Reference1
validations:
required: false
15 changes: 15 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## #️⃣연관된 이슈

> ex) #이슈번호, #이슈번호

## 📝작업 내용

> 이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)

### 스크린샷 (선택)

## 💬리뷰 요구사항(선택)

> 리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요
>
> ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?
63 changes: 63 additions & 0 deletions .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: spring-vote CI/CD

on:
push:
branches: [ main, develop ]

jobs:
build-and-push:
runs-on: ubuntu-latest

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

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

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

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

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: danaggero/ceos-vote-spring:latest

deploy:
needs: build-and-push
runs-on: ubuntu-latest

steps:
- name: Deploy to EC2 via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_PRIVATE_KEY }}
script: |
set -e
cd /home/ubuntu/spring-vote-22nd

git fetch origin
git reset --hard origin/${{ github.ref_name }}
git clean -fd

# 최신 이미지 받아서 컨테이너 재시작
sudo docker compose pull
sudo docker compose up -d --remove-orphans

sudo docker ps
Binary file added .gitignore
Binary file not shown.
15 changes: 15 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# --- Build Stage ---
FROM gradle:8.7-jdk21 AS builder
WORKDIR /app

COPY . .
RUN gradle clean build -x test


# --- Run Stage ---
FROM eclipse-temurin:21-jdk
WORKDIR /app

COPY --from=builder /app/build/libs/*.jar app.jar

ENTRYPOINT ["java","-jar","app.jar"]
69 changes: 69 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.7'
id 'io.spring.dependency-management' version '1.1.7'
}

group = 'com.ceos'
version = '0.0.1-SNAPSHOT'
description = 'spring-vote-22nd'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
//web
implementation 'org.springframework.boot:spring-boot-starter-web'

//DB
runtimeOnly 'org.postgresql:postgresql'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

//security
implementation 'org.springframework.boot:spring-boot-starter-security'

// jwt
implementation 'io.jsonwebtoken:jjwt-api:0.12.6'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.6'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.6'

// WebClient
implementation 'org.springframework.boot:spring-boot-starter-webflux'

//validation
implementation 'org.springframework.boot:spring-boot-starter-validation'

// swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0'

//lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

//test
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

//env
implementation 'me.paulschwarz:spring-dotenv:4.0.0'

// developmentOnly 'org.springframework.boot:spring-boot-docker-compose'
}

tasks.named('test') {
useJUnitPlatform()
}
22 changes: 22 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
version: "3.8"

services:
spring:
image: danaggero/ceos-vote-spring:latest
container_name: ceos-vote-spring
env_file:
- .env
expose:
- "8080"
restart: always

nginx:
image: nginx:alpine
container_name: ceos-vote-nginx
depends_on:
- spring
ports:
- "80:80"
volumes:
- ./infra/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
restart: always
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading