Welcome to the GitHub repository of VIMSU. This software was developed as a part of the module 'Practice of Software Engineering' during the summer semester 2020 at the Karlsruhe Institute of Technology on the topic 'Virtual conference simulator with telepresence'.
VIMSU (Virtual Interactive Meeting SimUlator) is a software that was developed in response to the corona pandemic and is intended to allow scientific conferences and similar events to be held virtually with telepresence. This takes place in the form of an interactive virtual event area. The virtual conference participants are represented by virtual avatars that can be controlled in real-time. They can attend lectures, interact with other participants, or explore the site. In addition, some gameplay elements have been implemented to motivate active participation in the event.
For develop- or deployment, Node.js needs to be installed in your environment. You will also need a MongoDB account for the database and an Azure Storage account for the cloud storage.
You can download and install Node.js from the official Node.js website. If the installation was successful, you should be able to run the following commands.
$ node -v
v12.18.1
$ npm -v
6.14.8
If you need to update NPM, use $ npm install npm@latest -g to update it to the latest version. For more information, please visit the official NPM website.
In order to host a conference using VIMSU, some data, such as accounts, lecture times etc., needs to be saved in a MongoDB database. Therefore, you need a MongoDB account and an Atlas cluster to store account and conference data before hosting VIMSU. You can create a MongoDB account on the official MongoDB registration site. Please follow the tutorial on how to create and setup an Atlas cluster on the official MongoDB website for creating a new cluster.
VIMSU does not offer live stream for talks and lectures. Instead, they are pre-recorded and uploaded before the conference is set to start. Due to this, you need an Azure Storage account to store uploaded video files before hosting VIMSU. Please follow the tutorial on how to create a storage account on the official Microsoft website.
Use the following command to create a local copy of VIMSU on your machine.
$ git clone https://github.com/PSESS2020/Vimsu_prototype.git
This will create a copy of this repository in whatever folder you're executing the command in. Alternatively, you can download the code as a .zip by clicking the Code button above the repository. Now you just need to extract the .zip file into a location of your liking.
Before you can host VIMSU, you will need to properly set up the database and the cloud storage.
You will need to store connection strings for both the database and the cloud storage in a file called .env. First, create a copy of .env.example file and rename it into .env. Next, replace the sample connection strings in this file with your connection strings.
-
Azure Blob Storage
Please follow the tutorial on how to acquire the Azure Storage connection string from your Azure Storage account on the official Microsoft website.
-
MongoDB
You can acquire the MongoDB connection string by pressing the
Connectbutton of your cluster and afterwards theConnect your applicationbutton. From there, you can just copy the MongoDB connection string. Don’t forget to replacepasswordwith the password of your database anddbnamewith the name of your database. For more information about acquiring the MongoDB connection string, please visit the official MongoDB website.
If you want to try out VIMSU without creating an Azure Storage or a MongoDB account, you can use Azurite and host MongoDB locally. Note that this configuration has not been exhaustively tested, so while it should work without issues on at least a small scale, we can not guarantee complete functionality. We advise against using this configuration to host a complete conference.
-
Azurite
Please follow the installation instructions on the official Azurite GitHub-page. Note that VIMSU uses the AzureSDK, so you need to setup Azurite for HTTPS connections. This will require the use of additional third-party software such as mkcert or OpenSSL to create your own signed certificates. In the process of installing that software, you might be required to install additional third-party software. Please understand that this software is not supplied by us and we can therefore only offer superficial support for this installation process.
After you have successfully installed Azurite and started a properly configured instance, paste the default HTTPS-connection string (you can use both either the full one or the Blob-only one) into the
.envfile as explained in the section above. You can also create custom connection strings. Please refer to the Azurite readme for further instruction on how to do this. -
MongoDB
Please follow the installation instructions for your operating system in the official MongoDB-documentation. After you have successfully installed MongoDB, set up proper authentification and create an account for your local instance. Finally, create a connection string according to the official guideline. Add that string to your
.envfile as described in the section above.
After setting up the database and the cloud storage, use the following command to host VIMSU on your local machine.
$ cd path/to/Vimsu_prototype/
$ npm install
$ npm start
You should see the following logs if you have successfully hosted VIMSU.
Connected to blob storage
Vimsu-Server listening on port 5000 . . .
Connected to Database
To access your locally hosted VIMSU instance, open your browser and enter http://localhost:5000/. The following browsers are currently supported:
- Google Chrome Version 84.0.4147.125 or newer
- Microsoft Edge Version 84.0.522.59 or newer
- Opera Version 70.0.3728.71 or newer
After VIMSU is sucessfully hosted, there are certain things you need to know before starting a conference.
You can create an account and access the conference by following the steps below:
- Go to the VIMSU homepage.
- Click the
Registerbutton. - Fill out the registration form and click the
Register Nowbutton. - Click the button that says
Enter Conference.
After you have created an account, you will be able to use it to log into any VIMSU instance that uses the same database as the one you created your account on.
You can upload lectures by following the steps below:
- Go to the VIMSU homepage and log into your account.
- Press the
Uploadbutton. - Enter your lecture data and select the video you want to upload.
- Press the
Create lecturebutton.
At this point, the lecture should have been uploaded successfully, but it still has to be accepted.
- Go to your created cluster in mongoDB.
- Press the
Collectionsbutton. - Go to the
lecturescollection. - Search for the lecture you just uploaded and set
isAcceptedfromfalsetotrue.
After restarting the server, the lecture should be displayed on the Schedule in VIMSU as long as it hasn't expired. It will start at the time you just selected.
You can grant a participant moderator rights by following the steps below:
- Make sure that the participant has accessed the conference before.
- Go to your created cluster in mongoDB.
- Press the
Collectionsbutton. - Go to the
participants_<conferenceId>collection. - Search for the participant entry and set
isModeratorfromfalsetotrue.
After entering the conference, there should be a noticeable change in the color on the avatar username and the Role on the Profile should have changed to Moderator.
Moderators have the following privileges during a conference:
-
They have the right to use commands through the
RoomChatand through theLectureChat. After you granted yourself moderator rights, you can see all commands available to you by typing in\helpin the respective chat. -
They can join any lecture at any time before the lecture ends, even if the maximum number of listeners has already been exceeded.
-
They have the right to post messages in the
LectureChatafter it has opened, with or without theQuestionToken.
Orators have the following privileges during their own lecture:
-
They have the right to use commands through the
LectureChat. As an orator, you can see all commands available to you by typing in\helpin theLectureChatof your own lecture. -
They can join their own lecture any time before the lecture ends, even if the maximum number of listeners has already been exceeded.
-
They have the right to post messages in the
LectureChatof their own lecture after it has opened, with or without theQuestionToken.
-
To run the unit tests with Mocha and Chai, use the following command.
$ npm test -
To print the test coverage with Istanbul, use the following command.
$ npm run coverage
To generate the documentation with JSDoc, use the following command.
$ npm run docs
- Audio files from Mixkit