A Digital Library for CS4624 Projects

Abstract

CS4624 is one of many capstone courses a student within the CS curriculum is able to take. The multimedia and hypertext course delves into the diverse range of multimedia content such as images, audio, video, as well as any information retrieval and access relating to it. With this course comes the capstone project, a semester-long project given to us students to allow a display of mastery within our discipline. It has so far been a pleasure to work with Dr. Farag’s guidance with the project. An insight into real-world applications as well as a diverse approach to different problems has allowed us to grow as both people and developers.

The current discovery portal for CS4624 student projects serves as a platform for students working within the course to submit and hold their projects. Details included within the pages on the discovery portal consist of abstract, date, author, presentation, final report, source code, and collections. Additionally, the discovery portal contains filtering features to allow users to specifically search for any project dependent on recent submissions, issue semester, author, title, subject, content type, and department. The discovery portal also provides three separate home views depending on the user's permissions. Current supported user roles are admin, client, and student. This allows teachers to easily access desired projects as well as a safe holding for semester long projects that students worked hard on. Rather than discarding prior work, we have extended and enhanced it by integrating backend support in Python/Flask to interface with Docker and dynamically assign ports for each running container.

With this comes the purpose of our project this semester. After reviewing the previous semester’s project as well as discussing with our client and professor Dr. Mohammad Farag, it was concluded that the current largest issue with the discovery portal was the lack of an easy way to run projects. As it stood, to run a project from the discovery portal, the user would have to manually download the code and configure codebases themselves. This is an issue for all types of users. Students want an easier way to run previous semesters’ projects, and to view other projects from the same semester. The client desired a way to run projects within the discovery portal without the need for manual configuration.

After analyzing the discovery portal, we concluded that the most important feature for the discovery portal would be a “run” button on each project page. This would allow any user to have a one-click solution for running a project’s code, instead of manually having to download and configure codebases. Clicking the run button would deploy a docker instance to run on a dedicated port, unless an image of the specific project was already running. This provides the user with an easy way to run any project they desire and interact with it in the discovery portal. Upon completion of the project, we hope to have provided future CS4624 students and staff an easier and more efficient tool to complete their projects with.

Description

This project was done in fulfilling a requirement for the CS 4624 Capstone Course. The team has been tasked with creating a web application that displays information and files of all previous projects that were originally uploaded to the VTechWorks website under the tag Multimedia, Hypertext & Information Access. This project is to be usable on all OS types and support user authentication and differing permission levels and accesses based on said authentication. Furthermore, the web application should allow for users to search the database for projects based on specified search criteria. It will also allow users of higher permissions to create and upload projects to the database based on a form that requests information and files regarding the project. The web application should also have the ability to run any project on the discovery portal with the press of one button. The resulting docker container should have full project functionality.

Keywords

Software, Docker, React, Python, Flask, MySQL, Digital Library

Citation