Certainly! Here's the documentation in markdown format:
Vox is not just another video calling app; it's a real-time video calling and chat extravaganza! 🌟 Built using the magic of WebRTC and WebSockets, with a frontend that dances to the rhythm of NextJS and a backend that grooves to the beats of Golang. Users can simply sign in, create a room, and bam! Start a video call fiesta with friends and family. 🎉
- NextJS 🚀
- Tailwind CSS 💅
- Golang 🐹
- First, Clone the repo to your local device 🧑💻
- Create an account on Google Cloud Console, enable OAuth 2.0 Instructions 🌐
- Navigate to the backend directory
- Create a .env file and add the following details:
MONGO_URL=<YOUR_MONGO_DB_URL> GOOGLE_OATUH_CLIENT_ID=<YOUR_GOOGLE_OAUTH_CLIENT> GOOGLE_OAUTH_CLIENT_SECRET=<YOUR_OAUTH_CLIENT_SECRET> GOOGLE_OAUTH_REDIRECT_URL=<YOUR_OAUTH_CLIENT_URL> CLIENT_ORIGIN=http://localhost:3000
- Open the terminal in the backend directory and run the following commands:
$ docker build -t backend .
- Once the docker image is built without any errors, you will see the image with the name 'backend' appear on your docker registry. Verify using:
$ docker images
- To run the docker image:
$ docker run -d -p 5000:5000 --name backend backend
- The backend server is up and running 🚀
- Navigate to the Frontend directory and run the following commands:
$ npm i
- After the installation is done, run:
$ npm run dev
- Now the frontend is up and running.
- To start a video call, sign in first 🚀
- Once logged in, you'll enter a page with options to create a room or join one 🕺
- In the room, send the link to your friends so they can join the party 🎉
- Enjoy the virtual hangout!
- Enter/create a room, and the magic begins with a websocket connection to the backend 🌐
- Others can join by pasting the room link, triggering a ==join-room== event broadcast to all members. 📡
- Existing members create a new RTC Client, send an offer to the new guest, who then creates their RTC client, answers, and sends responses back to offerers. (WebRTC magic in a nutshell!) 🎩✨
- Learn more about WebRTC with this reference video link 📺
- The app uses a Mesh Structure to handle all users in a room (because why not!) 🤖
- For more on WebRTC architectures, check out this article 📚
- Due to the mesh architecture, performance might groove a bit less with each new member entering the room, but it's all good with a handful of pals! 🕺🎶