Skip to content

This repository contains the tools for generating and deploying lab and experiment pages.

License

Notifications You must be signed in to change notification settings

virtual-labs/ph3-lab-mgmt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Phase 3 Lab and Experiment Operations

Introduction

A Virtual Labs Experiment is a systematic collection of learning resources for Engineering students to learn about a single topic in a subject. Each experiment consists of some theory and reading material, interactive simulations and quizes or tests. The authoring process may be different for each institute but the end result is a collection of web-pages that are published together as an Experiment.

Each experiment is a part of of Lab. A Lab is a conceptually a collection of Experiments related to a subject. A Lab is published as a collection of web-pages that provide an entry point for a user to learn about that subject. The list of experiments included in a lab provides links to all the available experiments.

Creating a publishable lab along with all it’s experiments, is a process that involves a lot of manual effort that does not add any value to the lab itself. Labgen is a command-line tool that helps in avoiding all the repeatative effort involved in creating a lab from individual experiments and other lab content.

The following processes are supported by labgen:

  1. Generation of Lab pages.
  2. Deployment of Lab
  3. Build and Deployment of Experiments

The automated build and deployment of experiments is supported only for experiments generated using the Phase 3 experiment authoring process (link?) defined by IIT-B.

Requirements

  1. node 12.12.x
    • Download link: node
    • recommended to install via nvm
  2. npm 6.11.x

Setup

Install Dependencies

npm install

Generating Lab Pages

Create Lab Repository

Create a new lab repository on Github or clone and existing one. The repository should be empty.

Initialize Lab Descriptor

To start with the process of lab generation, you need a Lab Descriptor.

Lab Descriptor is a json file the contains data for lab pages and other information for lab and experiment deployment. This document describes the structure of a lab descriptor file.

Complete and Verify Lab Descriptor

Fill all the values in the <path/to/lab/repo>/lab-descriptor.json file generated above and create a pull-request to get the lab-descriptor approved.

LD Verification Example

Continuing the init example, lets see how to submit the completed lab-descriptor for verification.

In the lab repository, switch to a new branch and edit the json.

cd ~/virtual-labs/myNewLab
git checkout -b lab-descriptor
editor lab-descriptor.json

After filling the json push the file to remote and create a pull request.

git add lab-descriptor.json
git commit -m "lab-descriptor for verification"
git push origin lab-descriptor

Once this pull request is merged to master, do not make any new changes to the lab-descriptor.

Run All

From the Phase-3-Lab-Template repository, run the following.

npm run labgen -- --release minor <path/to/lab/repo>

Building an Experiment

To build an individual experiment first clone the experiment and run the following:

cd <path/to/experiment/repo>
git clone https://github.com/virtual-labs/ph3-lab-mgmt/
cd ph3-lab-mgmt
npm install
npm run build-exp ../

Or, from with this repository:

npm run build-exp <path/to/exp/repo>

The first method is useful when running the script from the github actions pipeline.

The experiment can be found in the build directory with the experiment repository location.

DOCS

DOCUMENTDESCRIPTION
Lab Build ProcessThis document describes the lab build process.
Lab DescriptorThis document describes the structure and functions of the lab-descriptor
Experiment Build ProcessDocument describing the experiment build process.
AnalyticsLab and Experiment Analytics details.
UnitsDefines all types of units in an experiment
Proposed PluginsProposal for moving towards a plugin based architecture.

  • DOCS:
    • Lab Build Process
      • Lab descriptor - DONE
      • templates - TODO
      • staging and deployment process - DONE
    • Experiment build process
      • experiment descriptor - DONE
      • experiment model - DONE
    • Analytics - DONE
    • script usage - DONE
  • quiz - TODO
  • exp process integration and testing - DONE

  • identify modules - WIP
  • FAQ - WIP
  • label -> backend => build-process - DONE