PSLab Web App
Branch: master
Clone or download

Heroku App

PSLab Remote Experiments

Build Status Gitter Twitter Follow

Backend API server : Hosted on Heroku. The dyno is reaped after an hour of inactivity and may take up to 10 seconds to boot up. Webapp : Hosted on

Introduction to the Virtual Lab

A virtual lab interface gives students remote access to equipment in laboratories via the internet without having to be physically present near the equipment. The idea is that lab experiments can be made accessible to a larger audience which may not have the resources to set up the experiment at their place. Another use-case scenario is that the experiment setup must be placed at a specific location which may not be habitable.

The PSLab’s capabilities can be increased significantly by setting up a framework that allows remote data acquisition and control. It can then be deployed in various test and measurement scenarios such as an interactive environment monitoring station.

Introductory blog posts



The virtual lab will be hosted using Python-Flask, which is a BSD Licensed microframework for Python based on Werkzeug and Jinja 2 . It will use sqlalchemy to interface with databases containing user credentials and data. At present, postgresql will be used.

The repository has been integrated with Heroku, and modifications to the master branch are automatically deployed to after the CI build passes


The frontend code resides in a subdirectory called frontend . It is Designed with EmberJS , and a production build is automatically deployed to by the CI if the build is successful.

Installing dependencies

  • Install all packages in requirements.txt
  • Change directory to the frontend sub-directory, and run npm install

Running the app locally

gunicorn app:app This launches the API server on default port 8000

cd frontend ember -s environment='development' this launches the the emberjs webapp on port 4200

navigate to localhost:4200 in your web browser

Implemented features

  • backend

    • homepage hook
    • SignUp hook
    • SignUp database updation procedure
    • SignIn hook
    • SignIn database verification
    • User script page hook
    • Store, Edit, View, Delete user submitted code snippets
    • Execute a function string
    • Execute a code snippet
    • Create object oriented apps
  • New Frontend based on EmberJS

    • Home Page
    • Navbar with bootstrap styling
    • sign-up page
    • sign-in page
    • user-home.html. Feature to Create and Store code snippets. Execute function strings
    • Create/Edit/Delete/Execute Python scripts. Embedded ace-js code editor.
    • Display object oriented applications
    • Plot data with the integrated JQplot library

Old resources

This project was moved from another repository, and in order to browse the various issues and PRs, the following links may help