Not about Johnny Depp's movie.
이번 프로젝트는 지금 까지 배워온 지식을 바탕으로 Pong 게임을 즐길 수 있는 웹사이트를 구현하는 것이 목표입니다.
게임은 로그인 후 즐길 수 있으며 기본적으로 등록한 메일로 12자리 무작위 코드를 보내 2차 인증을 합니다.
게임은 오프라인과 온라인으로 즐길 수 있으며, 온라인으로 플레이 할 경우 대기방에 접속하여 준비가 완료되면 게임이 시작됩니다.
구현된 웹 사이트는 외부 라이브러리의 도움없이 Single Page Application 을 경험할 수 있도록 만들었습니다.
모든 서비스는 도커 컨테이너로 구현되어 도커 컴포즈를 사용하여 간단하게 빌드 가능합니다.
Vanilla Javascript
Bootstrap toolkit
ThreeJs
NginX
Django
daphne
channels
rest-frame-work
simplejwt
PostgreSQL
User, 2FA, JWT blacklist 등 사용자의 인증과 관리를 위하여 사용합니다.
Redis
게임 전 대기방, 즉 Room을 관리하는 Room Manager의 역할을 위하여 사용합니다. 또한 Django Channels 라이브러리의 채널 레이어에 사용됩니다.
WebSocket Communication Diagram
도커 컴포즈를 실행하기 전 최상위 경로에 아래의 3개의 파일이 있어야 정상적으로 서비스가 구동됩니다.
.env
# # postgresql
DB_ENGINE=django.db.backends.postgresql
DB_NAME= # 생성되 DB 이름
DB_USER= # PostgreSQL 유저
DB_PASSWORD= # PostgreSQL 유저 password
DB_HOST=postgresql
DB_PORT= # PostgreSQL 포트
# # django
SERVER_HOST= # 외부에서 접근할 도메인 혹은 IP
DJANGO_HOST=django
DJANGO_PORT= # Django 포트
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER= # Email에 사용될 유저
EMAIL_PASSWORD= # Email에 사용될 유저 password
JWT_SECRET= # Django Secret
OAUTH_TOKEN_URL=https://api.intra.42.fr/oauth/token
OAUTH_PROFILE_URL=https://api.intra.42.fr/v2/me
OAUTH_REDIRECT_URL=https://$SERVER_HOST /user/oauth/ # 42API에도 동일하게 등록
OAUTH_UID= # 42API에서 발급받은 UID
OAUTH_SECRET= # 42API에서 발급받은 SECRET
OAUTH_URL= # 42API에서 발급받은 URL
# # redis
REDIS_HOST=redis
REDIS_PORT=6379
.private.crt
인증서 생성 예시
openssl req -new -newkey rsa:2048 -nodes -keyout private.key -out private.csr -subj " /C=KR/L=Seoul/O=?/OU=?/CN=?"
.private.key
인증서 키 생성 예시
openssl x509 -req -days 365 -in ./private.csr -signkey private.key -out private.crt
Rules
Description
all
Create and run Docker containers and images.
stop
Stop running Docker containers.
start
Start stopped Docker containers.
clean
Terminate created Docker containers.
fclean
Remove all created Docker containers and images.
re
Recreate Docker containers and images after removing them.