Closed Tolerblanc closed 1 year ago
일부 항목에 대해서는 체크 후 디펜스 근거까지 작성해놓겠습니다!
[x] 백엔드는 NestJS로 작성되어야 합니다.
NestJS
[x] 프론트엔드는 TypeScript를 사용하는 프레임워크로 작성되어야 합니다.
TypeScript
[x] 맥락에 맞는 어떠한 라이브러리든 사용할 수 있지만, 해당 라이브러리는 반드시 최신 안정 버전 이여야 합니다.
[x] 반드시 PostgreSQL 데이터베이스를 사용해야 합니다.
PostgreSQL
[x] 반드시 SPA(Single-Page Application) 으로 구현해야 합니다. 유저는 브라우저의 “뒤로”, “앞으로” 버튼을 사용할 수 있어야 합니다.
SPA(Single-Page Application)
[x] 웹사이트는 최신 안정버전의 크롬 + 원하는 웹브라우저 와 호환되어야 합니다.
[x] 유저는 웹사이트를 사용하면서, 핸들링되지 않은 에러와 경고를 만나지 않아야 합니다.
[x] 모든 것은 단 하나의 명령으로 실행되어야 합니다. : docker-compose up —-build (make 없이 이 명령만으로 서버 올라가는 지 체크!!)
docker-compose up —-build
make
[x] DB에 저장되는 모든 패스워드는 반드시 hashed 여야 합니다.
hashed
[x] 강력한 비밀번호 해싱 알고리즘을 사용하세요.
bcrypt
[x] #36
[x] 폼들과 어떤 사용자 입력에 대해 서버사이드 검증이 구현되어야 합니다.
[x] 명백한 보안적인 사유 때문에, API 키나 자격 증명, 환경 변수 등은 .env 파일로 로컬에만 보관하고 git에 올라가지 않도록 하세요.
.env
[x] 사용자는 42인트라넷의 OAuth 시스템을 통해 로그인해야 합니다.
[x] 사용자는 웹사이트에 표기될 유니크한 이름을 고를 수 있어야 합니다.
[x] 사용자는 아바타를 업로드할 수 있어야 합니다. 업로드하지 않더라도 기본으로 하나는 설정되어 있어야 합니다.
[x] 사용자는 2단계 인증을 사용하도록 설정할 수 있어야 합니다.
[x] 사용자는 다른 사용자를 친구로 추가할 수 있어야 하며, 그들의 현재 상태(온/오프라인, 게임중 등등)를 확인할 수 있어야 합니다.
[x] 통계(승/패, 레더 레벨, 업적 등)가 사용자 프로필에 표기되어야 합니다.
[x] 각 유저는 1대1 게임, 레더 등을 포함하는 매치 기록을 가져야 합니다. 로그인이 가능한 사람은 이를 확인할 수 있어야 합니다.
[x] 유저들을 위한 채팅 시스템을 만들어야 합니다.
[x] 유저는 채널(채팅방)을 만들 수 있어야 하며, 해당 채널은 공개/비공개/잠김 상태일 수 있습니다.
[x] 유저는 다른 유저에게 DM을 보낼 수 있습니다.
[x] 유저는 다른 유저를 차단할 수 있습니다. 차단된 계정으로 부터 오는 메시지는 더이상 볼 수 없습니다.
[x] 채널을 생성한 유저는 떠나기 전 까지 자동으로 채널 소유자가 됩니다.
[x] 채팅 인터페이스를 통해 다른 유저를 퐁 게임으로 초대할 수 있어야 합니다.
[x] 채팅 인터페이스를 통해 다른 플레이어의 프로필에 접근할 수 있어야 합니다.
[x] 따라서 사용자는 웹사이트에서 직접 다른 플레이어와 실시간 퐁 게임을 즐길 수 있어야 합니다.
[x] 매치메이킹 시스템이 존재해야 합니다. 유저는 다른 누군가와 자동으로 매칭될 때까지 대기열에 포함되어 있을 수 있습니다.
[x] 게임 구현에는 캔버스를 사용할 수 있고, 3D 렌더링을 해도 좋습니다. 못생길 수 있으나, 어쨌든 원작 퐁(1972)게임에 충실해야 합니다.
[x] 일부 사용자 지정 옵션(예: 파워업 또는 다른 맵)을 제공해야 합니다. 그러나 사용자가 원할 경우 추가 기능이 없는 기본 버전의 게임을 선택할 수 있어야 합니다.
[x] 게임은 반응성이 뛰어나야 합니다.
[x] 랙이나 끊김등의 네트워크 이슈에 대해 생각하세요. 가능한 한 최고의 UX를 제공해야 합니다.
slackId
userName
채팅창 채팅 이슈
-> 새로고침으로 해결 가능
요약
내용
Mandatory
[x] 백엔드는
NestJS
로 작성되어야 합니다.[x] 프론트엔드는
TypeScript
를 사용하는 프레임워크로 작성되어야 합니다.[x] 맥락에 맞는 어떠한 라이브러리든 사용할 수 있지만, 해당 라이브러리는 반드시 최신 안정 버전 이여야 합니다.
[x] 반드시
PostgreSQL
데이터베이스를 사용해야 합니다.[x] 반드시
SPA(Single-Page Application)
으로 구현해야 합니다. 유저는 브라우저의 “뒤로”, “앞으로” 버튼을 사용할 수 있어야 합니다.[x] 웹사이트는 최신 안정버전의 크롬 + 원하는 웹브라우저 와 호환되어야 합니다.
[x] 유저는 웹사이트를 사용하면서, 핸들링되지 않은 에러와 경고를 만나지 않아야 합니다.
[x] 모든 것은 단 하나의 명령으로 실행되어야 합니다. :
docker-compose up —-build
(make
없이 이 명령만으로 서버 올라가는 지 체크!!)[x] DB에 저장되는 모든 패스워드는 반드시
hashed
여야 합니다.[x] 강력한 비밀번호 해싱 알고리즘을 사용하세요.
bcrypt
로 해시해주면 될 것 같습니다.[x] #36
[x] 폼들과 어떤 사용자 입력에 대해 서버사이드 검증이 구현되어야 합니다.
[x] 명백한 보안적인 사유 때문에, API 키나 자격 증명, 환경 변수 등은
.env
파일로 로컬에만 보관하고 git에 올라가지 않도록 하세요.[x] 사용자는 42인트라넷의 OAuth 시스템을 통해 로그인해야 합니다.
[x] 사용자는 웹사이트에 표기될 유니크한 이름을 고를 수 있어야 합니다.
[x] 사용자는 아바타를 업로드할 수 있어야 합니다. 업로드하지 않더라도 기본으로 하나는 설정되어 있어야 합니다.
[x] 사용자는 2단계 인증을 사용하도록 설정할 수 있어야 합니다.
[x] 사용자는 다른 사용자를 친구로 추가할 수 있어야 하며, 그들의 현재 상태(온/오프라인, 게임중 등등)를 확인할 수 있어야 합니다.
[x] 통계(승/패, 레더 레벨, 업적 등)가 사용자 프로필에 표기되어야 합니다.
[x] 각 유저는 1대1 게임, 레더 등을 포함하는 매치 기록을 가져야 합니다. 로그인이 가능한 사람은 이를 확인할 수 있어야 합니다.
[x] 유저들을 위한 채팅 시스템을 만들어야 합니다.
[x] 유저는 채널(채팅방)을 만들 수 있어야 하며, 해당 채널은 공개/비공개/잠김 상태일 수 있습니다.
[x] 유저는 다른 유저에게 DM을 보낼 수 있습니다.
[x] 유저는 다른 유저를 차단할 수 있습니다. 차단된 계정으로 부터 오는 메시지는 더이상 볼 수 없습니다.
[x] 채널을 생성한 유저는 떠나기 전 까지 자동으로 채널 소유자가 됩니다.
[x] 채팅 인터페이스를 통해 다른 유저를 퐁 게임으로 초대할 수 있어야 합니다.
[x] 채팅 인터페이스를 통해 다른 플레이어의 프로필에 접근할 수 있어야 합니다.
[x] 따라서 사용자는 웹사이트에서 직접 다른 플레이어와 실시간 퐁 게임을 즐길 수 있어야 합니다.
[x] 매치메이킹 시스템이 존재해야 합니다. 유저는 다른 누군가와 자동으로 매칭될 때까지 대기열에 포함되어 있을 수 있습니다.
[x] 게임 구현에는 캔버스를 사용할 수 있고, 3D 렌더링을 해도 좋습니다. 못생길 수 있으나, 어쨌든 원작 퐁(1972)게임에 충실해야 합니다.
[x] 일부 사용자 지정 옵션(예: 파워업 또는 다른 맵)을 제공해야 합니다. 그러나 사용자가 원할 경우 추가 기능이 없는 기본 버전의 게임을 선택할 수 있어야 합니다.
[x] 게임은 반응성이 뛰어나야 합니다.
[x] 랙이나 끊김등의 네트워크 이슈에 대해 생각하세요. 가능한 한 최고의 UX를 제공해야 합니다.
Feature Test & Edge Cases
slackId
를userName
으로 가지는 사람이 있다면, 해당slackId
가 가입하는 시점에서의userName
처리