채팅(Chatting) + 마피아 게임(Mafia)의 합성어, 실시간 채팅으로 마피아 게임을 즐길 수 있는 웹 서비스
- 2023.08.09 ~ 2023.09.14 (5주)
인터넷에서 함께 즐길 수 있는 웹 게임에 대한 수요는 꾸준히 증가하고 있습니다. 또한 어몽어스, 구스구스덕, 마피아 42 등 마피아 게임 콘텐츠에 대한 인기는 계속 해서 늘어나고 있습니다.
유일하게 웹에서 할 수 있었던 마피아 챗 게임 서비스는 2023년에 종료가 되었고, 타 마피아 게임 콘텐츠도 모바일 전용이거나 게임 설치를 해야 하는 불편함이 있습니다.
챗피아(ChatFia)는 웹 접속만으로도 사용자들과 실시간 채팅으로 게임을 즐길 수 있다는 큰 차별성이 있습니다. 이러한 흐름에 따라 사용자들에게 쉽고 재밌는 서비스를 제공하고자 기획 되었습니다.
기능 | 설명 |
---|---|
채팅방 목록 검색/조회 | 게임 진행중/대기중에 대한 모든 채팅방을 검색하고, 조회할 수 있습니다. |
채팅방 생성 | 제목, 인원수, 비밀번호를 설정하여 채팅방을 생성할 수 있습니다. |
채팅방 공유 | 카카오톡 공유하기, URL 복사를 통해 채팅방 공유가 가능합니다. |
채팅 | 사회자 역할을 하는 admin 기준으로 게임을 진행할 수 있습니다. |
게임 기록 조회 | 게임기록에 대한 횟수/승률을 한 눈에 확인할 수 있습니다. |
프로필 설정/변경 | 프로필 이미지, 닉네임을 설정하고 변경할 수 있습니다. |
팀원 | 담당 | GitHub |
---|---|---|
이우영 👑 | 채팅방 Exception FE |
@ujumom |
이나연 | spring security 설정 회원 관리 기능 |
@nayonnii |
이희건 | 채팅 게임 로직 |
@dlrjs2360 |
정수현 | CI/CD 채팅방 검색 기능 |
@walwaljj |
조희수 | 채팅 게임 투표 로직 |
@ranunclulus |
Git
- issue template 작성 - 브랜치 생성 - 작업 완료 - pull request templates 작성 - develop merge - test
branch 생성 규칙
- 모든 기능은 develop 브랜치에서 새 브랜치를 생성하여 작업
- [기능]/[이슈 번호] 로 브랜치 생성
commit 생성 규칙 #✨ feat: <새로운 기능> #🚚 chore: 코드 의미에 영향을 주지 않는 변경사항 (형식 지정, 세미콜론 누락, gitignore 등) #👷 ci: CI, 자동화 기능 #📝 docs: 문서의 추가, 수정, 삭제 #♻️ refactor: 코드 리팩토링 #🧪 test: 테스트 추가, 수정, 삭제 (비즈니스 로직에 변경 없음) #💄 style: 코드 스타일 혹은 포맷 등에 관한 커밋 #⏪ revert: 깃 revert #⚡️ perf: 퍼포먼스 상향 #🐛 fix: 버그
자세히
├─java
│ └─com
│ └─springles
│ │ SpringlesApplication.java
│ │
│ ├─config
│ │ LoginFailureHandler.java
│ │ LoginSuccessHandler.java
│ │ MailConfig.java
│ │ QueryDslConfig.java
│ │ RedisConfig.java
│ │ RedisInitializer.java
│ │ SwaggerConfig.java
│ │ TimeConfig.java
│ │ WebSecurityConfig.java
│ │ WebSocketStompConfig.java
│ │
│ ├─controller
│ │ ├─api
│ │ │ ChatRoomController.java
│ │ │ CookieController.java
│ │ │ MemberController.java
│ │ │
│ │ ├─message
│ │ │ MessageController.java
│ │ │ VoteController.java
│ │ │
│ │ └─ui
│ │ ChatRoomUiController.java
│ │ ChatUiController.java
│ │ MemberUiController.java
│ │
│ ├─domain
│ │ ├─base
│ │ │ .keep
│ │ │
│ │ ├─constants
│ │ │ BaseEnumCode.java
│ │ │ ChatRoomCode.java
│ │ │ GamePhase.java
│ │ │ GameRole.java
│ │ │ GameRoleNum.java
│ │ │ Level.java
│ │ │ ProfileImg.java
│ │ │ ResponseCode.java
│ │ │
│ │ ├─dto
│ │ │ ├─chatroom
│ │ │ │ ChatRoomCreateResponseDto.java
│ │ │ │ ChatRoomReqDTO.java
│ │ │ │ ChatRoomResponseDto.java
│ │ │ │ ChatRoomUpdateReqDto.java
│ │ │ │
│ │ │ ├─cookie
│ │ │ │ CookieSetRequest.java
│ │ │ │
│ │ │ ├─member
│ │ │ │ MemberCreateRequest.java
│ │ │ │ MemberDeleteRequest.java
│ │ │ │ MemberInfoResponse.java
│ │ │ │ MemberLoginRequest.java
│ │ │ │ MemberLoginResponse.java
│ │ │ │ MemberProfileCreateRequest.java
│ │ │ │ MemberProfileRead.java
│ │ │ │ MemberProfileResponse.java
│ │ │ │ MemberProfileUpdateRequest.java
│ │ │ │ MemberRecordResponse.java
│ │ │ │ MemberSimpleProfileResponse.java
│ │ │ │ MemberUpdateRequest.java
│ │ │ │ MemberVertifIdRequest.java
│ │ │ │ MemberVertifPwRequest.java
│ │ │ │ PlayerInfoRequest.java
│ │ │ │ PlayerInfoResponse.java
│ │ │ │
│ │ │ ├─message
│ │ │ │ DayDiscussionMessage.java
│ │ │ │ DayEliminationMessage.java
│ │ │ │ NightVoteMessage.java
│ │ │ │ RoleExplainMessage.java
│ │ │ │
│ │ │ ├─response
│ │ │ │ PlayerStatus.java
│ │ │ │ ResResult.java
│ │ │ │
│ │ │ └─vote
│ │ │ ConfirmResultResponseDto.java
│ │ │ GameSessionVoteRequestDto.java
│ │ │ VoteResultResponseDto.java
│ │ │
│ │ └─entity
│ │ BlackListToken.java
│ │ ChatRoom.java
│ │ GameRecord.java
│ │ GameSession.java
│ │ Member.java
│ │ MemberGameInfo.java
│ │ MemberRecord.java
│ │ Player.java
│ │ RefreshToken.java
│ │ Vote.java
│ │ VoteInfo.java
│ │
│ ├─exception
│ │ │ CustomException.java
│ │ │ ErrorResponse.java
│ │ │ GlobalExceptionHandler.java
│ │ │
│ │ └─constants
│ │ ErrorCode.java
│ │
│ ├─game
│ │ │ ChatMessage.java
│ │ │ DayDiscussionManager.java
│ │ │ DayEliminationManager.java
│ │ │ DayToNightManager.java
│ │ │ GameSessionManager.java
│ │ │ MessageManager.java
│ │ │ NightVoteManager.java
│ │ │ RoleManager.java
│ │ │
│ │ └─task
│ │ VoteFinTimerTask.java
│ │
│ ├─jwt
│ │ JwtExceptionFilter.java
│ │ JwtTokenFilter.java
│ │ JwtTokenUtils.java
│ │
│ ├─repository
│ │ │ BlackListTokenRedisRepository.java
│ │ │ ChatRoomJpaRepository.java
│ │ │ GameRecordJpaRepository.java
│ │ │ GameSessionRedisRepository.java
│ │ │ MemberGameInfoJpaRepository.java
│ │ │ MemberJpaRepository.java
│ │ │ MemberRecordJpaRepository.java
│ │ │ PlayerRedisRepository.java
│ │ │ RefreshTokenRedisRepository.java
│ │ │ VoteRedisRepository.java
│ │ │ VoteRepository.java
│ │ │
│ │ ├─custom
│ │ │ ChatRoomJpaRepositoryCustom.java
│ │ │ MemberJpaRepositoryCustom.java
│ │ │
│ │ ├─impl
│ │ │ ChatRoomJpaRepositoryImpl.java
│ │ │ MemberJpaRepositoryImpl.java
│ │ │
│ │ └─support
│ │ Querydsl4RepositorySupport.java
│ │
│ ├─service
│ │ │ ChatRoomService.java
│ │ │ CookieService.java
│ │ │ GameSessionVoteService.java
│ │ │ MemberService.java
│ │ │
│ │ └─impl
│ │ ChatRoomServiceImpl.java
│ │ CookieServiceImpl.java
│ │ GameSessionVoteServiceImpl.java
│ │ MemberServiceImpl.java
│ │
│ └─valid
│ ValidationGroups.java
│ ValidationSequence.java
│
└─resources
│ application-dev.yml
│ application-prod.yml
│ application-redis.yml
│ application.yml
│ data.sql
│
├─static
│ ├─css
│ │ basic.css
│ │
│ ├─images
│ │ │ icon_chatroom_info.png
│ │ │ icon_lv_info_btn.png
│ │ │ lock.png
│ │ │ logo.png
│ │ │ profile.png
│ │ │ profile_01.jpg
│ │ │ profile_02.jpg
│ │ │ profile_03.jpg
│ │ │ profile_04.jpg
│ │ │ profile_05.jpg
│ │ │ profile_06.jpg
│ │ │ search.png
│ │ │
│ │ └─level
│ │ ASSOCIATE.png
│ │ BEGINNER.png
│ │ BOSS.png
│ │ CAPTAIN.png
│ │ SOLDIER.png
│ │ UNDERBOSS.png
│ │
│ └─js
│ stomp.js
│
└─templates
│ chat-lobby.html
│ chat-room.html
│ rooms.html
│
├─fragments
│ footer.html
│ header.html
│
├─home
│ add.html
│ index.html
│
├─layouts
│ basic.html
│
└─member
login.html
member-info.html
member-sign-out.html
my-page.html
profile-change.html
profile-settings.html
sign-up.html
vertification-id.html