Project Plan

Multiple users editing and viewing same code document

This central feature would allow users to collaborate on the same code document over the internet. Changes made by users would be dynamically synced.
This feature would require:

  1. Integration of Firepad API which provides the collaboration feature
  2. Integration of the Firebase real-time database which Firepad utilizes

The feasibility of this feature depends on the successful integration of Firepad and Firebase. As both offer detailed documentation and examples, integration should be reasonable.
As this is the central feature of our project, the rest of the project's features depend on this feature.

Users can create and log into an account

This feature would allow users to create an account for Codetivity by signing up an email and password.
This feature would require:

  1. Integration of Firebase, which offers authentication support using an email address and password.

Since Firebase offers account creation and authentication support, this feature is feasible.
Other features such as saving theme options and storing files to a user's account depend on this feature.

Storing files to an account and viewing/downloading them

This feature would allow users who have an account to upload their files to their account. They would be able to view/download them at a later date.
This feature would require:

  1. Implementation of user accounts feature
  2. Integration of Firebase as it offers free storage for websites

This feature depends on being able to upload files to cloud storage and link those files to specific user accounts.If Firebase integration and account creation is successful, this feature should be feasible.
Other features do not depend on this feature.

Users can partake in a real-time chat with collaborations

This feature would allow users to have a real-time chat with other collaborators working on the code document.
This feature would require:

  1. Implementation of Firebase which offers a chat feature utilizing their real-time database
  2. Access to the browser session of other users working on the code document to ensure the correct users are in the chat

If Firebase and user account integration are successful, this feature should be feasible.
Other features do not depend on this feature.

Shared Programming Challenges (Advanced)

This feature will add the ability to view a shared text document with other collaborators. This would be a collapsible pane that displays the text document. The idea is for collaborators to work on the same problem together and be able to seamlessly view the challenge right from Codetivity.
This feature would require:

  1. The addition of a document pane to our front-end that is collapsible
  2. The associating of the challenge text document with certain users or code files to allow persistence throughout sessions (cloud upload and retrieval)
  3. An easy way to upload or paste in the document

The challenge in integrating this feature is largely in the front-end side of things. We believe this feature may be feasible given our Firebase database is able to easily store and retrieve the text documents.
The shared programming challenge is an additional feature that none of the core features of Codetivity depend upon.

Embedded Javascript Execution (Advanced)

This feature would allow users to use the Javascript engine in their browser to execute and view the output of Javascript code they’ve written. The output would appear in a separate pane, either beside or below the editor. This feature would allow users to test their code for proper output right inside Codetivity.
This feature would require:

  1. Seamless integration of output pane with the code editor view.

As Codetivity is mainly designed as a collaborative editor, none of the core features of Codetivity depend on being able to execute Javascript code.

Integrated Video Conferencing (Advanced)

This feature will allow collaborators to engage in a video/audio conference, using their browser, right from Codetivity! Specifically, the WebRTC API allows modern HTML5 browsers (Chrome, Firefox) to engage in video/audio chat from the browser.
This feature would require:

  1. Integrating the WebRTC API with our AngularJS front-end
  2. Integrating our Firebase database with the video chat to allow collaborators to seamlessly start a video chat with each other (retrieving information about other collaborators)
  3. Handling back-end video chat functionality with Node.js, as required

Difficulty in integrating the WebRTC API as described above would affect the feasibility of functional video conferencing. Overall, we believe the feature may be feasible as there is only a single API to utilize.
Video conferencing is an additional feature that the core features of Codetivity do not depend upon. Even with video conferencing integrated, text-based chat will still be featured in Codetivity.