|
1 | 1 | <div align="center">
|
2 | 2 | <h1> 라이부 LiBoo </h1>
|
3 | 3 | <h3> 컨퍼런스를 더 가까이, LiBoo 에서 라이브로 🚀 </h3>
|
| 4 | + <br/> |
| 5 | + <p align=center> |
| 6 | + <a href="https://gominzip.notion.site/TEAM-127673f3719e803faf63c70322560d3b?pvs=4"> Notion </a> | |
| 7 | + <a href="https://www.figma.com/design/op5Ui6oZ4Zx2D8VUgWOKM0/LiBoo-%F0%9F%9A%80?node-id=1-2&node-type=canvas&t=zcYYT1qCtckcUdcs-0"> Figma </a> | |
| 8 | + <a href="https://github.com/boostcampwm-2024/web22-LiBoo/wiki"> Wiki </a> | |
| 9 | + <a href="https://github.com/orgs/boostcampwm-2024/projects/17"> BackLog </a> |
| 10 | +</p> |
4 | 11 | </div>
|
5 | 12 |
|
6 | 13 | <br/>
|
7 | 14 |
|
8 |
| -<p align=center> |
9 |
| - <a href="https://gominzip.notion.site/TEAM-127673f3719e803faf63c70322560d3b?pvs=4"> 팀 노션 </a> ╎ |
10 |
| - <!-- <a href="https://github.com/orgs/boostcampwm2023/projects/80">백로그</a> ╎ --> |
11 |
| - <!-- <a href="https://www.notion.so/04317c11a3d240408383dab9249527a2">기획서</a> ╎ --> |
12 |
| - <a href="https://www.figma.com/design/op5Ui6oZ4Zx2D8VUgWOKM0/LiBoo-%F0%9F%9A%80?node-id=1-3&t=WOh9pRJjrJinyUFT-1"> Figma </a> ╎ |
13 |
| - <a href="https://gominzip.notion.site/12d673f3719e8109b9d4d3d63f74a988?pvs=4"> 그라운드 룰 </a> ╎ |
14 |
| - <a href="https://gominzip.notion.site/12d673f3719e8098ad94ed6b71b10ac0?pvs=4"> 기술 정리 노트 </a> ╎ |
15 |
| - <a href="https://gominzip.notion.site/12d673f3719e8012b6a9fa08b8662ad3?pvs=4"> 회의록 </a> |
16 |
| -</p> |
| 15 | +## 프로젝트 개요 |
| 16 | + |
| 17 | +> 토스, 배달의 민족, 카카오 등 다양한 컨퍼런스들이 있지만 실제로 신청해서 당첨되는 것은 쉬운 일이 아닙니다. |
| 18 | +> <br>저희는 이러한 컨퍼런스 문화가 더욱 활발해지고, 더 많은 사람들이 기회를 얻을 수 있기를 바라는 마음으로 LiBoo 프로젝트를 기획하게 되었습니다. |
| 19 | +> <br>작게는 팀원 간 소규모 기술 공유부터, 크게는 네이버 부스트캠프 발표나 기업의 컨퍼런스과도 함께할 수 있는 서비스를 만들고자 합니다! |
17 | 20 |
|
18 | 21 | <br/>
|
19 |
| - |
20 |
| -<div align="center"> |
21 |
| -<h3> 🧡 팀원 소개 </h3> |
22 | 22 |
|
23 |
| -| 김준서 | 김영길 | 고민지 | 김지수 | 홍창현 | |
24 |
| -| :----------------------------------------------------------------------------: | :----------------------------------------------------------------------------: | :---------------------------------------------------------------------------: | :--------------------------------------------------------------------------: | :--------------------------------------------------------------------------: | |
25 |
| -| <img src="https://avatars.githubusercontent.com/u/45356754?v=4" width="120" /> | <img src="https://avatars.githubusercontent.com/u/46553489?v=4" width="120" /> | <img src="https://avatars.githubusercontent.com/u/101329724?v=4" width="120"> | <img src="https://avatars.githubusercontent.com/u/85912592?v=4" width="120"> | <img src="https://avatars.githubusercontent.com/u/48922050?v=4" width="120"> | |
26 |
| -| **BE** | **BE** | **FE** | **FE** | **FE** | |
27 |
| -| [@i3kae](https://github.com/i3kae) | [@hoeeeeeh](https://github.com/hoeeeeeh) | [@gominzip](https://github.com/gominzip) | [@jsk3342](https://github.com/jsk3342) | [@spearStr](https://github.com/spearStr) | |
| 23 | +# 📺 핵심 기능 |
| 24 | + |
| 25 | +### 실시간 컨퍼런스 스트리밍 |
| 26 | + |
| 27 | +실시간 컨퍼런스를 시청하거나 호스트가 되어 컨퍼런스를 직접 스트리밍 할 수 있습니다. |
| 28 | + |
| 29 | +### 실시간 채팅 |
| 30 | + |
| 31 | +컨퍼런스를 보며 채팅으로 소통할 수 있습니다. 질문이 있다면 질문 채팅으로 전송이 가능합니다. |
| 32 | + |
| 33 | +### 메인 대시보드 |
| 34 | + |
| 35 | +동영상 미리보기, 카테고리 등을 통해 원하는 컨퍼런스를 탐색해 볼 수 있습니다. |
| 36 | + |
| 37 | +### 컨퍼런스 다시보기 |
| 38 | + |
| 39 | +실시간으로 방송되었던 컨퍼런스를 다시 돌려볼 수 있습니다. |
| 40 | + |
| 41 | +<br/> |
| 42 | + |
| 43 | +# ⚙️ 서비스 아키텍처 |
| 44 | + |
| 45 | + |
| 46 | +```mermaid |
| 47 | +sequenceDiagram |
| 48 | + participant H as Host/OBS |
| 49 | + participant HP as Host Page |
| 50 | + participant MS as Main Server |
| 51 | + participant RTMP as RTMP Server |
| 52 | + participant OS as Object Storage |
| 53 | + participant V as Viewer |
| 54 | +
|
| 55 | + Note over H,V: 방송 시작 전 (OBS 시작됨) |
| 56 | +
|
| 57 | + HP->>MS: HTTP: Stream Key 요청 |
| 58 | + MS->>MS: Unique Stream Key 생성 |
| 59 | + MS->>HP: Stream Key 반환 |
| 60 | + HP->>H: Stream Key 전달 |
| 61 | +
|
| 62 | + H->>RTMP: RTMP: 스트림 전송 (Stream Key 포함) |
| 63 | +
|
| 64 | + RTMP->>RTMP: HLS 변환 (m3u8, segment 생성) |
| 65 | + RTMP->>H: HTTP: HLS 스트림 전송 |
| 66 | + Note right of H: 호스트가 자신의 방송을<br/>모니터링 할 수 있음 |
| 67 | +
|
| 68 | + Note over H,V: 방송 시작 후 (호스트 페이지에서 시작 버튼 클릭) |
| 69 | +
|
| 70 | + HP->>MS: 방송 시작 신호 |
| 71 | + MS->>RTMP: 방송 시작 알림 |
| 72 | +
|
| 73 | + loop HLS 스트리밍 |
| 74 | + RTMP->>OS: HLS 파일 업로드 (m3u8, segment) |
| 75 | + end |
| 76 | +
|
| 77 | + V->>MS: 컨퍼런스 선택 (대시보드에서) |
| 78 | + MS->>V: Object Storage URL 반환 |
| 79 | +
|
| 80 | + loop 스트리밍 시청 |
| 81 | + V->>OS: m3u8 요청 |
| 82 | + OS->>V: m3u8 파일 전송 |
| 83 | + V->>OS: segment 요청 |
| 84 | + OS->>V: segment 파일 전송 |
| 85 | + end |
| 86 | +``` |
| 87 | + |
| 88 | +<br/> |
| 89 | + |
| 90 | +# 🛠️ 기술 스택 |
| 91 | + |
| 92 | +| Part | Stack | |
| 93 | +| ---------- | ----------------------------------------------------------------------------------------------- | |
| 94 | +| 공통 |  | |
| 95 | +| 프론트엔드 |  | |
| 96 | +| 백엔드 |  | |
| 97 | + |
| 98 | +<br/> |
| 99 | + |
| 100 | +# 🏃 주차별 진행 상황 |
| 101 | + |
| 102 | +| 주차 | 내용 요약 | 발표자료 | |
| 103 | +| ----- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | |
| 104 | +| 1주차 | 기획 공유 및 팀 목표 설정 | [보러가기](https://gominzip.notion.site/Week1-Web22-LiBoo-56af3bb7b2314f878667bdbbf99e791f?pvs=4) | |
| 105 | +| 2주차 | 백로그 작성, 퍼블리싱, 동영상 스트리밍 아키텍처 설계 | [보러가기](https://gominzip.notion.site/Week2-Web22-LiBoo-137673f3719e805baab4e0a9855ed885?pvs=4) | |
| 106 | +| 3주차 | CI/CD, 메인 api 서버 개발, 플레이어 커스텀, 웹소켓 학습 | [보러가기](https://gominzip.notion.site/Week3-Web22-LiBoo-a09dcec3adea4b289d22603df59f24be?pvs=4) | |
| 107 | +| 4주차 | 채팅 구현, 서비스 시연 | [보러가기](https://gominzip.notion.site/Week4-Web22-LiBoo-13e673f3719e80e2a6b0cf5fe10d603a) | |
| 108 | +| 5주차 | 채팅 고도화, 플레이어 고도화, 다시보기 api 설계 | [보러가기](https://gominzip.notion.site/Week5-Web22-LiBoo-14c673f3719e80eeb14fe3f1f668e1fc?pvs=4) | |
28 | 109 |
|
29 |
| -</div> |
30 | 110 | <br/>
|
31 | 111 |
|
32 |
| -# 프로젝트 개요 |
| 112 | +# 🔥 기술적 도전 |
33 | 113 |
|
34 |
| -## LiBoo를 만들게 된 계기 |
| 114 | +꾸준한 문서화를 통해 지식을 공유하고, 깊이 있는 기술적 도전을 이어나가고자 합니다. |
35 | 115 |
|
36 |
| -토스, 배달의 민족, 카카오 등 다양한 컨퍼런스들이 있지만 실제로 신청해서 당첨되는 것은 쉬운 일이 아닙니다. |
| 116 | +- [[학습] 동영상 스트리밍 처리 프로토콜을 알아보자](https://gominzip.notion.site/b987e92eb6c84eef9af1301877eb7c91?pvs=4) |
| 117 | +- [[학습] 웹 소켓의 실시간 양방향 통신](https://gominzip.notion.site/13b673f3719e8037b430ff7b6af397b7?pvs=4) |
| 118 | +- [[과정/근거] 패키지 매니저 및 모노레포 정하기](https://gominzip.notion.site/7677c9cf96464b1d9e9c1d8afd4ab0b6?pvs=4) |
| 119 | +- [[트러블슈팅] 외부의 사용자가 Object Storage에 접근하지 못하는 권한 제어](https://gominzip.notion.site/Object-Storage-1cf0c1bde758437ea595c57cf704a029?pvs=4) |
| 120 | +- [[트러블슈팅] Docker yarn-berry workspace 를 찾지 못하는 오류](https://gominzip.notion.site/docker-yarn-berry-workspace-eff32ce3f695470a8a2d9ef4d02be1e0?pvs=4) |
37 | 121 |
|
38 |
| -저희는 이러한 컨퍼런스 문화가 더욱 활발해지고, 더 많은 사람들이 기회를 얻을 수 있기를 바라는 마음으로 LiBoo 프로젝트를 기획하게 되었습니다. |
| 122 | +[더 많은 기술정리 보러 가기](https://gominzip.notion.site/12d673f3719e8098ad94ed6b71b10ac0?pvs=4) |
39 | 123 |
|
40 |
| -작게는 팀원 간 소규모 기술 공유부터, 크게는 네이버 부스트캠프 발표나 기업의 컨퍼런스과도 함께할 수 있는 서비스를 만들고자 합니다! |
| 124 | +<br/> |
41 | 125 |
|
42 |
| -## 주요 기능 |
| 126 | +# TEAM 정권지르기 👊 |
43 | 127 |
|
44 |
| -- **실시간 컨퍼런스 스트리밍** |
45 |
| -- **실시간 채팅 기능** |
46 |
| -- 컨퍼런스 실시간 뒤로가기 / 다시보기 |
47 |
| -- 메인 대시 보드 |
48 |
| - - 실시간 영상 하나 크게 |
49 |
| - - 다시보기 |
50 |
| - - 다른 컨텐츠들 |
51 |
| -- Q&A 기능 |
52 |
| - - 채팅 시 질문 채팅으로 설정 가능 |
53 |
| - - 가장 좋아요 많은 질문 하나 상단에 고정 |
54 |
| - - 질문 영역 클릭시 질문 모아둔 영영 보이게 |
55 |
| -- 중간 광고 (다시보기 정적 영상에 한해서) |
56 |
| -- 컨퍼런스 내용 정리 AI |
| 128 | +| 김준서 | 김영길 | 고민지 | 김지수 | 홍창현 | |
| 129 | +| :----------------------------------------------------------------------------: | :----------------------------------------------------------------------------: | :---------------------------------------------------------------------------: | :--------------------------------------------------------------------------: | :--------------------------------------------------------------------------: | |
| 130 | +| <img src="https://avatars.githubusercontent.com/u/45356754?v=4" width="120" /> | <img src="https://avatars.githubusercontent.com/u/46553489?v=4" width="120" /> | <img src="https://avatars.githubusercontent.com/u/101329724?v=4" width="120"> | <img src="https://avatars.githubusercontent.com/u/85912592?v=4" width="120"> | <img src="https://avatars.githubusercontent.com/u/48922050?v=4" width="120"> | |
| 131 | +| **BE** | **BE** | **FE** | **FE** | **FE** | |
| 132 | +| [@i3kae](https://github.com/i3kae) | [@hoeeeeeh](https://github.com/hoeeeeeh) | [@gominzip](https://github.com/gominzip) | [@jsk3342](https://github.com/jsk3342) | [@spearStr](https://github.com/spearStr) | |
0 commit comments