42organization / 42gg.server.dev.v2

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

Home Page:https://gg.42seoul.kr/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

42arcade.gg.server.v2

https://42gg.kr/

⚡️ 프로젝트 소개

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

⚡️ 기술 스택

⚡️ 프로젝트 관리

⚡️ 프로젝트 개발기간

  • 3기: 2023.04.16 ~ 2023.06.23

  • 4기: 2023.08.01 ~ 2023.09.21

  • 5기 : 2023.11.01 ~ 2024.01.31

⚡️ 프로젝트 아키텍처

gg-5th-architecture

⚡️ 팀소개

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
토너먼트 개발,
테스트 커버리지 개선
팀장, 토너먼트 개발,
테스트 커버리지 개선
토너먼트 개발,
테스트 커버리지 개선
토너먼트 개발,
테스트 커버리지 개선
인프라 담당,
테스트 커버리지 개선

⚡️ 필요 파일

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

About

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

https://gg.42seoul.kr/


Languages

Language:Java 99.9%Language:Shell 0.0%Language:Dockerfile 0.0%