project-proposal-2024

JournalWatch

A better way to document your workflows…

Abstract

Journal Watch is a video streaming service that allows organizations to create and share video tutorials about their processes and aims to help new employees get familiar with a team’s workflow. Journal Watch attempts to address the issue of poor/vague documentation through the use of videos. Many companies solely rely on text-based documentation to describe their workflows and processes which tends to be less informative and more verbose than a simple walkthrough or video guide.

Journal watch allows users to upload, tag, search, and stream video tutorials made by their organization all in one place. It automatically generates and keeps transcripts of the videos for easier searching and indexing. Videos can also be accompanied by brief text descriptions to highlight important points or to leave notes.

Author

Name: Rohan Kollambalath

Student number: 46963765

Functionality

Search Videos:
Powerful search algorithm that considers title, description, and transcript to produce the most relevant results to a query. A final solution could also perform machine learning on videos to identify other keywords to consider.

Upload Videos:
Upload videos from your local computer to be hosted on the site. Uploads will need to be fast and reliable even at peak times.

Stream Videos:
Watch and scrub through videos on the website. Video playback must be fast, smooth, and enjoyable.

Tagging:
Write descriptions, and notes, and tag videos with keywords to make searching easier. This feature will also allow for adding any extra information that was not in the original video. Must be easy for users to read and comprehend.

Display Page The main page displays the new and trending videos based on a set of factors. UI must encourage users to watch and engage with the videos.

Comments Users can leave comments and ask questions on tutorials. Should have a notification system that alerts users once they receive a reply.

Organisions Videos are uploaded to a specific organisation which is a collection of users. Videos should not be visible or accessible to users outside of this organization. Users are allowed to be part of multiple organisations at once.

Scope

A minimal viable product of this service would allow users to create accounts, add other users to an “organization” and upload videos for all people in the organization to see. It will also automatically generate transcripts for these videos and will allow users to search for tutorials based on keywords. Video uploaders will also be allowed to make descriptions and tag videos for easier search.

The MVP should be responsive to users even when under load should be well documented and use correct design patterns to facilitate modularity. It should also be hosted in the most cost-effective manner.

Quality Attributes

A successful implementation of this would meet the following attributes.

Scalability - Application must be able to scale and support users without slowdown even at peak times. It is expected that the site will get far more traffic during work hours so this must be taken into account when designing the architecture. - Application must be able to scale to meet load in an economical manner. To ensure this, the service should be broken into individual microservices that can independantly scale.

Extensibility - Application must be designed in a way that allows for modular addition of features. It is expected that the project will go through rapid development and new featuers would be added every week.

Maintainability - As video hosting can be expensive the system must remain cost-effective to host and maintain over a long period - System must be easy to debug in case of failure

Evaluation

To evaluate the MVP we can use unit and headless testing to ensure correctness. We can also perform functional API tests to ensure the system as a whole works.

Attribute Testing:
To test scalability we can perform timed tests when the system is under heavy load. We can test the upload of a video under minimal and heavy load and check that the time is relatively the same. We can also ensure that the system stays available during these heavy loads.

To test extensibility we can manually evaluate the documentation of the site’s architecture to gauge how easy it would be to add new features and gauge the complexity and coupling of the system.

To test the maintainability we can observe how the cost of deployment scales with increased traffic. A certain bar for price increase with load would be set for each of the services of the site.