42organization / 42gg.server.dev.v2

42GG, 42 Seoul 카뎃들을 위한 탁구 게임 매칭 서비스 🏓
https://gg.42seoul.kr/
10 stars 7 forks source link

42arcade.gg.server.v2

https://gg.42seoul.kr/

⚡️ 프로젝트 소개

42 서울 내에서 탁구 경기 매칭, 전적, 상점 서비스를 제공하는 프로젝트 입니다.
향후 추가 서비스 확장 예정

⚡️ 기술 스택

⚡️ 프로젝트 관리

⚡️ 프로젝트 개발기간

⚡️ 프로젝트 아키텍처

AwsArchitecture

⚡️ 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)

loginv1      loginv2      ### ⚡️⚡ DB table 구조 변경 - v1에서 확장을 위해 열어둔 구조나 테이블마다 여러 곳에 있던 중복된 속성 제거 - v1 -> v2 테이블 수 감소 : 14 -> 12 erdv1     
erdv2      ### ⚡️⚡ 게임추가 기능 - v1에서 1개의 예약만 되던 것에서 최대 3개까지 예약을 잡을 수 있도록 변경

matchv2    
### ⚡️⚡ 도커 도입 - v2에서 도커 도입을 통해 컨테이너를 통한 서버 관리 도입
dockerPs    
### ⚡️⚡ 모니터링 도입 - grafana를 통한 서버 모니터링 도입
dockerPs    
🏓 🏓 🏓 🏓 👨🏻‍💻
안영선 @yoahn 김재혁 @jaehyuki 김의진 @yuikim 이현규 @hyunkyle 이 철 @cheolee
PM
Game기능 담당
DB 마이그레이션&관리,
알림,관리자 기능 일부담당
매칭 기능,
로그인기능 일부담당,
관리자기능 일부담당
로그인기능,
인프라 담당
관리자 기능,
로그 담당

4기

4기 진행 사항
### ⚡️⚡ DB table 구조 변경 - 상점, 티어 등 서비스 확장을 위한 DB 재설계 ERD V3 ### ⚡️⚡ 재화 시스템 추가 - 출석, 게임 승패에 연관해 재화 시스템 추가 attendance ### ⚡️⚡ 상점, 아이템 서비스 추가 - 유저 요구사항을 반영한 기능 확장 스크린샷 2023-09-23 오후 11 48 01 스크린샷 2023-09-23 오후 11 48 18 ### ⚡️⚡ 티어 시스템 추가 - 랭킹전 활성화를 위한 티어 시스템 추가 tier ### ⚡️⚡ 관리자 페이지 구현 - 원활한 운영을 위한 관리자 기능 추가 admin
👩🏻‍💻 🏓 🏓 🏓 🏓
류민아 @mryoo 신시온 @sishin 류경엽 @klew 권태현 @taehkwon 이 철 @cheolee
PM
확성기,출석 기능 담당
티어, 상품 관리자 기능,
인프라 담당
유저 이미지,
유저 프로필 장식 기능 담당
상점 기능 담당 재화 기능 담당

5기

5기 진행 사항
### ⚡️⚡ 토너먼트 개발 5th-tournament ### ⚡️⚡ 테스트 커버리지 개선 (2024-03-19 기준) ### 전체 68% -> 74% 5th-test-coverage-total ### 단위 테스트 0% -> 30% 5th-test-coverage-unit ### ⚡️⚡ 아키텍처 변경 ### BEFORE systemArchitecture      ### 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)
🏓 🏓 🏓 🏓 🏓
고승준 @kokomong2 김한나 @Kimhan-nah 박수진 @Newsujin 이자훈 @SONGS4RI 정승철 @middlefitting
토너먼트 개발,
테스트 커버리지 개선
팀장, 토너먼트 개발,
테스트 커버리지 개선
토너먼트 개발,
테스트 커버리지 개선
토너먼트 개발,
테스트 커버리지 개선
인프라 담당,
테스트 커버리지 개선

6기

6기 진행 사항
### ⚡️⚡ 파티 서비스 개발 42party ### ⚡️⚡ 테스트 커버리지 개선 (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)
🏓 🏓 🏓 🏓
권기현 @ghyen 정승수 @AreSain 김정주 @JayJay-Kay 이예슬 @yes-ee
파티 서비스 개발,
테스트 커버리지 개선
팀장, 파티 서비스 개발,
테스트 커버리지 개선
파티 서비스 개발,
테스트 커버리지 개선
파티 서비스 개발,
테스트 커버리지 개선

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)
🏓 🏓 🏓
정승수 @AreSain 박정우 @yhames 김지은 @kimjieun0301
팀장, 아젠다 서비스 개발,
테스트 커버리지 개선
아젠다 서비스 개발,
테스트 커버리지 개선
아젠다 서비스 개발,
테스트 커버리지 개선

⚡️ 필요 파일

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: "" ```