Coder Social home page Coder Social logo

vroom's Introduction

vroom

Video conf based on SimpleWebRTC.js

  • Multi party audio+video
  • Text Chat
  • Optional Etherpad-Lite integration
  • Screen Sharing (Google Chrome and Mozilla Fireofx)
  • Reserved and persistent rooms
  • Email notifications and invitations
  • Password protected rooms
  • Chairman features (mute/pause/kick other)
  • Internationalization (english and french for now)
  • Works with Mozilla Firefox, Google Chrome and Opera
  • Works on Windows, Linux, Android (probably MAC OSX too)
  • Responsive interface, working on smartphones, pads and desktops
  • Fully opensource

vroom's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vroom's Issues

Limit displayName length

There's actually no limit to a peer's displayName so anyone can pollute the screen of all other peers by setting a really long one

Setup a ML

VROOM should have a dedicated ML (for announces, users and dev discussions)

Add a feedback form

Would be good to have a feedback form so users can share their experience

Enhance invitations

We should replace the invite by mail form with a drop-down menu, explaining which URL has to be shared, a button to copy it, and the form to invite be email

Support chairman functionnalities

Some features could be reserved to a "chairman" like:

  • Mute/unmute anyone
  • Kick out of the room

For non persistent rooms, this could be granted to the opwner (creator) of the room.

For persistent rooms, this is dependent on password protection.

Two differents passwords could be associated with a room:

  • One to join as a simple participant
  • One to join as the chairman

Open questions:

  • Should we allow several chairmans ?

Bad url sent when using langage suffix

When using langage suffix to force a particular locale (/en/roomName) the link sent in email invitation is wrong (missing a / between the locale and the room name). Problem is in $self->url_for('/')->to_abs
invite.email.ep should check and add this missing / if needed

Upper/Lower case in room name inconsistence

There's some inconsistence with room name case: if you create a room all lower case (for exemple test), then quit the room, and try to create another one TEST: if your try to create it, you'll have an error saying the room already exists, but if you try to join it, you get an error because it doesn't exist

Warning if WebRTC is not supported

When you join a room with an unsupported browser (mainly IE and Safari, but also all those browsers on Linux like epiphany), a modal dialog should appear explaining why you won't be able to chat

Confirm feedback form

You should have a confirmation that your comment has been sent when you submit the feedback form

Be notified when someone join one of your rooms

It could be usefull to enter our email address and be notified when someone joins it.

Usecase example:

  • You create a room and set a password so it becomes persistent
  • You Enter your email address
  • You add the URL of this room in your email signature so anyone can contact you
  • When someone join your personal room, you're notified with an email

Audio only fallback

If no webcam is available, it should still be possible to fallback to audio only and join a room. We should see all the participants which have a video, and they should hear us

Receive chat history

Would be useful for a new peer to receive the history of the text chat. As there's no central storage, and messages are sent p2p, we need a way to elect which peer will send the history.

Split JS resources

Most JS files are only needed when you are in a room, but not on the other pages (index, about, help etc...). The js_include template should be splited in js_common (bootstrap, jquery, + a new vroom_common) and js_room (simplewebrtc, sprintf, filesaver, vroom, notify, jquery.browser)

Force resources refresh on changes

JS and CSS files are cached and not automatically refreshed when they change, breaking the app from time to time until the cache expires (or ctrl+f5)
This should be fixed (maybe adding a ?ver=xxx)

signalmaster conf shouldn't be versionned

signalmaster/dev_config.json shouldn't be versionned directly. It should be handled like vroom.conf (the GIT version has a .sample suffix) so that local changes doesn't create conflicts when you pull.

Documentation in the wiki needs to be updated accordingly

public toolbar problem

On the about and feedback page, the public toolbar stays collapsed when wr click on the expand button

Validate room name before submiting

The room name should be checked as you type, before submiting, instead of redirecting to the error page after.
In case of conflict, a popup should propose to join

config menu unusable on small screens

