Disclaimer. The page just helps you to check whether your submission fulfills the requirements of the specification. It does not serve as a replacement to the specification. During grading, we will strictly follow the requirements in the specification so please make sure that you read it carefully.
Task 1: Front-end, Responsive Web Client
Screenshots
Responsive web design
- Are the video player and QR code only displayed in Desktop View?
- Are the captions in the remote controller only displayed in Tablet View?
- Does the CSS used for designing the responsive UI match with the browser width requirements stated in the specification?
- Can your application be used as a remote client on a desktop computer by reducing the width of the browser window?
Session QR code
- Does the QR code points to the current URL? (Hint: Use a QR code reader to scan it in your smartphone!)
YouTube Video Player (YTVP)
- Is the video player created with YouTube IFrame API?
- Is the video player disabled in Tablet View or Mobile View? (Hint: Consider the following scenario: if the player button is clicked, there should be no sounds coming out from the player, if you just hide it instead of destroying it.)
YouTube Remote Controller (YTRC)
- Do you use the mouse
click
event to trigger actions in the controller? - Does your remote controller match the behaviors described in the specification?
- Does your remote controller correctly handle the scenarios that should have no effect on the player?
Video playlist
- Does your playlist support add/remote/clear all operations?
- Are the video ID and title of the videos displayed in the playlist?
- Can the player play the selected video (which is selected by mouse
click
) in the playlist? - Is the ordering of the playlist correct?
- Is the most updated version of the playlist stored on the
localStorage
?
Miscellaneous
- Do you remove all third-party JavaScript libraries (except YouTube IFrame API and Socket.IO client library) from the application page?
- Do you fix all JavaScript errors thrown from your application?
- Do you perform input validation?
- Do you eliminate all the hard-coded values? (Hint: Never use absolute path inside your application!)
Task 2: Node.js Backend
Web page hosting
- Does the server serve the static HTML page and all public assets (JavaScript, CSS, etc.) for the application correctly?
Session creation, membership, and management
- Does the server create and redirect to a new session when the client enters the entry page of your application?
- Can the client join an existing session by using the session URL (either by typing manually or scanning the QR code)?
- Does your application support multiple sessions?
Playlist synchronization over Socket.IO
- Is the playlist retrieved in the same order as described in the specification, or Week #8 tutorial notes, p.8?
- Is the playlist downloaded from the other clients in the same session stored locally?
Remote controller action broadcast over Socket.IO
- Can your application trigger an action in the video player from a remote client of the same session?
Before submission
- Do you deploy your application on OpenShift and test whether everything works?
- Do you update the contents in
package.json
? - Do you include all required packages in
package.json
? - Do you use the environment variables in OpenShift (e.g.,
OPENSHIFT_NODEJS_PORT
andOPENSHIFT_NODEJS_IP
), instead of using hard-coded values, to set up the server? - Do you include the
.openshift
directory? - If you are ready to submit your assignment, please
git push
to theasgn2
repository in GitLab. Don't submit to another repository or you will receive 0 marks because of a failed submission.
Hope you enjoy this assignment!