Skip to content

42GG, 42 Seoul 카뎃들을 위한 탁구 게임 매칭 서비스 🏓

Notifications You must be signed in to change notification settings

42organization/42gg.server.dev.v2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

⚡️ 프로젝트 아키텍처

AwsArchitecture

⚡️ ERD 및 모듈 구조

모듈 구조도 모듈 구조도
5기

5기ERD

6기

6기ERD

Recurit

RecuritERD

7기

7기ERD

⚡️ 팀소개

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

⚡️⚡ DB table 구조 변경

image

🏓 🏓 🏓 🏓 🏓
고승준 @kokomong2 김한나 @Kimhan-nah 박수진 @Newsujin 이자훈 @SONGS4RI 정승철 @middlefitting
토너먼트 개발,
테스트 커버리지 개선
팀장, 토너먼트 개발,
테스트 커버리지 개선
토너먼트 개발,
테스트 커버리지 개선
토너먼트 개발,
테스트 커버리지 개선
인프라 담당,
테스트 커버리지 개선

6기

6기 진행 사항

⚡️⚡ 파티 서비스 개발

42party

⚡️⚡ 테스트 커버리지 개선 (2024-04-16 기준)

전체 74% -> 75.9%

integrationTest

단위 테스트 30% -> 36.7%

unitTest

⚡️⚡ DB table 구조 변경

image

🏓 🏓 🏓 🏓
권기현 @ghyen 정승수 @AreSain 김정주 @JayJay-Kay 이예슬 @yes-ee
파티 서비스 개발,
테스트 커버리지 개선
팀장, 파티 서비스 개발,
테스트 커버리지 개선
파티 서비스 개발,
테스트 커버리지 개선
파티 서비스 개발,
테스트 커버리지 개선

7기

7기 진행 사항

⚡️⚡ 행사 서비스 개발

  • 42서울 내 행사를 진행할 수 있는 서비스 개발 인덱스

  • 행사 개최, 참가, 결과 확인, 개인 프로필 등의 기능을 제공 대회목록 상세보기 대회 참가 프로필

  • 평가 포인트를 티켓으로 환전해 사용해 공식 대회를 참가해 칭호와 업적 등의 보상을 받을 수 있음(현재는 기부만 가능) 티켓 페이지

⚡️⚡ DataFlow

AgendaDataFlow

⚡️⚡ DB table 구조 변경

7기ERD

⚡️⚡ 테스트 커버리지

전체 75.9% -> 76.5%

테스트 전체

🏓 🏓 🏓
정승수 @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: ""