Skip to content
Fabricating and running orchestration graphs
Branch: develop
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
ac Custom ranking for train experiment (#1643) Feb 22, 2019
cypress Renaming activity creator to activity preview Jan 14, 2019
externalOp/op-jigsaw Fix operator etc (#1336) Sep 12, 2018
flow-typed/npm Upgrade 6.02.2019, including React.Hooks (#1638) Feb 6, 2019
frog-utils Reactive Rich Text Refactoring (#1650) Mar 6, 2019
frog Custom ranking for train experiment (#1643) Feb 22, 2019
frogapi-test WIP (#1524) Nov 6, 2018
op Updating config validation in op-wrap-peer-review Feb 12, 2019
scale UNIL related fixes (#1564) Dec 10, 2018
sharedb WIP Mar 8, 2018
templates Upgrade 6.02.2019, including React.Hooks (#1638) Feb 6, 2019
.dockerignore FROG 0.1 (#557) Oct 17, 2017
.eslintignore Fix ci (#1610) Jan 10, 2019
.eslintrc-prettier.js Make prettier problems into errors in ESLint (#574) Oct 19, 2017
.eslintrc.js New operator enabling diffing of rich text (#1639) Feb 8, 2019
.gitignore Updating all deps, and moving files around - major reorganization (#1594 Jan 8, 2019
.prettierrc.json Upgrading Flow (and everything else) (#782) Feb 9, 2018
.yarnrc FROG 0.1 (#557) Oct 17, 2017
LICENSE Update Sep 24, 2018
create-Dockerfile.js Upgrading react-flip-move (#1600) Jan 8, 2019
createPackage.js Updating all deps, and moving files around - major reorganization (#1594 Jan 8, 2019
cypress.json Improving Gallery (#1201) Jul 17, 2018
jest.config.js New operator enabling diffing of rich text (#1639) Feb 8, 2019
linkFiles.js Transition to Material Design (#900) Mar 29, 2018
package-scripts.js Fix ci again (#1612) Jan 14, 2019
package.json New operator enabling diffing of rich text (#1639) Feb 8, 2019 Using Cypress for E2E front-end testing (#740) Feb 2, 2018
yarn.lock WIP Feb 11, 2019


Visit our blog to see pedagogical scenarios, as well as technical and research updates.

Fabricating and running orchestration graphs. To learn more about the design and architecture, visit our wiki.


Graph editor

Example of student screens (four different students)

Short video demo


(more examples, and videos, on the wiki)

Set up

  • clone the git repository

  • go to the root repository

  • install Meteor

  • make sure you have a recent version of Node (at least 9.10) (if you have node, but not the latest, you can try npm install -g n; n latest

  • run the commands

    • ./ (if problem occur with bcrypt you can try to run meteor npm install --python=python2.7 from the frog/ directory)

    • go to the frog/ directory and run meteor (or run npm start server from any directory)

    • see more developer scripts and details here

  • Connect to FROG by typing in your browser

Troubleshooting initial setup

  • Make sure Meteor works (meteor --version) (note that the Meteor version is not important, Meteor will automatically download and install the correct version when run the first time)
  • Make sure you have an up-to-date version of Node 9 or 10 (node --version), and that npm works (npm --version -- will not be the same as the Node version)
  • We do not support Windows - you might be able to get it to run, but all of our scripts etc, presume MacOS/Linux
  • All scripts (./ etc should be run as user, not root)
  • Make sure you have enough disk-space, and that no other processes are listening to ports 3000, 3001 and 3002. (The need to expose these ports means that FROG will not work easily with ngrok, which only exposes a single port -- 3000 and 3002 need to be exposed).
  • If you need to re-run ./, execute these commands first. (Note that this deletes any file that has not been checked in and committed). It will also remove clean all Mongo collections (i.e all graphs and activities that have not been sent to the cloud library): git reset --hard; git clean -fdx; ./
  • Some warnings when you start Meteor like missing bcrypt, hiredis etc are OK, as long as the following lines are displayed:
=> Started your app.

=> App running at: http://localhost:3000/


  • Learn Meteor framework with React:

  • Note that we use yarn extensively. Unfortunately, we currently need to symlink all the packages from the root node_modules directory into frog/, because of a problem with Meteor. This means a specific workflow:

    • to update dependencies after pulling or switching to another branch, run npm start yarn
    • to add dependencies or do other yarn actions, first do npm start unlink, then do your actions, and then npm start link to be able to run the server again
  • In development mode, you can use the URL shorthand <host>?login={user} to automatically login as a given user (which will be automatically created if it does not yet exist). For example, http://localhost:3000/<slug>?login=peter, will open the student view logged in as peter. To access to the graph editor and the teacher orchestration dashboard you need to use the URL shorthand <host>/teacher/login={user}. If you want to see the "projector mode", you log in like <host>/teacher/projector/<slug>?login=teacher. The slug is displayed once you create a new session.

  • If you open a number of windows in the same browser, they will all be logged in as the latest user, because of cookies. A way around this is to add entries like this in /etc/hosts:	localhost	dev1	dev2	dev3

Reload /etc/hosts (on MacOS), and then log in to different users on different "domains".

Code style/testing

  • We use prettier for Javascript formatting, all pull-requests must be formatted accordingly.
  • We use ESLint for testing syntax.
  • We use Jest for tests.
  • We use Flow for type checking.

All PRs should pass all tests (npm start test in the repository root directory).


The main FROG program (in the frog/ directory) is licensed under the GNU Affero General Public License 3.0 (or, at your option, a later version). The licenses of all other packages may be found in their respective directories (LICENSE files in each sub-directory). While the main application is AGPL, we generally license more broadly applicable libraries, as well as specific learning activities, under permissive licenses such as the ISC license to facilitate their reuse in other systems. Please Contact us if you have any questions about licensing.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.