Skip to content

Latest commit

 

History

History
193 lines (149 loc) · 7.18 KB

File metadata and controls

193 lines (149 loc) · 7.18 KB
Transcendence

Transcendence

Socket based online pong game


🎬 Preview




👩‍💻 Tech Stack

📝 Notion


🚧 Structure

./
├── frontend/
│   ├── public/       # index
│   │   └── img/      # image files
│   └── src/
│       ├── Game/     # game page
│       ├── Login/    # login and auth page
│       ├── Main/     # game queue, chat, friend list
│       ├── Profile/  # user stats and history
│       ├── Rank/     # all users leaderboard
│       ├── Signup/   # signup page
│       ├── Socket/   # handle multi-page socket events
│       ├── Util/     # custom axios
│       └── Verify/   # 2fa code verification
└── backend/
    ├── prisma/       # database
    └── src/
        ├── auth/     # authentication for login
        ├── channel/  # socket based chat
        ├── config/   # environment variables
        ├── game/     # control game queue
        ├── member/   # manage members
        ├── pong/     # draw game canvas
        └── prisma/   # prisma ORM

❓ Usage

🖐️ Clone

$ git clone https://github.com/WallyPfister/transcendence.git

🖐️ Environment Variables

You have to fill in the env values and change the file name from .env_sample to .env.
For example...

# Two-factor Authentication
MAILER_NAME=[YOUR EMAIL ID]
MAILER_PASS=[YOUR EMAIL PASSWORD]

🖐️ Execute

To run containers in the background mode...

$ make
See what is happening in the containers...

$ make dev

💫 Features

singup

signup

  • nickname 중복 및 사용 불가 문자 확인
  • 최초 가입 시 사용 가능 email 여부 확인
  • 프로필 사진 등록
  • two-factor 인증 사용 여부 확인

Login

flowchart

  • 42-Oauth API를 통한 1차 인증
  • nodemailer를 이용하여 전송한 이메일 코드로 2차 인증
  • 로컬 스토리지에 JWT Access Token이 존재하는 경우 바로 로그인
  • JWT Access Token이 만료된 경우 Refresh Token을 통해 재발급

Profile

my

  • My Profile 버튼을 통해 자신의 profile 확인
  • 친구 목록 또는 채팅방 유저 목록에서 원하는 멤버의 profile 확인
  • 해당 멤버의 level, score, game history 및 달성 achievement 등 확인

Game Random Matching

ladder

  • 게임 대기큐를 이용하여 casual 및 ladder 게임 랜덤 매칭

Game Invite

invite

  • 친구 목록 또는 채팅방 유저 목록에서 원하는 멤버 casual 게임 초대
  • 초대시 상대방에게 수락 및 거절 메시지 전송

rejected

  • 상대방이 게임 초대 거절 시 초대 거절 안내

Game

game

  • 실시간 게임 진행 상황 렌더링
  • ladder 게임의 경우 결과에 따라 point 부여 및 point에 따른 level 변경
  • achivement 달성 시 반영

Ranking

ranking

  • 모든 멤버의 실시간 랭킹 순위 확인

Chat Admin

admin

  • 채팅룸 개설자의 경우 Chief Admin권한 부여
  • Chief Admin의 경우 다른 채팅방 멤버에게 Admin 권한을 부여하거나 제거할 수 있음
  • Admin 권한을 가진 경우 채팅방 멤버를 Ban, Kick, Mute 할 수 있음
  • Ban: 해당 채팅방 입장 금지, Kick: 채팅방 강제 퇴장, Mute: 일정 시간 대화 금지
  • 일반 AdminChief Admin에게 권한 박탈 및 기타 기능을 사용할 수 없음

Friends & BlackList

others

  • 친구 및 블랙리스트 목록 관리
  • 블랙리스트에 추가된 멤버의 메시지는 해당 멤버에게 미전송

Private Message

dm

  • 친구로 등록한 멤버에게 private message 전송 가능
  • private message의 경우 파란색으로 표기되며 같은 채팅방에 있지 않아도 수신할 수 있음

🌷 Commit Rules

[type] : title body #(issue number)

Commit Type v1.0 (~23/05/14)

  • [FEAT] : 새로운 기능의 추가
  • [MODIFY] : 기능 수정
  • [FIX] : 버그 수정
  • [DOCS] : 문서 수정
  • [STYLE] : CSS 변경
  • [REFACTOR] : 코드 리팩토링
  • [MERGE] : 풀리퀘스트 머지
  • [TEST] : 테스트 코드 작성

🚀 Contributers

🐿hyunjcho | 🧸sojoo | 🪐sunghkim | 🍀sokim | 🔭yachoi