Giter Site home page Giter Site logo

pranav2612000 / milaap Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 3.0 9.24 MB

Milaap a Decentralized Video/Audio CHAT/conferencing application, which is designed to work on the edge(i.e peer to peer), with very little interference of the server.

Home Page: https://milaap.video

JavaScript 97.48% HTML 0.84% CSS 1.28% Shell 0.01% SCSS 0.40%

milaap's Introduction


Logo

Milaap

A decentralized video/audio calling application!
Report Bug · Request Feature

Milaap is live here.

Table of Contents

About The Project

There are many video calling applications around the globe, but they are mostly server based applications providing maximum load on the server, wherein the audio and video quality decreases with increase in the number of participants. Many don't even support end-to-end encryption.

So we decided to develop a one-stop solution for not only addressing all these solution, but to give a seamless experience to the user. Milaap is a decentralized video/audio conferencing application, which is designed to work on the edge, with very less interference of the server(i.e. peer to peer connection). It is designed to work efficiently on all platforms.

Built With

Have used various libraries/frameworks for this project, the important ones mentioned here:

Getting Started

To get a local copy up and running follow these simple example steps.

Prerequisites

You will have to install the following.

  • npm
npm install npm@latest -g

Installation

  1. Clone the repo
git clone https://github.com/Pranav2612000/milaap.git
  1. Install NPM packages for frontend
npm install
  1. Start the project
npm start
  1. In a new terminal tab, Open the folder backend
cd backend
  1. Install NPM packages for backend
npm install
  1. Start the server
nodemon index.js

Usage

In progress

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contributors

milaap's People

Contributors

pranav2612000 avatar savannahar68 avatar anupnair08 avatar veddandekar avatar naman-modi avatar vasusharma7 avatar yashshah1 avatar dependabot[bot] avatar

Stargazers

 avatar Burden Haze  avatar Jérémie Astor avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

James Cloos avatar  avatar  avatar

milaap's Issues

Remove audio in your video.

Before opening an issue:

When asking general "how to" questions:

  • Please do not open an issue here

When reporting a bug, include:

  • Operating system and version (Windows, Mac OS X, Android, iOS, Win10 Mobile)
  • Browser and version (Chrome, Firefox, Safari, IE, MS Edge, Opera 15+, Android Browser)
  • Reduced test cases and potential fixes using CodePen or JS Bin

When suggesting a feature, include:

  • As much detail as possible for what we should add and why it's important to CoreUI Admin Template
  • Relevant links to prior art, screenshots, or live demos whenever possible

Dark theme is not properly integrated across all the components

Issues :

  • Chat section is not visible properly
  • Chat styling is affected because of dark theme
  • Side bar not properly displayed
  • Message Setting icon not displayed until hover
  • Chat section send button out of window
  • Things typed in send window(chat section) not visible

image

image

image

Change to a PWA

For seamless experience of the users on mobile phones, once the backend is completely ready, its needs to converted to a PWA.

Discussion: Dashboard page

What are some ideas for the dashboard page. Do we need one or should we remove it?

What I think is we can display the health monitoring statistics of the current user( obtained through fit api, screen time)(CoreUI has some good graphs) and some health tips, suggestions, precautions, advices and the latest activity of the user/ missed notifications.

@AnupNair08 @naman-modi @ vasusharma @veddandekar

Make aside menu mobile friendly

Currently, almost entire app support mobile displays perfectly except aside menu.
I'm sure CoreUI supports a simple fix for the same.

aside bar

Allot room permissions to users

Allow only certain users to add members to a group.(Maybe just the creator). Currently anyone can enter a roomname and add a member to the group. Current backend route is ideal for creating room, not adding an user, so maybe we will need to write a new api to add an user.

Add support for JWT/Cookies

As of now, we are using localstorage to directly store username and are using this to send request to backend. Replace this by JWTs / Cookies which is secure. Will require adding middleware to backend, and passing the JWT through headers.

Room Change Doesn't take place sometimes

Sometimes, the room is not changed though it is clicked on .
The URL changes but the updated room name is not passed to Control.js from DefaultAside.js.
Experienced very less times usually just after logging in or after refresh.
try
User 1
Password 1
It has ample rooms to recreate the issue.

Allow host to mute/kick out

The host should be to:

  • mute all participants, i.e. Mute ALL
  • mute a particular participant, i.e. Mute Naman
  • Kickout a particular participant, i.e. Kick out Naman

onICEConnectionStateChange error

Every few minutes into the stream, stream turns black and logs onICEConnectionStateChange error.
If user shares video again, it works fine.

TODO: Look for possible causes and solutions.
Worst case - whenever this error is detected, re-establish a new share stream.

Remove unnecessary backend calls on dashboard

STR:

  • Do a fresh login or tap on dashboard on left top once logged in.
  • Check browser console.

I suspect that this is because calls are being made to backend when user is not in any room.

To-do: Prevent front-end from making calls when not in a room.

Profile Page required

We require a profile page for each user.
In the profile page, we will have:

  • Avatar (Profile image), which can be changed whenever they want
  • User name can be changed (authentication will be required, as username different for each)

As soon as the first-time login via Google done, the user will be redirected here to select a username.

Discussion: Room View

Ideas about the UI visible when a room is entered -

There is a lot of space wasted at the center(where the videos are displayed) when no call is in progress. What I have in mind is having something like skype does with the user video playing at the back with buttons on front-
image

I like the idea of displaying the list of all the users in the list tab in right sidebar -
image
with the users differentiated into 3 categories through the UI and arranged category-wise - those in a call in the group, users online, users offline, but in the group.

Any other suggestions for improving the room UI

@naman-modi @veddandekar @AnupNair08

Write a common endpoint to get all information regarding the room

Whenever a user enters a room, seperate backend calls are made to get messages, members, online members etc. Write a unified backend api which returns all this information - messages, group members, is there a ongoing call etc.

Call this api when user enters a room, and store the request in state, to be used later.
Handle errors, if the call fails may be due to internet connectivity.

Add button to exit rooms

The fix should handle proper cleaning of the database, removing the user details from the room document and the room details from the user document.

Change design of creating rooms

Currently, new rooms are created when a user adds a friend/another user to the room. This creates problems when adding support to add anonymous users, add more than 1 user to the room etc.
The design is being changed according to the following example -
A logged in user can create a new room. This adds a new room entry in the database. The logged in user can now add other users through either the room UI by entering their usernames(this button needs to be created), or by sharing the room link. When na anonymous user visits the link. The app will check if the room exists( by quering the database), if it doesnt redirect to 404, then it'll check if the user has a valid token. If he doesn't then redirect the anonymous user to a page which asks for a temporary username(with an option to login) after logging in the user can then enter the room.

Landing page required

Not our current focus, but we will definitely need on down the road.
Putting this up rn to remind everyone to be on the look out for good templates/packages for the same.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.