./
├── 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
$ git clone https://github.com/WallyPfister/transcendence.git
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]
To run containers in the background mode...
$ make
See what is happening in the containers...
$ make dev
- nickname 중복 및 사용 불가 문자 확인
- 최초 가입 시 사용 가능 email 여부 확인
- 프로필 사진 등록
- two-factor 인증 사용 여부 확인
- 42-Oauth API를 통한 1차 인증
- nodemailer를 이용하여 전송한 이메일 코드로 2차 인증
- 로컬 스토리지에 JWT Access Token이 존재하는 경우 바로 로그인
- JWT Access Token이 만료된 경우 Refresh Token을 통해 재발급
- My Profile 버튼을 통해 자신의 profile 확인
- 친구 목록 또는 채팅방 유저 목록에서 원하는 멤버의 profile 확인
- 해당 멤버의 level, score, game history 및 달성 achievement 등 확인
- 게임 대기큐를 이용하여 casual 및 ladder 게임 랜덤 매칭
- 친구 목록 또는 채팅방 유저 목록에서 원하는 멤버 casual 게임 초대
- 초대시 상대방에게 수락 및 거절 메시지 전송
- 상대방이 게임 초대 거절 시 초대 거절 안내
- 실시간 게임 진행 상황 렌더링
- ladder 게임의 경우 결과에 따라 point 부여 및 point에 따른 level 변경
- achivement 달성 시 반영
- 모든 멤버의 실시간 랭킹 순위 확인
- 채팅룸 개설자의 경우
Chief Admin권한 부여 Chief Admin의 경우 다른 채팅방 멤버에게 Admin 권한을 부여하거나 제거할 수 있음Admin권한을 가진 경우 채팅방 멤버를 Ban, Kick, Mute 할 수 있음Ban: 해당 채팅방 입장 금지,Kick: 채팅방 강제 퇴장,Mute: 일정 시간 대화 금지- 일반
Admin은Chief Admin에게 권한 박탈 및 기타 기능을 사용할 수 없음
- 친구 및 블랙리스트 목록 관리
- 블랙리스트에 추가된 멤버의 메시지는 해당 멤버에게 미전송
- 친구로 등록한 멤버에게 private message 전송 가능
- private message의 경우 파란색으로 표기되며 같은 채팅방에 있지 않아도 수신할 수 있음
[type] : title body #(issue number)
- [FEAT] : 새로운 기능의 추가
- [MODIFY] : 기능 수정
- [FIX] : 버그 수정
- [DOCS] : 문서 수정
- [STYLE] : CSS 변경
- [REFACTOR] : 코드 리팩토링
- [MERGE] : 풀리퀘스트 머지
- [TEST] : 테스트 코드 작성












