Skip to content

Commit

Permalink
Merge pull request #248 from sopt-makers/develop
Browse files Browse the repository at this point in the history
34기 출석 점수 연산 방식 변경 사항 반영
  • Loading branch information
yummygyudon authored Mar 30, 2024
2 parents 7eec15f + 689e429 commit 1e30572
Show file tree
Hide file tree
Showing 279 changed files with 5,497 additions and 3,713 deletions.
7 changes: 4 additions & 3 deletions .github/workflows/cd-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@ jobs:
- name: Create application.yml
run: |
pwd
touch src/main/resources/application-dev.yml
echo "${{ secrets.APPLICATION_DEV }}" >> src/main/resources/application-dev.yml
cat src/main/resources/application-dev.yml
cd ./operation-api/src/main/resources
touch ./application-dev.yml
echo "${{ secrets.APPLICATION_DEV }}" >> ./application-dev.yml
cat ./application-dev.yml
- name: Build with Gradle
run: ./gradlew build
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/cd-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@ jobs:
- name: Create application.yml
run: |
pwd
touch src/main/resources/application-prod.yml
echo "${{ secrets.APPLICATION_PROD }}" >> src/main/resources/application-prod.yml
cat src/main/resources/application-prod.yml
cd ./operation-api/src/main/resources
touch ./application-prod.yml
echo "${{ secrets.APPLICATION_PROD }}" >> ./application-prod.yml
cat ./application-prod.yml
- name: Build with Gradle
run: ./gradlew build
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@ jobs:
- name: Create application.yml
run: |
pwd
touch src/main/resources/application-dev.yml
echo "${{ secrets.APPLICATION_DEV }}" >> src/main/resources/application-dev.yml
cat src/main/resources/application-dev.yml
cd ./operation-api/src/main/resources
touch ./application-dev.yml
echo "${{ secrets.APPLICATION_DEV }}" >> ./application-dev.yml
cat ./application-dev.yml
- name: Build with Gradle
run: ./gradlew build
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,6 @@ out/
.vscode/

### config yml ###
application-**.yml
application-**.yml

*/src/main/generated
116 changes: 43 additions & 73 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,59 @@
# sopt-operation-backend
**메이커스 운영팀 서버** : 출석 관리 어드민 서비스, 회원 출석 체크 서비스, 알림 전송 서비스
# SOPT 메이커스 운영 프로덕트 서버
> SOPT 활동 기수 회원과 임원진의 편리한 운영을 위한 서비스를 만들어요.
### 웹 어드민 (임원진 대상)
- 세미나, 행사 등 **세션 생성**
- 활동 기수 회원의 **출석 내역 관리**
- 푸시 알림을 전송할 **공지 및 소식 작성, 푸시알림 전송**

### 출석 앱 (활동 기수 회원 대상)
- 참여한 세션 **출석 체크**, **자신의 출석 내역 조회**

<br/>

## Server Acrchitecture

<img width="694" alt="image" src="https://github.com/sopt-makers/sopt-operation-backend/assets/55437339/af911c45-30b7-4f92-b096-5c0ad27fbe4c">

<br/>

## Used Stacks
<img width="554" alt="image" src="https://github.com/sopt-makers/sopt-operation-backend/assets/55437339/a31ac432-ded8-4db0-acf0-f1c653067a33">

<br/>

## 🛠 Used Stacks
## 프로젝트 폴더 구조
### 멀티모듈 구조
```
📁 operation-api # Controller, Service
📁 operation-auth # Authentication 관련 기능
📁 operation-common # 공통 기능
📁 operation-domain # Entity
📁 operation-external # 외부 API 기능(SOPT 메이커스 내 플레이그라운드, 알림TF)
```

- Java 17
- Gradle
- Spring Boot 2.7.4
- Spring Data JPA
- PostgreSQL
### 모듈 내 구조
```
📁 src
|_ 📁 main
|_ |_ 📁 app # 앱 기능
|_ |_ 📁 common # 공통 기능
|_ |_ 📁 web # 웹 기능
```

<br/>

## 👥 팀원
## Member

