bearmentor / bearmentor-com-legacy

🐻 Bearmentor — Brilliant mentoring
https://bearmentor.com
45 stars 6 forks source link

Adding video call feature for mentoring session #14

Closed tyohan closed 4 months ago

tyohan commented 1 year ago

Hi,

I like to contribute to this platform by adding a video call feature that can be used for mentoring sessions. The feature will be similar to Google Meet or Zoom, but it will be integrated directly into the Bearmentor web app. With this, we can control and track the users who can join the mentoring session. We have a basic demo here developed with NextJS. The source code is available on our Github repo.

The feature will use inLive Hub API for the WebRTC SFU backend. There will be no cost will occur for now because the inLive Hub itself is still in beta, but it will have cost in the future. We can discuss how we can cover this cost later.

What do you think @mhaidarhanif, I can just start a branch and start coding the feature there if you're open to it.

mhaidarhanif commented 1 year ago

Hi @tyohan

Thanks for the heads up

Sure thing, there are some things we have to ensure:

A. Yes you can start a branch and coding it there. 2 options: do you want to get invited as a team member here so you can start the branch from the primary repo (I've just invited you btw) or you want to use your fork repo? You can also check if this repo can run fine on your side just fine, hopefully everything's clear on the README.

B. As you can see this repo is using React & Remix, so we also have to conform with the React & Remix structure/idiom. How it'll integrate with the whole codebase? Because I'll also assume there will be a required React component or SDK, and then the data integration need to affect some new models through Prisma ORM as well.

C. Any other ideas are welcome on how to integrate inLive into the platform. As I haven't got my hand full into inLive yet, so have to spend a bit of time to explore it first. I also had evaluated the demo, next to understand how to integrate.

Can also check issue #9 which elaborate on the main mentorship UX. The video call flow would be added into there later, although probably after everything the basics have been covered.

cc @bearmentor/collaborator

tyohan commented 1 year ago

Thanks @mhaidarhanif for your questions:

A. Yes, you can add me to the repo as contributor. I have too many organization already so, will be better to just use a repo collaborator for now.

B. No issue with Remix/React. We will provide a JS SDK that supposed to work with any library/framework. And the room can dynamically create when the call is initiated. The only thing you need to store later is the roomID. But remember, the roomID is only exists when the session is active. You can use any string for the roomID as long it's globally unique.

C. I left a comment on the UX flow, no issue with the current one.

While waiting the current mentoring flow is implemented, we will working on the JS SDK and will update the status later in this issue.

mhaidarhanif commented 1 year ago

You're welcome @tyohan

A. Alright. I'ved added you as the repo contributor. Can make sure this app can run fine on your local side.

B. Got it. Probably need some more definitive guide to help on the React side. Assuming most of the implementation is handled client-side on React, no need to use server-side Remix loader/action. For the database side, then there will be a new model for handling the Meeting that contains a @unique roomId for various purpose, or specific fields like inliveRoomId, zoomRoomId, meetRoomId, aroundRoomId.

C. Okay. Notice that I highlighted some things regarding the manual process, while we're figuring out the automated system.

Sure thing, as in #9 there's a priority on the main flow, we're waiting for the guide on using JS SDK with React. Because I won't be the sole primary maintainer, therefore the documentation will be very relied upon.

mhaidarhanif commented 1 year ago

cc @bearmentor/collaborator, especially @krowter as he works on part of Vidio.com then maybe had some insights on this.

krowter commented 1 year ago

Hi @tyohan sorry for the late reply

I'm curious about the streaming part. Since the users may not have the best internet connection, will the stream quality selection be done on the SFU part based on the user's bandwidth, or the client/web app have to manually select the quality?

tyohan commented 1 year ago

@krowter currently inLive streaming is not supporting simulcast which allow the sfu to do the adaptive streaming. But this is already WIP so it will be supported in the next few weeks. Later the client will automatically receive the most optimal bitrates when simulcast is enabled based on the client available bandwidth. The client can also manualy adjust the streaming bitrate if needed.

krowter commented 1 year ago

@tyohan I see. Noted 👍