jam(초성게임)
‘ㅇㄱ’, ‘ㅅㅈ’ 같은 자음을 주제로 한사람 한사람 단어를 말하며 이어나가며 마지막에 단어를 말하지 못한 사람이 지게 되는 혹은 가장 많이 말하는 사람이 이기는 게임입니다.
https://www.erdcloud.com/d/tBybEs5hsPZTwpuGe

{
"sameword::${roomId}" : [
{"userId": 유저 고유번호, "nickname": "유저 닉네임", "word": "작성단어"},
...
]
}
{
"participant::${roomId}": 참가자 수
}
{
"gameOrder::${roomId}": 현재 순서
}
{
"chat::${roomId}": [
{"userId": 유저 고유번호, "nickname": "유저 닉네임", "message": "작성단어", "createdAt":"작성시간"},
...
]
}
- 게임 준비
- 게임 시작
- 채팅
- 게임 초성 제공 (redis 사용)
- 채팅 - 초성 이어가기
- 자기 순서에만 채팅을 할 수 있다.
- 사전에 등록되어 있는 단어 인지 판별하기
- 올바른 단어를 말한 사람 점수 추가
- 올바른 단어 체크 (사전 DB 관리 목록에 자세히 작성)
- 중복 단어 체크
- 금지 단어 체크
- 우승자 결정
- 여러가지 조건에 맞춰 방 만들기
- 참가자 생성 및 redis 사용하여 참가자 수 적용
- 인원수 설정
- 비밀번호
- 방 검색 및 필터 기능
- 검색 - elastic search 사용
- 방 조회 및 필터querydsl 사용
- 참가자 방 입장
- 참가자 수 redis 및 db로 관리
- 방 입장 동시성 이슈 해결 (lock 구현)
- 방 삭제 (상태 변경)
- memoryDb(Redis), mainDb(Mysql)에서 사용자가 입력한 단어 확인
- 단어가 Db에 없으면 사전 API(Naver Search API) 요청 후 단어 확인
- 사용자가 입력한 단어 mainDb, memoryDb에 저장
- 카카오 소셜 로그인 or 네이버 소셜 로그인
- JWT, Spring Security
- 앱 자체 회원가입, 로그아웃, 회원탈퇴
- 블랙리스트 지정
- 친구(양방향)
- 친구 추가
- 친구 초대
- 친구 프로필 보기
- 문제 틀린 사람은 탈락처리 (순서전)
- 단어 말한사람 말한 점수 추가 (난타전)
- 힌트 주기
- 초대하기
- 개인전, 팀전
- 해당 방 블랙리스트 입장 불가(redis 사용)
- db 인덱싱 적용
- 검색 기능 elactic search 적용
- redi
- Spring-boot(Java)
- MySQL
- Redis
- WebSocket
- JPA
- Querydsl
- Naver Search API
- Kakao Oauth API or Naver Oauth API
- ElasticSearch
- JWT
- Spring Security
- Docker
- GCP or AWS or Firebase
- websocket (채팅)
- naver search api (유저가 작성한 단어의 유무 체크)
- JPA
- querydsl
- elasticsearch
- redis (블랙리스트 체크)
- JWT
- Spring Security
- Kakao Oauth API or Naver Oauth API