Code Monkey home page Code Monkey logo

software-engineering's Introduction

Project Blackhawk

This is the central repo for Team Red Wings' final project.

For details on the project please check the /docs directory.

For details on our progress/timelogs/assignments check the team website

software-engineering's People

Contributors

apoliveira avatar nymim93 avatar tmwhite avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar  avatar  avatar

software-engineering's Issues

Navigation FlowChart

Here's the basic flowchart diagram we talked about. Let me know if you see anything that needs changing

flowchart

Scope and Requirements

Here's the scope first draft for the scope and requirements. Let me know what you think @nymim93 @tmwhite

Problem: It is common to here presenters complain about the hassle of giving a presentation. Even before giving the presentation they must get the presentation in a nice format and onto a specific computer. Then, during the presentation they are typically tied down to the podium/central computer to navigate through their presentation. The audience also suffers in certain cases where it's difficult to see the screen and or hear the presenter. A natural occurrence of this dilemma is for teachers and presenters.

Scope: Black Hawk will mitigate these issues by creating a website to host one's presentations. Delivering a presentation will be a matter of logging in to the website and beginning. A presenter is then able to use any Internet connected device as a remote to control the presentation. The presenter is also able to draw on top of the presentation screen. Not only will these actions (previous/next page, drawings) be transmitted to the screen, but the audience members are able to follow the presentation on their own devices.
Outside of the classroom there are office hours. These meetings between teacher and student usually require a collaborative writing area. Along with the drawing feature allowed for presentations, teachers will be able to have virtual white-board sessions allowing for interaction between teachers and students.

Stake Holders: The stakeholders are divided into 2 groups: Dr. Andrew Greene (the client), and the developers (as our grades are on the line).

Risk Analysis: Our product will be freely hosted on GitHub and Heroku, thus incurring no cost on any of the stakeholders. While there is a minor risk of the presentations not broadcasting correctly to other devices, the chances the website will go down are minuscule. So, a teacher can at the least download his/her presentation and continue accordingly. The largest risk for the project is the loss of time and sleep on the developer end, as well as a deep sadness for the client.

Requirements:

  • Presentations
    • Presenter
      • Upload list of presentations (pdf)
      • Have a user page showcasing presentations
      • Start/View presentations
      • Broadcast presentation actions (previous/next page, drawing on slides, and audio)
    • Audience
      • Watch presentations โ€“ updated by the presenter's view
  • Whiteboard
    • Presenter
      • Start virtual whiteboard
      • Send invitation to others
      • Draw on a virtual whiteboard
    • User/Student
      • Draw on a virtual whiteboard (after invitation)

Live Stream Audio for Presentation

Ensure that the owner can live stream their audio when giving a presentation. The owner should have the ability to turn this functionality on or off, and only one device the owner is logged on to can do this at a time. Use RecordRTC and Sockets.io for the audio streaming.

UML "Class" Diagram

Because JavaScript is different, we can't do a Class Diagram like usual in an OO-language. So we do a pseudo-diagram of prototypes.

Our "Objects" are Presenter and Presentation; these will be our Models in MongoDB. The Presenter is our model of the user giving the presentation. The Presentation is our model for the PDF, metadata, and sockets for a presentation.

Presenter
_id : MongoObjectID
name : String
email : String
password : String
Presentation
_id : MongoObjectID
author_id : MongoObjectID
title : String
pdf_src/pdf_path : String/Buffer*
audio : Socket **
+ master : Socket
+ listener : Socket
events : Socket **
+ master : Socket
+ listener : Socket
  • This attribute is still up for debate. We can either save the path to the PDF, or the contents of the actual PDF as a buffer object. We're not sure what would be a better approach.

** We modify the traditional UML diagram to show the sub-attributes of the audio and events Sockets.

Let me know if you guys see anything that needs changing.

Presentation 1

Her guys, here's the basic layout for presentation 1, it's in Markdown right now:

Let me know if you see anything that needs fixing. I'm sending Val a draft tonight


% Project Blackhawk - A first look
% Team Red Wings
% Andre Oliveira, Blerim Cobaj, Tyler White

The Team

  • Andre P. Oliveira (Project Manager)
  • Mim Cobaj
  • Tyler White

