42arcade.gg.server.v2
https://gg.42seoul.kr/
⚡️ 프로젝트 소개
42 서울 내에서 탁구 경기 매칭, 전적, 상점 서비스를 제공하는 프로젝트 입니다.
향후 추가 서비스 확장 예정
⚡️ 기술 스택
⚡️ 프로젝트 관리
⚡️ 프로젝트 개발기간
-
3기: 2023.04.16 ~ 2023.06.23
-
4기: 2023.08.01 ~ 2023.09.21
-
5기 : 2023.11.01 ~ 2024.01.31
-
6기 : 2023.02.01 ~ 2024.05.10
-
7기 : 2024.06.03 ~ 2024.09.10
⚡️ 프로젝트 아키텍처
⚡️ ERD 및 모듈 구조
모듈 구조도
5기
![5기ERD](https://github.com/user-attachments/assets/0f889aaa-a39d-4062-8063-a495d6cd8863)
6기
![6기ERD](https://github.com/user-attachments/assets/4719ec57-64b3-42f8-8ada-a745f91c6444)
Recurit
![RecuritERD](https://github.com/user-attachments/assets/ad07f23e-2c99-4d21-b0b5-a5d47c28dcb1)
7기
![7기ERD](https://github.com/user-attachments/assets/c5a147b6-107c-4524-b656-6183dc04ccf6)
⚡️ 팀소개
3기
3기 진행 사항
### ⚡️⚡ 로그인 연동 추가
- v1에서 지원하지 않던 카카오계정 연동 기능 추가(좌 : v1, 우: v2)
### ⚡️⚡ DB table 구조 변경
- v1에서 확장을 위해 열어둔 구조나 테이블마다 여러 곳에 있던 중복된 속성 제거
- v1 -> v2 테이블 수 감소 : 14 -> 12
### ⚡️⚡ 게임추가 기능
- v1에서 1개의 예약만 되던 것에서 최대 3개까지 예약을 잡을 수 있도록 변경
### ⚡️⚡ 도커 도입
- v2에서 도커 도입을 통해 컨테이너를 통한 서버 관리 도입
### ⚡️⚡ 모니터링 도입
- grafana를 통한 서버 모니터링 도입
4기
4기 진행 사항
### ⚡️⚡ DB table 구조 변경
- 상점, 티어 등 서비스 확장을 위한 DB 재설계
### ⚡️⚡ 재화 시스템 추가
- 출석, 게임 승패에 연관해 재화 시스템 추가
### ⚡️⚡ 상점, 아이템 서비스 추가
- 유저 요구사항을 반영한 기능 확장
### ⚡️⚡ 티어 시스템 추가
- 랭킹전 활성화를 위한 티어 시스템 추가
### ⚡️⚡ 관리자 페이지 구현
- 원활한 운영을 위한 관리자 기능 추가
5기
5기 진행 사항
### ⚡️⚡ 토너먼트 개발
### ⚡️⚡ 테스트 커버리지 개선 (2024-03-19 기준)
### 전체 68% -> 74%
### 단위 테스트 0% -> 30%
### ⚡️⚡ 아키텍처 변경
### BEFORE
### AFTER
![gg-5th-architecture](https://github.com/42organization/42gg.server.dev.v2/assets/33301153/f801e7b5-d579-467b-9ad0-2bfec506dcaa)
### ⚡️⚡ DB table 구조 변경
![image](https://github.com/42organization/42gg.server.dev.v2/assets/33301153/d4c68d74-590c-41db-9c47-0bdd4f249bc3)
6기
6기 진행 사항
### ⚡️⚡ 파티 서비스 개발
### ⚡️⚡ 테스트 커버리지 개선 (2024-04-16 기준)
### 전체 74% -> 75.9%
![integrationTest](https://github.com/42organization/42gg.server.dev.v2/assets/79272189/79731062-a8f4-4575-a683-61fa5dd60a15)
### 단위 테스트 30% -> 36.7%
![unitTest](https://github.com/42organization/42gg.server.dev.v2/assets/79272189/b0e5055b-9008-40d8-b93a-3b05fdffc710)
### ⚡️⚡ DB table 구조 변경
![image](https://github.com/42organization/42gg.server.dev.v2/assets/79272189/c9c47670-b955-4e34-a589-c498008446f0)
7기
7기 진행 사항
### ⚡️⚡ 행사 서비스 개발
- 42서울 내 행사를 진행할 수 있는 서비스 개발
![인덱스](https://github.com/user-attachments/assets/48966d80-337f-42d9-9024-b1f5392a81ab)
- 행사 개최, 참가, 결과 확인, 개인 프로필 등의 기능을 제공
![대회목록](https://github.com/user-attachments/assets/cf5fb4b3-bcad-4e89-ab8b-3f798f3cba9f)
![상세보기](https://github.com/user-attachments/assets/f6109e2c-3a93-462c-a899-cfc35989dc20)
![대회 참가](https://github.com/user-attachments/assets/f11b5c89-ebc2-4d2d-91c7-25317d33ad2d)
![프로필](https://github.com/user-attachments/assets/f9b31b71-76f6-4bf0-9b5c-d56446e292a0)
- 평가 포인트를 티켓으로 환전해 사용해 공식 대회를 참가해 칭호와 업적 등의 보상을 받을 수 있음(현재는 기부만 가능)
![티켓 페이지](https://github.com/user-attachments/assets/fd76a962-1254-4354-a1ff-be93950d75a3)
### ⚡️⚡ DataFlow
![AgendaDataFlow](https://github.com/user-attachments/assets/f9fd25ee-d275-41a3-be78-501eba88df5f)
### ⚡️⚡ DB table 구조 변경
![7기ERD](https://github.com/user-attachments/assets/e3d2e431-1154-43d6-8a48-dd2ac2e510a5)
### ⚡️⚡ 테스트 커버리지
### 전체 75.9% -> 76.5%
![테스트 전체](https://github.com/user-attachments/assets/3c567a75-a897-483c-ba89-8c5e9caff210)
⚡️ 필요 파일
application.yml
다음과 같은 양식의 "application.yml"파일이 "src/main/resources/"경로에 필요합니다.
```
spring:
profiles:
active: main
security:
oauth2.client:
authenticationScheme: ""
registration:
42:
redirect-uri: ""
authorization-grant-type: ""
scope: public
kakao:
redirect-uri: ""
authorization-grant-type: ""
scope: ""
provider:
42:
authorization-uri: ""
token-uri: ""
user-info-uri: ""
user-name-attribute: ""
kakao:
authorization-uri: ""
token-uri: ""
user-info-uri: ""
user-name-attribute: ""
mvc:
hiddenmethod:
filter:
enabled: ""
data:
web:
pageable:
default-page-size: ""
one-indexed-parameters: ""
mail:
host: ""
port: ""
username: ""
password: ""
properties:
mail:
smtp:
starttls:
enable: ""
required: ""
auth: ""
# Message 설정
messages:
basename: ""
encoding: ""
springdoc:
swagger-ui:
path: ""
default-consumes-media-type: ""
default-produces-media-type: ""
app:
auth:
tokenSecret: ""
refreshTokenSecret: ""
info:
image:
defaultUrl: '유저 기본 이미지 경로'
itemNotFoundUrl: 'not_found 이미지 경로'
---
spring.config.activate.on-profile: main
spring:
# main server에서는 swagger-ui를 사용하지 않음
springdoc:
swagger-ui:
enabled: ""
# 데이터 소스 설정
datasource:
url: ""
driverClassName: ""
user: ""
password: ""
flyway:
enabled: ""
baselineOnMigrate: ""
locations: ""
url: ""
user: ""
password: ""
jpa:
database-platform: ""
hibernate:
ddl-auto: ""
properties:
hibernate:
show_sql: ""
format_sql: ""
use_sql_comments: ""
security:
oauth2.client:
registration:
42:
client-id: ""
client-secret: ""
kakao:
client-id: ""
client-secret: ""
client-authentication-method: ""
# Redis 설정
cache:
type: ""
redis:
host: ""
port: ""
# cors 설정
cors:
allowed-origins: ""
allowed-methods: ""
allowed-headers: ""
allowed-credentials: ""
max-age: ""
info:
web:
frontUrl: ""
domain: ""
cloud:
aws:
credentials:
accessKey: ""
secretKey: ""
s3:
bucket: ""
dir: ""
region:
static: ""
stack:
auto: ""
slack:
xoxbToken: ""
app:
auth:
tokenExpiry: ""
refreshTokenExpiry: ""
```