| [이용택](https://github.com/dragontaek-lee)| [김소현](https://github.com/thguss)|
|:-----:|:------:|
| <img width="120" height="120" src="https://user-images.githubusercontent.com/55437339/236619788-8e1ec0be-9158-452c-88b9-fe18e227586c.png"> | <img width="120" height="120" src="https://user-images.githubusercontent.com/55437339/236619930-7cad7853-1eb8-45a7-88f7-8ca196124b42.png"> |
|- 프로젝트 초기 세팅 <br/> - HTTPS 설정<br/> - 회원 출석 체크 서비스|- 프로젝트 초기 세팅<br/> - CICD 환경 구축<br/> - 출석 관리 어드민 서비스|
|- 프로젝트 초기 세팅 <br/> - HTTPS 설정<br/> - (App)회원 출석 체크 기능<br/> - 알림TF|- 프로젝트 초기 세팅<br/> - CICD 환경 구축<br/> - (Web)세션 출석 관리 기능<br/> - 알림 관리 기능|


<br/>

## 📏 Process
## Process
1. 개발 전에 `github issue`를 생성해주세요!
1. 템플릿에 맞게 내용을 작성한다
2. Assignees, Label을 단다
Expand All @@ -38,12 +68,10 @@
7. `approve`가 완료되었다면 `merge`를 진행해주세!요

> `코드 외적인 부분`(환경변수, db 필드 및 테이블 수정, 인프라 세팅 등) 수정사항이 있다면 팀원에게 먼저 물어보고 진행하거나, 그러지 못하였더라면 빠르게 전달해주세요!(카톡, 슬랙, 디코 등)
>
<br/>

## 🌴 Commit Convention
## Commit Convention
| 태그 이름 | 설명 |
| --- | --- |
| [CHORE] | 코드 수정, 내부 파일 수정 |
Expand All @@ -61,7 +89,7 @@

<br/>

## Branch Strategy
## Branch Strategy
- `main`, `develop`, `feature` 브랜치가 있습니다!
- **main**은 production용 브랜치입니다
- 실서비스용 ec2(**makers.operation.prod)**로 배포되도록 파이프라인이 구축되어 있습니다
Expand All @@ -72,61 +100,3 @@
- 각자 이슈에 대한 작업물의 브랜치입니다
- develop에 PR을 거쳐 merge 해주세요

<br/>

## 🗂 프로젝트 폴더 구조

```
📁 src
|_ 📁 main
|_ |_ 📁 common
|_ |_ 📁 config
|_ |_ 📁 controller
|_ |_ 📁 dto
|_ |_ 📁 entity
|_ |_ 📁 exception
|_ |_ 📁 repository
|_ |_ 📁 security
|_ |_ 📁 service
|_ |_ 📁 util
```

<br/>

## 🌴 Dependencies Module
<b>build.gradle</b>
```
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
// jwt
implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.2'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// swagger
implementation 'io.springfox:springfox-boot-starter:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
}
```

<br/>


## 🏗 Architecture
![image](https://user-images.githubusercontent.com/55437339/236621230-8d2dd581-c68d-44e9-bc0d-ea35dee08ebe.png)

91 changes: 36 additions & 55 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,74 +1,55 @@
buildscript {
ext {
queryDslVersion = "5.0.0"
repositories {
mavenCentral()
}
}

plugins {
id 'java'
id 'org.springframework.boot' version '2.7.4'
id 'org.springframework.boot' version '3.0.0'
id 'io.spring.dependency-management' version '1.1.0'
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}

group = 'org.sopt.makers'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
allprojects {
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}
group = 'org.sopt.makers.operation'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
repositories {
mavenCentral()
}

compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

// jwt
implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.2'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.2'
dependencies {
// lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
// test
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}

// swagger
implementation 'io.springfox:springfox-boot-starter:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
tasks.named('test') {
useJUnitPlatform()
}
}

tasks.named('test') {
useJUnitPlatform()
jar {
enabled = true
}

def querydslDir = "$buildDir/generated/querydsl"

querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
bootJar {
enabled = false
}
24 changes: 24 additions & 0 deletions operation-api/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
jar {
enabled = false
}

bootJar {
enabled = true
}

dependencies {
// module
implementation project(path: ':operation-auth')
implementation project(path: ':operation-common')
implementation project(path: ':operation-domain')
implementation project(path: ':operation-external')

implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'

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

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.sopt.makers.operation;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(
scanBasePackageClasses = {AuthRoot.class, CommonRoot.class, DomainRoot.class, ExternalRoot.class}
)
public class OperationApplication {

public static void main(String[] args) {
SpringApplication.run(OperationApplication.class, args);
}
}
Loading

0 comments on commit 1e30572

Please sign in to comment.