rtruo001 / appletea Goto Github PK
View Code? Open in Web Editor NEWWeb Application for sharing and syncing medias throughout Youtube, Soundcloud, and Vimeo.
Web Application for sharing and syncing medias throughout Youtube, Soundcloud, and Vimeo.
As user input changes the Volume on the media player, updates the Youtube volume
We need to think of a good name for this app. Doesn't necessarily have to be clever, but it has to be thoughtful and its feel should fit our service.
After thinking of a name, we need to brainstorm a logo, whether its our name written out in a design, or an icon logo next to our name.
When the app is searching for media entries, there should be an image or indicator that shows that the query has successfully inputted and that search is currently loading. After the API successfully sends back the response, remove the loading indicator and display the search results.
Implement the updated design files into the main project. For now, focus on:
Design the Loading Screen for the Media Player. This loading screen would be placed over the media player whenever the media is loading or out of sync with the rest of the clients.
Convert chat.js which is in public/javascripts into React counterpart that reads in event handlers from Socket.io (Which is located in ./bin/www).
The chat system is currently done on the client side with only pure Javascript and JQuery. The task is to convert the chat system into a Component that reads in event handlers from our server. After reading in the messages sent to the server and back to the clients, displays the message onto the chatbox.
Start with Chatbox.jsx in the views directory to build the components. Chatbox component is currently called in Index.jsx. Use MediaEntry.jsx and MediaPlayer.jsx as references on how to use Socket.io as an event handler in componentDidMount.
The README on Github has more information in the Chat section
Components:
Main Component
Sub Components
Update the Header to include navigation and dropdowns to manage:
When the move to top button is clicked on a media entry in the queue, should move that specific media entry to the top of the queue.
Update to the server whenever the client's Youtube video is played or paused. Sends a message to the server through Socket.io whenever the media state has changed. Afterwards sends the state back to all the clients.
Design the UI/UX of Navigating a Room
-Room Icon Right of the Title Above Chat (displays how many users online and active)
Want to automate the minify of javascript/css. Want to also automate other things like testing too.
Also use Gulp for automating browserify whenever the file changes.
Come up with the entire schematics and algorithms for Media Syncing.
Things to consider:
Hola! @rtruo001 has created a ZenHub account for the rtruo001 organization. ZenHub is the only project management tool integrated natively in GitHub – created specifically for fast-moving, software-driven teams.
To get set up with ZenHub, all you have to do is download the browser extension and log in with your GitHub account. Once you do, you’ll get access to ZenHub’s complete feature-set immediately.
ZenHub adds a series of enhancements directly inside the GitHub UI:
Still curious? See more ZenHub features or read user reviews. This issue was written by your friendly ZenHub bot, posted by request from @rtruo001.
Explore returns a list of playlists for user's viewing pleasures
Truncate Titles that overflow divs and replace end with ellipses
When a client enters the room, initializes the Youtube video player in the beginning. Currently needs to be done because the Media Player does not need to continuously initialize the Youtube Iframe whenever it changes to another media type. This prevents the current Active tab bug.
Add user profile pictures to chat messages, to add-user search modal, and to the header.
Create a standard design for modal pop up
Initialize video player works whenever the initialize Iframe is called. Need to update with Youtube player initializing in the beginning
Design the Chatbox:
Design a user profile page that lists user information, as well as displays their playlists. Consider being able to view their Liked Playlists, and think about ease/experience of navigation.
Design a section in Explore Tab that allows user to create a Randomized Playlist
Font-fam Avenir can't be included in our file directory for legal reasons, look for a good webfont that keeps a consistent look. Fonts to consider, but not limited to:
There are multiple synchronization issues that may occur. We need to ensure all socket calls are called in correct order and without any problems of deadlocking.
Notable async problems:
Finish Entire UI & UX Design for the App:
Elements to Design and Include:
JS/CSS Scripting:
Things to Accomplish:
Implement Soundcloud
Computer environment need to be set up to properly run the server. Things needed:
Also: pull from master and push design and backend branches into master.
There should be some image or indicator that the Queue currently has no media entries. Once there are media entries pushed into the queue, removes the indicator.
EDIT: We are no longer using the plyr plugin. Build a custom Video Player UI that includes
Main Video/Media Player should have a custom design built on top of plyr.js
Design a footer for the pages
Playlist tabs contains all of the playlists that you made public, made private, and liked.
Playlists should contain media entries.
When multiple clients are nearly identical with their syncs and end at the same, each one of the clients may send a "From Client: Load media entry" to the server, forcing multiple calls to Load the next media entry from the queue. This causes multiple media entires in the queue to load onto the media player without getting played at all, skipping them entirely. The task is to have only one client call the server for a new media entry from the queue. by either keeping checks on the client or server sides.
Currently thinking in doing it on the server side to prevent the calls back to the clients. This way may be the better choice as it seems difficult to keep track when only 1 client ends from the client side.s
Create Search Tab:
Updated the command to watchify, which updates the files whenever a file in the views are updated.
Also added the -v into the end of the command, this logs to the terminal of the changes.
watchify ./public/main.js -o ./public/bundle.js -t [ babelify --presets [ es2015 react ] ] --extension=.jsx -v
Research Browserify to do it properly or efficiently. Either by having it called the code or having a different command through the terminal.
Currently unsure if calling the command below is efficient or the correct way in doing it.
browserify ./public/main.js -o ./public/bundle.js -t [ babelify --presets [ es2015 react ] ] --extension=.jsx
But this works.
Initializes the queue when a new client enters the room. Emits a socket to the server sending the queue list back to the client, which is displayed onto the queue.
Make the main page optimized to tablets and mobile phones.
When the delete button for the queue's media entry is clicked on, delete the media entry off of the queue
Makes the media entries in the queue draggable. Once dragged, updates the queue to the server and to every other client currently in the room.
Implement Vimeo
When there is no medias playing, the media player should have some sort of image or indicator that there is currently no media queued up to play.
Create the Queue List:
-First Card should have a "playing now" overlay
Create a bootstrap nav-tabs:
Create Tab Pages for:
Implement UI details:
Thinking in using Mocha or Chai for unit testing. Come up with a great way to test everything through unit or integration testing.
Need to generate a database of users and playlists.
-Users should have lists of playlists
-Playlists should have lists of media entries
Need to talk about Pros and Cons of which Database(s) to use.
Finish entire Backend for the App:
Need to update the elapsed time whenever a client seeksTo() a new time on the video. Sends to server that time has changed and updates every client's elapsed time to the new time.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.