Skip to content

webgme/webgme-engine

This branch is up to date with master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Patrik Meijer
Jun 21, 2024
7d0a6de · Jun 21, 2024
Jun 20, 2024
Oct 12, 2023
Feb 9, 2015
Oct 7, 2016
Feb 13, 2017
Jun 20, 2024
May 4, 2024
Feb 9, 2015
Jun 20, 2024
Aug 22, 2023
Nov 14, 2019
Aug 21, 2023
Nov 14, 2017
Mar 12, 2019
Feb 17, 2020
Mar 20, 2015
May 7, 2024
Nov 29, 2022
May 4, 2024
Aug 24, 2023
Aug 23, 2018
Aug 21, 2023
Jun 20, 2024
Jun 21, 2024
Jun 21, 2024
Mar 5, 2019
Oct 12, 2023

Repository files navigation

license Build status Version Downloads

webgme-engine

This is the "engine" of the webgme application and contains all server code, common-modules and client-api. If this is your first encounter with webgme the webgme/webgme is probably what you're looking for.

The webgme-engine was forked off from webgme/webgme at version v2.17.0 and since then is released separately from webgme starting off from v2.18.0.

Most documentation in the webgme/webgme - wiki is still applicable for this repository (all except the GUI specifics).

webgme/webgme uses the engine as a dependency and a repository should only depend on one of these libraries.

Developers

Dependencies

  • NodeJS (version >= 14, CI tests are performed on version 18.x and 20.x).
  • MongoDB (2.6 >= version).
  • Git (must be available in PATH).
  • Redis needed to run all tests and if serving under multiple nodes.

Command line interface

All runnable javascript programs are stored in the src/bin directory, you should start them with node from the root directory of the repository, e.g. node src/bin/start_server.js starts the web server. Each script supports the --help or -h command line parameter, which will list all possible parameters.

  • start_server.js: it starts a web server, which opens a connection to the configured MongoDB.
  • run_plugin.js: executes a plugin via a direct MongoDB connection.
  • merge.js: merges two branches if there are no conflicts.
  • usermanager.js: manages users, organizations, and project authorization (read, write, delete).
  • clean_up.js: lists/removes projects based on supplied criteria (commits, branches, regex etc.).
  • export.js: exports a (snapshot of a) branch into a webgmex-file.
  • import.js: imports a (snapshot of a) branch (from webgmex-file) into a webgme project.
  • addon_handler.js: starts a server that handles running addons (see config.addOn.workerUrl).
  • manage_webhooks.js: add/update/remove webhooks to and from projects.
  • blob_fs_clean_up.js: cleans up blobs from the filesystem that are not referenced from any projects.
  • plugin_hook.js: plugin developer utility for triggering plugin on changes made to a project.
  • storage_stats.js: outputs statistics about the projects in the database.
  • connected_webhook_handler.js: webhook example illustrating how to create an authenticated remote connection to the storage (models).

Repo structure

  • config - contains the configuration files for webgme.
  • dist - container for webgme.classes.build.js generated at prepublish or postinstall.
  • docs - 'REST' and 'source' are generated at postinstall.
  • seeds - contains the project templates including the base seed 'EmptyProject' and some samples.
  • src/addon - addon related files - all these are currently only executed under nodejs.
  • src/app - sample application illustrating how to use the webgme.classes.build.js from served from dist. The path to the app-dir is configurable via gmeConfig.client.appDir.
  • src/bin - contains the bin-scripts explained above.
  • src/client - code for the browser/GUI API - a.k.a. the "Client API" (strictly JavaScript and no HTML nor CSS)
  • src/common - code running under nodejs and/or inside a browser. Under nodejs the code (e.g. core, storage and blob) is typically executed in workers and not in the main server process.
  • src/docs - source code documentation that isn't inlined in the code itself.
  • src/plugin - plugin related code such as plugin-managers and the PluginBase, also contains a range of sample plugins under 'coreplugins'.
  • src/server - code strictly running under nodejs. Aside from the worker code - the code runs in the main server process.
  • test - test directory, note that _globals.js contains utitlity functions for settings up test-contexts.
  • test-karma - test directory for tests running inside a browser.
  • test-tmp - temporary files generate during tests.
  • utils - postinstall, prebublish and build scripts.