- 프로젝트명: 시너지
- 서비스 특징: 레크리에이션 자동 진행 기능이 추가된 화상 회의 프로그램
- 기획 배경
- 코로나19 이후 온라인으로 만나는 일이 잦아졌는데, 온라인은 오프라인에 비해 느껴지는 집중도나 몰입감, 친밀감이 다를 수 밖에 없다.
- 온라인 회의 역시 늘어나 온라인 상으로 레크리에이션을 진행하는 일이 많은데, 게임 진행을 위한 프로그램을 실행하고, 화상 회의 프로그램으로 이를 화면 공유해 진행한다.
- 프로그램을 여러 개 켜는 것 자체도 번거롭고, 온라인이기 때문에 진행에도 애로 사항이 많다.
- 이를 해소하기 위해 한 프로그램 내에서 화상 회의와 게임 진행을 하는 프로그램을 개발했다.
- 주요 기능
- 문제집 커스터마이즈
- 링크 공유
- 주요 기술
- WebRTC
- JWT Authentication
- REST API
- 참조 리소스
- OpenVidu
- Material UI
- 배포 환경
- AWS Ubuntu 18.04
- 전종민(팀장, 백엔드): 로그인, 화상 회의, 레크리에이션 게임 로직 개발
- 강봉민(백엔드): 회원가입, 트러블 슈팅, 배포 관련 설정(HTTPS), 화상 회의
- 조민서(백엔드): 마이페이지, 화상 회의
- 김수정(프론트엔드):
- 김영훈(프론트엔드): 게임생성 페이지, 게임 페이지, 전반적인 UI 디자인
- Windows 10 + WSL
- AWS Ubuntu 18.04
- 백엔드
- Java 11
- Gradle 6.7
- Spring Boot 2.4.5
- 프론트엔드
- node 16.15.1
- npm 8.12.2
- nvm 1.1.9
- 데이터베이스
- MariaDB 10.6
- Redis 3.0.5
- 프론트엔드
- React
- TypeScript
- Material UI
- Sweet Alert 2
- 백엔드
- Spring Boot
- Spring Security
- JWT
- JPA
- 데이터베이스
- MariaDB
- Redis
- 오픈소스 API
- OpenVidu
- 협업 툴
- Jira
- Gitlab
- MatterMost
- Notion
- 인프라
- Docker
- Jenkins
- AWS EC2
-
전종민(팀장, 백엔드)
JPA나 스프링 시큐리티, WebRTC와 같은 개발 지식 외에 일정 관리와 위험 관리의 중요성을 배울 수 있는 값진 경험이었던 것 같습니다. 좋은 팀원들 만나서 프로젝트 잘 완성할 수 있었던 것 같습니다. 다들 너무 고생하셨습니다!
-
강봉민(백엔드)
JPA, React, 함수형 프로그래밍, WebRTC 등 여러 새로운 시도들을 할 수 있었던 프로젝트였습니다. 7주 간의 짧은 기간이라 빠르게 공부하고 바로 개발해야 해서 불안했지만 다른 팀원분들이 적극적으로 의견을 내주신 덕분에 잘 해낼 수 있었던 것 같습니다. 일정 관리와 미처 개발하지 못한 부분이 아쉽지만 재밌었습니다. 다들 고생 많으셨고 감사합니다!
-
조민서(백엔드)
기존 프로젝트들에서 사용하지 않았던 WebRTC와 JPA를 공부하여 사용하고, Jira 관리를 하며 기획과 일정에 대한 중요성을 다시 한 번 경험하게 되었습니다. 중간 중간 면접 때문에 빠졌는데, 좋은 팀원들의 많은 도움을 받아 잘 마무리할 수 있어서 진짜 정말 감사합니다!!
-
김수정(프론트엔드)
스스로 좀 더 열심히 잘할 수 있었을텐데 하는 아쉬움도 많이 있고, 팀원분들께 도움을 정말 많이 받아 항상 감사했습니다. 기본적인 질문에도 늘 친절히 알려주셔서 너무 감사합니다!! 그리고 어려운 내용에 당황하지 않고 차근히 해결해나가시는 모습에서 많이 배웠습니다. 다들 고생하셨습니다!
-
김영훈(프론트엔드)
React를 처음 접하며 많은 걸 배웠습니다. 특히 Vanilla JS에 대한 역량의 중요성을 많이 느꼈으며, 추후 학습 방향을 정할 수 있는 기회였습니다. 또한 서비스 개발의 전 과정을 대략적으로 경험할 수 있어서 뜻 깊은 프로젝트였습니다. 매우 실력있는 팀원 분들을 만나 많은 것을 배우고 느꼈습니다. 감사합니다!
회원 가입 시 닉네임과 이메일 중복 체크를 해야 하고, 비밀 번호 다시 입력해 확인을 해야 한다.
회원 가입을 하고 나면 인증용 이메일이 발송되고, 인증 링크를 클릭하지 않으면 로그인 시 이메일 인증을 하라는 경고가 뜬다.
마이페이지에서는 회원 탈퇴, 문제집 생성, 문제집 삭제, 전체 문제집 삭제를 할 수 있다.
문제집은 레크리에이션에서 사용할 문제들의 모음집으로, 단체의 특성에 맞게 커스터마이즈할 수 있다.
문제집 생성 시 문제집의 이름과, 어떤 게임에서 사용할 문제집인지 정하고, 문제집의 문제들을 작성한 뒤 생성한다.
채널 생성 시 어떤 게임을 플레이 할 것인지, 개인전/팀전 중 하나를 고르고, 어떤 문제집을 사용할 것인지, 몇 라운드 플레이 할 것인지 선택한 뒤 채널을 생성한다.
채널을 생성하고 난 뒤의 화면이다. 카메라와 마이크 on/off, 채팅이 가능하다.
초대 링크 버튼을 클릭하면 초대 링크가 클립보드에 복사된다. 다른 사용자들에게 이 링크를 공유해 참여하도록 할 수 있다.
게임 시작 버튼을 누르면 초기에 설정한 게임이 시작된다.
초대 링크를 받아 참가할 때의 화면이다. 채널에 있는 다른 사용자들과 닉네임이 중복되진 않는지 확인하고 입장할 수 있다.
호스트 화면과 다른 게스트 화면을 확인할 수 있다. 초대 링크나 게임 시작 버튼이 없는 모습이다.
게임이 시작되면 서버로부터 문제집과 사용자 목록을 불러와 무작위로 정렬해 출제 순서를 정한다.
출제자 화면이다. 출제자에게만 문제의 정답을 알려준다.
채팅에 정답이 나왔다면 채널에 있는 모든 사람들에게 맞춘 사람의 닉네임을 표시한다
게임의 규칙상 출제자는 마이크와 채팅을 사용할 수 없고, 카메라를 끌 수 없다.
게임이 종료되면 게임 종료 표시 후 어떤 플레이어가 몇 개를 맞췄는지 결과를 표시한다.