Coder Social home page Coder Social logo

grey-software / toonin Goto Github PK

View Code? Open in Web Editor NEW
68.0 7.0 6.0 8.89 MB

Technology that allows you to tune in to your friends and family in realtime using peer-to-peer sharing.

Home Page: https://toonin.grey.software

License: MIT License

HTML 0.69% JavaScript 47.42% Shell 0.56% Vue 50.30% Dockerfile 0.23% Sass 0.79%
webrtc vue quasar-framework hacktoberfest

toonin's Issues

Add support for tuning in via the chrome extension

How do users toonin at the moment?

Toonin currently supports tuning in via the web app by having the user enter the room name they want to enter.

How would users toonin via the extension?

I envision the user being able to enter the room name into the popup box that appears when the chrome extension is clicked.

**Would this open a new tab to the toonin web app or tune in on the current tab. **

We could make this configurable in the future, but I would imagine opening a new tab is the feature we're looking for, since you wouldn't want your toonin session to be tied to another tab's lifecycle.

Setup continuous integration

We should look into setting up continuous integration for toonin. Students get Travis CI as a part of their student developer pack.

Make the toonin box non-persistent

The toonin box currently persists on the DOM of the source stream tab. This is intrusive to the experience of someone using a service such as Youtube or Spotify.

Following chrome extension best practices, we should have our chrome extension's ui persist only as long as the user currently requires it to.

This would likely involve a re-design on the states that the chrome extension can be in as well so that the user sees the appropriate UI when they click the extension.

Add debugging support for chrome extension

It is currently difficult to debug the extension because we only see the minified js. We could have an option to build dev and prod versions, with the former not being minified for debugging purposes.

Tuning in via routes doesn't work on production

The web app currently does not tune in via routes such as /roomName

This is because the app is served statically.

We may have to investigate to see if wrapping our Vue web app with a SSR framework like Nuxt would solve this for us.

WebRTC data channel audio streaming audio break-up

recieveChannel.onmessage = function(event) {
              
                  if(typeof(event.data) === "string") {
                      // recieve the offset from the src to compensate for extra data at the start of 
                      // every arraybuffer
                      firstBufferDur = Number(event.data);
                      console.log('offset: ' + firstBufferDur);
                  }
                  else {
                      audioContext.decodeAudioData(event.data, function(buffer) {
                          if(bufferQueue.length < 4) {
                              bufferQueue.unshift(buffer);
                          }
                          else {
                              bufferQueue.unshift(buffer);
                              nextBuffer = bufferQueue.pop();
                              soundSource = audioContext.createBufferSource();
                              soundSource.buffer = nextBuffer;


                              // here there is breakup because there is a gap between new buffer playing and old one ending


                              soundSource.start(audioContext.currentTime + prevBufferDur, firstBufferDur);
                              prevBufferDur = nextBuffer.duration;
                              soundSource.connect(soundDest); 
                              tabAudio.srcObject = soundDest.stream;
                              tabAudio.play();
                          }
                        
                        //visualizer();
                        
                    }, function(error) {
                        console.log('Audio Decoding failed. Error: ' + String(error));
                    });
                  }
              }

Write a one command setup script

Toonin's DX could be improved by writing a one command setup script.

Install all reqs
Set IPs in app and ext
Build ext and output folder path
Serve app and output url
Run server

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.