Problem

  • Giving presentations are hard
  • Making sure the presentation will display/work correctly is an extra hassle
  • Presenters are tied down to the podium
  • Audience members have difficulty seeing and hearing the presentation

The Fix/Scope

  • Create a website to host these presentations
  • Allow presenter to use any browser-equipped device to control the presentation
  • Allow presenter to draw on presentation
  • Broadcast presentation, in real time, to the audience member's devices
    • So that audience members can more easily view the presentation
    • Also allows viewing by individuals not physically present

Requirements

Presentation

  • Presenter
    • Upload list of presentations (pdf)
    • Have a user page showcasing presentations
    • Start/View Presentations
    • Broadcast presentation actions
      • Previous/Next page
      • Draw on slide
      • Audio

. . .

  • Audience
    • Watch presentations - updated by the presenter's view in real time

Whiteboard

  • Presenter
    • Start virtual whiteboard
    • Send invitation to others
    • Draw on a virtual whiteboard

. . .

  • User/Student
    • Draw on a virtual whiteboard
      • Only after invitation

Risks

Stakeholders

The client, Dr. Andrew Greene, has his hopes and dreams at stake.

. . .

The developers have their grades on the line...

Analysis

  • We're minimizing our monetary cost to zero.
    • We will use GitHub as our VCS, and Heroku for product deployment
      • Both are free platforms
    • Development will be done locally on our desktops/laptops
  • The website going down; Heroku/GitHub go out of business
    • This doesn't seem likely, but if it does happen: we can migrate to BitBucket, OpenShift, AppFog, Cloudify, etc.
      • "The Cloud" is a big place
  • Implementation is done poorly/breaks - teacher cannot give presentation
    • If the website is up, the teacher can still download the presentation, and continue as is tradition
    • If the website is not up, we have a problem.

Analysis (cont'd)

  • Large risk in the loss of time and sleep for the developers
  • A deep sadness for the client and possible audience(s)

Time Logs

to fill in

Extra Credit

Here's the short list of extra credit options we've mentioned. Feel free to work on any of them. I'm going to be doing the QR code and multicolored pens right now. Claim your feature here so we don't all do the same thing.

  • display a QR code that opens to the presentation or whiteboard
    • because the presentation URL is long and complicated, a presenter can simply display a QR code, viewers can scan it and automatically open the page
  • allow viewers to anonymously say they have a question/are confused. Everyone will be able to see this notification that there is someone that is confused.
    • Students are usually too scared to say they don't understand something. This gives them the option to anonymously let the presenter know someone is confused. Further, everyone will be able to see this notification so other confused students will know they're not alone.
  • multicolored pens in the whiteboard
    • black is an awesome color! But it can get boring, adding different colored pens would make writing on presentations and whiteboards more realistic
  • allow viewers to download presentation
    • After watching a presentation a viewer may want to download/review it. This gives them that option

Project Enhancements

Let's get together the list of possible enhancements to the project, @nymim93 @tmwhite

  • Record presentation actions (prev/next page, audio, drawings) to play back later as a pseudo-video
  • Teachers able to make Private/Public Presentations
    • If private, they do not show up on their user page
  • Teachers able to give certain students drawing permissions
    • Students being able to draw on presentation (once granted permission)
  • QR Code link to presentation
    • Show this at the beginning of a presentation? Makes it easier to join a presentation
  • Presentation Chatrooms
    • Students able to ask anonymous questions during presentations
    • A problem with this is students asking inappropriate questions...not sure how to avoid this though

let me know what else you guys think of

Validate PDFs uploads

Validate the users uploaded files to ensure that they are pdfs. Send back a response to the user on the /uploadPdf page if the user didn't upload a valid pdf file.

Using Github issues as a history

Tyler and I think we should have 5 types of issue labels:

Discussion: like this, if we want to open up an idea for debate
Feature: the main requirements/details for a feature
Bug: raising attention to a bug and its discussion
Question: add this to any issue you have a question about
Help Wanted: if any task becomes overwhelming add this to show the team

Labels can be added/deleted at any time. Any other thoughts?

Interactive Whiteboard

Setup whiteboard for each user with the route \whiteboard\USERNAMEorID that handles events and broadcasts the events to everyone viewing the page.

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.