https://github.com/rootkwak528/pit
WebRTC를 이용한 화상 PT와 수강신청 커뮤니티 서비스
https://github.com/rootkwak528/pit
aws-ec2 java openvidu spring-boot ubuntu vue vuex webrtc
Last synced: 3 months ago
JSON representation
WebRTC를 이용한 화상 PT와 수강신청 커뮤니티 서비스
- Host: GitHub
- URL: https://github.com/rootkwak528/pit
- Owner: rootkwak528
- Created: 2021-08-24T15:03:07.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2021-09-07T08:33:53.000Z (almost 5 years ago)
- Last Synced: 2025-01-15T07:14:37.217Z (over 1 year ago)
- Topics: aws-ec2, java, openvidu, spring-boot, ubuntu, vue, vuex, webrtc
- Language: JavaScript
- Homepage:
- Size: 19.4 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
 
   
  
# P;T 피땀눈물
## 목차
[1. P;T 소개](#1-PT-소개)
[2. 개요](#2-개요)
[3. 기술 스택](#3-기술-스택)
[4. 형상 관리](#4-형상-관리)
[5. 주기능 소개](#5-주기능-소개)
[6. 서버 구조](#6-서버-구조)
[7. 데이터베이스 구조](#7-데이터베이스-구조)
[8. 실행 방법](#8-실행-방법)
[9. Contributor](#9-contributor)
## 1. P;T 소개
- 개발기간 : 2021.07.12 - 2021.08.20
- 개발인원 : 곽호근, 서민영, 서요셉, 안대현, 윤영은
- 주제 : 화상 PT와 클래스 신청 서비스를 연계한 통합 웹 서비스
- 역할

- Backend : 서요셉, 안대현
- Frontend : 서요셉, 윤영은
- WebRTC : 곽호근, 서민영
## 2. 개요
홈트도 **😎 전문가**와 함께 하세요!
> 🥱 바쁘다바빠! 현대사회와 😷 COVID19로 인해 **언택트 라이프**가 일상에 자리잡았습니다.
>
> P;T는 코로나 감염 우려로 헬스장에 가지 못하는 사용자들을 위해 화상미팅 기능을 이용한 **PT 서비스**와 클래스를 탐색해 신청하고 관리할 수 있는 **통합 웹 사이트**를 제공하는 서비스입니다.
>
> **여러가지 운동** 카테고리를 제공하여 클래스 탐색을 도와줍니다. **일대일, 일대다 수업**으로 전문적인 코칭은 물론 모두 함께 수업하며 운동 시너지를 낼 수 있습니다.
ㅤ
### P;T 기획 배경



### P;T 기능

## 3. 기술 스택


## 4. 형상 관리
### Notion

### Jira

## 5. 주기능 소개
### 사용자별 권한 및 역할
* 관리자 : 클래스 개설 승인/거절 권한
* 트레이너 : 클래스 개설 신청 권한, 트레이닝룸 개설 권한
* 수강생 : 클래스 수강 신청 및 찜하기 권한, 본인 수업 녹화본 시청 권한
* 공통 권한 : 로그인, 로그아웃, 회원가입, 마이페이지 조회/수정, 클래스 상세 조회, 상세 검색
* 비회원 이용 가능 서비스 : 회원가입, 클래스 목록 조회, 클래스 상세 조회, 상세 검색
### 주기능 1) 클래스 개설

>**트레이너**가 클래스 개설 신청을 하게됩니다. **관리자**는 관리자 클래스 목록조회에서 클래스 개설 검수를 하여 승인/거절을 합니다.
ㅤ
### 주기능 2) 클래스 신청

>**관리자**로부터 승인 받은 클래스들만 **수강생**들에게 보여지며, **수강생**들은 이 클래스들의 상세정보를 조회할 수 있습니다. 상세보기 화면에서 클래스를 보고 원하는 클래스를 찜목록에 두거나, 신청을 할 수 있습니다.
>
### 주기능 3) PT Room 개설 및 입장


>**트레이너**는 **관리자**로부터 본인이 개설한 클래스가 승인되면, 본인의 **마이클래스 – 수강중클래스** 탭에서 개설한 클래스 목록 조회가 가능하고 PT룸을 개설할 수 있게 됩니다.
>**수강생**은 본인이 신청한 클래스를 본인의 **마이클래스 – 수강중클래스** 탭에서 신청한 클래스 목록조회가 가능하고 **트레이너**가 방을 개설해야만 PT룸에 입장할 수 있게 됩니다.
### 주기능 4) 화상 수업 및 녹화


>화상 PT룸에 들어오면 개인별 영상이 녹화가 시작되며, 종료하게 되면 그 영상은 저장이 됩니다. 사용자는 그 영상을 녹화된 영상 목록에서 조회해서 다시보기와 다운로드가 가능합니다.
## 6. 서버 구조
### WebRTC 구조

> WebRTC 는 크게 통화기능, 녹화기능이 있습니다. 이를 구현하기 위해 OpenVidu로 클라이언트를 만들고, 서버로는 OpenVidu 서버와 Kurento 미디어 서버가 사용되고 있습니다. 이들은 각각 REST API, WebSocket, webRTC로 통신하고 있습니다.
* WebRTC : WebSocket을 사용해서 1:1 (Peer to Peer) 통화 API
* Kurento : 1:1 만 가능한 WebRTC의 한계를 극복해주는 미디어서버
* OpenVidu: Kurento로 쉽게 개발할 수 있게 해주는 프레임워크
### REST API 통신 구조

> 사용자들이 로그인하여 클래스를 조회하는 웹페이지는 백엔드, 프론트엔드 서버에서 구성이 되고 화상 PT룸으로 입장할때는 443포트로 OpenVidu 서버에서 화상피티가 진행되고 녹화 비디오가 저장될때, 피티룸의 인원체크를 할때 백엔드서버와도 통신을 합니다.
## 7. 데이터베이스 구조

## 8. 실행 방법
### BackEnd
1. 디렉토리를 이동합니다.
```
cd backend
```
2. gradle 프로젝트를 빌드합니다.
```
./gradlew build
```
3. `./gradlew build` 가 안되면 아래 명령어를 실행 후 빌드합니다.
```
chmod 777 gradlew
```
4. build/libs로 이동하고 생성된 .jar 파일을 실행합니다.
```
cd build/libs
java -jar backend-0.0.1-SNAPSHOT.jar
```
### FrontEnd
1. 디렉토리를 이동합니다.
```
cd frontend
```
2. 필요한 package들을 설치합니다.
```
npm install
```
3. 실행합니다.
```
npm run serve
```
### WebRTC
1. 아래 링크 참고하여 OpenVidu 서버를 설치하고 실행합니다. (단, Linux 환경에서만 설치 가능)
https://docs.openvidu.io/en/2.19.0/deployment/ce/on-premises/
```
./openvidu start
```
2. 본 레포지토리에 포함된 OpenVidu 클라이언트를 실행합니다.
```
cd webRTC/pit_ptroom/mvn package exec:java
```
## 9. Contributor
- AhnDaeHyun : daehyun1023@naver.com
- KwakHoGeun : rootkwak528@gmail.com
- SeoMinYeong : 210113yynim@naver.com
- SeoYoSeph : tjdytpq0310@gmail.com
- YunYeongEun : ounog@naver.com
**Fin.**