When the toolbar is collapsed in a room, the config menu is unreachable (at least on chrome, and not very convinient on firefox). The invite menu is also affected even if reacheable as it appears at the top

Add an admin page

Should be able to:

  • list every existing rooms (with links to delete, join, password protect, lock, make persistent)
  • Create new "public" rooms
  • As we're here, create a new page to list public rooms, with their status (free/busy/number of participants)

Implement password protected rooms

Password protected rooms should be automatically persistent rooms. Database is ready, just need to implement it in the Mojo app. Also need to find the best way to store the password hash

Enhance password menus

From some feedback, both password (join and owner/persistent) are great features, but not very intuitives.

The configuration menu should be enhanced.

Some idea

  • Hide both password form from the menu
  • Replace them with checkbox buttons
  • when enbling it, display a modal dialog to set the password, and turn the corresponding button in red like others

JS and CSS aren't cached at all

Since 6a916d7 JS and CSS aren't cached at all by browsers because they now have a GET param. This wasn't the goal (which was: cache files, but renew them as soon as it changes).
Instead of adding a GET param, we should add an URL path:

before: /js/vroom?timestamp
after: /js/timestamp/vroom.js

  • Add a RewriteRule in apache conf to get the correct file

Add file sharing

Would be great to be able to share a file to other participants. A distributed system like sharefest would be ideal

Authenticate room owners

For now, rooms are ephemeral, so only the creator is the owner of the room and can set/unset a password to join it (other functionnalities will probably added later).
We need a way to authenticate owners, so rooms can become persistent

  • add a new owner_password field in the DB
  • Add a new owner password setting in the conf menu (only available for creators)
  • rooms with a owner_password would automatically become persistent
  • if a room has both a join_password and a owner_password, check it here and grant the corresponding role (first check if the password is the owner one, if it fails, check if it's the join one)
  • If a room has no join_password but a owner_password, we need a new input where user can auth themself, and become owner

Warning if no sound detected

We should listen for say 10 or 15 sec and popup a warning if no sound has been detected, asking the user to check if the mic isn't muted at the OS level

Ask for name before joining

It should be possible (but optional) for owners of a room to force users to enter a display name before they can join a room.
If at least one email address is notified, there should also be a message box (which will be sent in the notification)

Reduce random room name size

UUID are simple and efficient way to generate random uniq value, but are a bit too long. Vroom shoud generate shorter random names

Exchange peer status

In order to implement #24 we need a way for peers to (securly) get status of the other peers (either owners or participants). For now, only the perl frontend is aware of this (through the session mechanism) but the client side has no idea which peer(s) is the chairman.

A possible solution:

  • During getRole (called early), send the frontend our peer ID
  • The server now know our peer ID and if we're owner, and can record it in the DB
  • When a new peer joins (in addVideo), ask the server the role of this peer, with it's ID
  • We'll need a new signaling event for when a peer authenticates as the owner in the middle of a call (if owner password is set but no joining password), and every peer will update the status of this peer

Provide an apache conf which works out of the box

The provided apache conf example won't work on an out-of-the-box apache (on Fedora, RHEL and derivated) because it requires NameVirtualHost.

It should be modified to use an alias instead, and working directly by just dropping it in /etc/httpd/conf.d/ on a otherwise unmodified apache

Display owner status

Once #30 is done, we need a way to display who is (or are) the owner of the room, probably with an overlay just like mute/pause

Add a "maybe later" and a "sorry, I won't join" links in email invitations

So the organizer knows if someone will or will not join. This would require:

  • A new "invitation" table, which records the session ID of the inviter, a random token to identify the invitation and the status (no response, refuse or maybe later)
  • New Mojo templates for /invitation/(later|refuse) and the corresponding route in vroom.pl
  • Modify the invite.email templates to add two links (refuse or maybe later)
  • On each ping received from participants, check if he's waiting for an answer, and if a response is available. In which case, send the message through the ping JSON response (msg attr)

msg response from ping should probably be modified:

  • the notify class should be info
  • it shouldn't disapear until manually acquited

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.