Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
03a6411
Initial commit
dldusgh318 Nov 10, 2025
0c5d035
chore: 초기 환경 세팅
junilyy Nov 10, 2025
f7e0b49
Merge pull request #1 from junilyy/main
junilyy Nov 10, 2025
131edcd
chore: 스웨거 연결
junilyy Nov 10, 2025
c300f0e
[chore] 배포 스크립트 작성 (#1)
dldusgh318 Nov 10, 2025
19e0eff
[chore] health-check 추가 (#1)
dldusgh318 Nov 10, 2025
42b51ab
[chore] 도커파일 추가 (#1)
dldusgh318 Nov 10, 2025
7399f28
Merge pull request #3 from dldusgh318/main
dldusgh318 Nov 10, 2025
906b886
Merge pull request #4 from CEOS-22nd-FEBE-ASSIGNMENT/main
dldusgh318 Nov 10, 2025
e24b138
feat: JWT 인증/인가
junilyy Nov 10, 2025
c9d09cf
Merge pull request #1 from junilyy/feature/jwt
junilyy Nov 10, 2025
6b4d6aa
Merge pull request #6 from junilyy/main
junilyy Nov 10, 2025
503309c
[chore] swagger 설정 번경 (#7)
junilyy Nov 10, 2025
e198555
Merge pull request #8 from junilyy/main
junilyy Nov 10, 2025
55f2b46
chore: swagger config 수정
junilyy Nov 10, 2025
0edd94a
Merge pull request #9 from junilyy/main
junilyy Nov 10, 2025
dc6d1d0
[chore] contextPath 추가
dldusgh318 Nov 11, 2025
d95b951
Merge pull request #10 from dldusgh318/main
dldusgh318 Nov 11, 2025
75ff678
Merge pull request #11 from CEOS-22nd-FEBE-ASSIGNMENT/main
dldusgh318 Nov 11, 2025
4582015
[chore] application.yml 파일 수정
junilyy Nov 11, 2025
1e2178a
Merge pull request #12 from junilyy/main
junilyy Nov 11, 2025
9dc0378
[chore] application.yml DB url 수정
junilyy Nov 11, 2025
c53aac7
Merge pull request #13 from junilyy/main
junilyy Nov 11, 2025
8e5fce2
[fix] 스크립트 수정 (#3)
dldusgh318 Nov 11, 2025
ea6557e
WIP: 저장해야 할 중간 작업
dldusgh318 Nov 11, 2025
0f9d92f
Merge pull request #14 from dldusgh318/main
dldusgh318 Nov 11, 2025
1ddb58f
Merge pull request #15 from CEOS-22nd-FEBE-ASSIGNMENT/main
dldusgh318 Nov 11, 2025
0c744df
chore: 스크립트 수정
dldusgh318 Nov 11, 2025
ccdddd3
Merge pull request #16 from dldusgh318/main
dldusgh318 Nov 11, 2025
61dcc06
chore: 이미지 버전 관련 스크립트 수정
dldusgh318 Nov 11, 2025
59203e3
Merge pull request #17 from dldusgh318/main
dldusgh318 Nov 11, 2025
27b5bfb
chore: 환경변수 설정
dldusgh318 Nov 11, 2025
a9471a9
Merge pull request #18 from dldusgh318/main
dldusgh318 Nov 11, 2025
ba733c0
feat: HttpOnly cookie로 refresh token 전달 방식 변경
junilyy Nov 12, 2025
460d9a8
Merge pull request #2 from junilyy/feature/jwt
junilyy Nov 12, 2025
5d60590
Merge pull request #20 from junilyy/main
junilyy Nov 12, 2025
47d1b85
refactor: 에러 핸들링 로직 추가 및 email 중복 체크 request 방식 수정
junilyy Nov 12, 2025
e39913b
Merge pull request #3 from junilyy/feature/jwt
junilyy Nov 12, 2025
323c2c8
Merge pull request #22 from junilyy/main
junilyy Nov 12, 2025
39e4b06
fix: Securiy 및 쿠키 cors 설정
junilyy Nov 15, 2025
3adcdfe
Merge remote-tracking branch 'upstream/develop'
junilyy Nov 15, 2025
af2b3fc
Merge pull request #24 from junilyy/main
junilyy Nov 15, 2025
1cb61de
feat: 파트장 투표 관련 API들 구현
dldusgh318 Dec 15, 2025
ac368ea
feat: 접근 권한 수정
dldusgh318 Dec 15, 2025
5746011
Merge pull request #1 from CEOS-22nd-FEBE-ASSIGNMENT/feat/leader-vote
dldusgh318 Dec 16, 2025
ea22b8f
feat: 데모데이 투표 API
junilyy Dec 16, 2025
190b79a
feat: 본인팀 투표 에러핸들링 추가
junilyy Dec 16, 2025
c0be3ba
Merge pull request #2 from CEOS-22nd-FEBE-ASSIGNMENT/feat/demoday-vote
junilyy Dec 16, 2025
8e57b0c
fix: security config 수정
dldusgh318 Dec 17, 2025
3686109
docs: README 작성
dldusgh318 Dec 20, 2025
04cfcd2
Update README.md
dldusgh318 Dec 20, 2025
5475cac
fix: 히스토리 merge
dldusgh318 Dec 20, 2025
fb8b158
Merge remote-tracking branch 'origin/develop' into develop
dldusgh318 Dec 20, 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
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/chore-request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Chore request
about: 환경 세팅 이슈
title: "[chore]"
labels: "⚙️ chore"
assignees: ''

---

## 🍒 IssueName
> 이슈 명을 작성해주세요.

## 📝 Description
> 이슈에 대해 간결하게 설명해주세요.

## 🌱 Todo
> - [ ] 진행 예정
> - [x] 진행 완료
>
> 위의 방식으로 Task를 정리해주세요.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: 기능 개발 이슈
title: "[feat]"
labels: "✨ feature"
assignees: ''

---

## 🍒 IssueName
> 이슈 명을 작성해주세요.

## 📝 Description
> 이슈에 대해 간결하게 설명해주세요.

## 🌱 Todo
> - [ ] 진행 예정
> - [x] 진행 완료
>
> 위의 방식으로 Task를 정리해주세요.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/fix-request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Fix request
about: 에러 수정 이슈
title: "[fix]"
labels: "\U0001F41B fix"
assignees: ''

---

## 🍒 IssueName
> 이슈 명을 작성해주세요.

## 📝 Description
> 이슈에 대해 간결하게 설명해주세요.

## 🌱 Todo
> - [ ] 진행 예정
> - [x] 진행 완료
>
> 위의 방식으로 Task를 정리해주세요.
18 changes: 18 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## #️⃣연관된 이슈

> close #이슈번호, #이슈번호

## 📝작업 내용

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

- [ ] 작업 내용 1
- [ ] 작업 내용 2

### 스크린샷 (선택)

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

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

on:
push:
branches: [ develop ] # develop 브랜치에 push가 일어날 때 실행

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest

steps:
# 저장소 코드 체크아웃
- uses: actions/checkout@v3

# JDK 17 설정
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: '17'

# application.yml 파일 생성
- name: Make application.yml
run: |
cd ./src/main/resources
touch ./application.yml
echo "${{ secrets.APPLICATION }}" > ./application.yml
shell: bash

# Gradle로 빌드
- name: Build with Gradle
run: |
chmod +x ./gradlew
./gradlew clean build -x test

# Docker 이미지 빌드 및 푸시 (🚨 `--build-arg` 추가!)
- name: Docker build & push to Docker Hub
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker build --no-cache -t ${{ secrets.DOCKER_REPO }}:${{ github.sha }} .
docker push ${{ secrets.DOCKER_REPO }}:${{ github.sha }}

# 서버 배포
- name: Deploy to server with Docker
uses: appleboy/ssh-action@master
env:
IMAGE_TAG: ${{ github.sha }}
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
envs: IMAGE_TAG
script: |
sudo docker pull ${{ secrets.DOCKER_REPO }}:$IMAGE_TAG
cd /root
docker compose down --remove-orphans -v || true
IMAGE_TAG=$IMAGE_TAG docker compose up -d --force-recreate
sudo docker image prune -f
# jar 파일명 확인
- name: Show built files
run: |
ls -alh build/libs
41 changes: 41 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
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/

### yml ###
application.yml
application.yaml
4 changes: 4 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM eclipse-temurin:17-jdk
ARG JAR_FILE=/build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar", "/app.jar"]
22 changes: 22 additions & 0 deletions HELP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Getting Started

### Reference Documentation
For further reference, please consider the following sections:

* [Official Gradle documentation](https://docs.gradle.org)
* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/3.5.7/gradle-plugin)
* [Create an OCI image](https://docs.spring.io/spring-boot/3.5.7/gradle-plugin/packaging-oci-image.html)
* [Spring Web](https://docs.spring.io/spring-boot/3.5.7/reference/web/servlet.html)

### Guides
The following guides illustrate how to use some features concretely:

* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/)
* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/)
* [Building REST services with Spring](https://spring.io/guides/tutorials/rest/)

### Additional Links
These additional references should also help you:

* [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle)

18 changes: 16 additions & 2 deletions README.md
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Original file line number Diff line number Diff line change
@@ -1,2 +1,16 @@
# spring-vote-22nd
ceos back-end 22nd voting service project
# 프백 합동 과제 - Modelly 팀

### 1. 서비스 소개 / 시연

해당 과제는 CEOS의 차기 파트장이나 데모데이 우수팀을 투표하는 서비스입니다.

1. 중복 투표는 불가능하다.
2. 데모데이 투표 시 본인이 속한 팀에는 투표할 수 없다.
3. 파트장 투표 시, 자신이 해당하는 파트의 파트장 투표만 가능하다.
4. 로그인을 하지 않은 사람은 투표할 수 없다.

서비스 링크: https://next-vote-22nd-eight.vercel.app/

**ERD**

<img width="1530" height="962" alt="Image" src="https://github.com/user-attachments/assets/3d3bde4d-7113-4225-ba4f-f2dd6bb53124" />
57 changes: 57 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.7'
id 'io.spring.dependency-management' version '1.1.7'
}

group = 'vote'
version = '0.0.1-SNAPSHOT'
description = 'FE, BE joint project'

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

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'

compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

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

// Redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.session:spring-session-data-redis'

// JWT
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'

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

tasks.named('test') {
useJUnitPlatform()
}
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