Code Monkey home page Code Monkey logo

license Build status Version Downloads

WebGME - Web-based Generic Modeling Environment

Note that this repository contains the full webgme app including a highly extendable graphical user interface and is the typical dependency a webgme app will depend on. To use the webgme framework without a packaged GUI - check out webgme-engine.

Create your own Domain Specific Modeling Languages (DSML) right in the browser. Specify modeling concepts, their relationships, attributes, and aspects by drawing a UML class diagram-based metamodel and WebGME automatically configures itself to support the DSML.

WebGME promotes collaboration where each change is translated into a micro-commit broadcast to all connected users. A lightweight branching scheme is transparently supported by the infrastructure. Code generators and externals tools can work on consistent snapshots (specific commits) while users can continue editing the models.

WebGME provides a variety of extension points for you to customize your application. See below for a list and explainations. All these can be neatly generated, shared and imported using a command line interface.

WebGME-User-Interface

Getting started

Dependencies

Server

  • NodeJS (version >= 14, CI tests are performed on versions 16.x, 18.x and LTS is recommended).
  • MongoDB (2.6 <= version).
  • Git (must be available in PATH).
  • Redis Note that this is only needed if you intend on running multiple webgme nodes behind a reverse proxy.

Browser

We aim to support all the major modern browsers. However we recommend using Chrome for two reasons: manual testing is mostly done using chrome and all performance profiling is done against the V8 JavaScript Engine.

Tutorials

  • Step by step tutorial - Explains meta-modeling in webgme and builds up a small application for Electrical Circuits.
  • Tutorial from seminar 2015 - Shows development techniques in webgme and builds up a Finite State Machine domain. This tutorial requires familiarity with meta-modeling.

Using WebGME

You can always try out webgme at our public deployment at webgme.org. After a certain point you probably want to host your own server with custom running code and visualization. At this point follow the instructions at 1.

  1. webgme-cli. This is the preferred way of using webgme as it allows you to:
  • Automatically generate boilerplate code for extensions (w/o manually configuring paths etc.).
  • Reuse components from other users.
  • Publish and share your work with others.
  • Updating to newer webgme releases only requires a npm install webgme and won't cause any conflicts.
  • Note that if cloning an existing repository constructed with webgme-cli, it is only necessary to install webgme-cli if you intend to create/import new components.
  1. For webgme developers, clone this repo.
  • install packages with npm npm install
  • launch mongod locally, e.g.
docker run --name my-mongo -d -p 27017:27017 mongo:4.4
  • start the server npm start

After the webgme server is up and there are no error messages in the console. Open a valid webgme address in the browser. The default is http://127.0.0.1:8888/, you should see all valid addresses in the console where you started webgme. To view the available documentation visit <host>/api.

Command line interface

The webgme-engine provides a range of bin scripts, see here for list of all.

Extensions

  • Plugins - Model interpretation for e.g. code generation.
  • Executor - Job execution framework over multiple worker nodes.
  • Rest Routers - Add custom REST API routes with access to gme-auth and storage APIs.
  • Constraints - Add custom constraints based on meta-types.
  • AddOns - Continuous model interpretation for e.g. constraint evaluation.
  • Webhooks - External event emitting based on changes in storage/models.
  • Layouts - Configure the layout of the generic UI.
  • Visualizers - Add complete visualizers to the generic UI.
  • Decorators - Add custom decoration to the nodes in the model editor.

See gme-config for available configuration parameters.

Change log

See CHANGELOG

Contributing

See CONTRIBUTING

License

See the LICENSE file.

WebGME's Projects

boilerplate icon boilerplate

Boilerplate code to use webgme as a library with a custom UI

ci icon ci

A continuous integration machine built in nodejs. After proper setup it provides extensive status about the main webgme repository.

cyphy icon cyphy

[NOT MAINTAINED] CyPhy customization of WebGME

hystudio icon hystudio

Design Studio for Hybrid System Verification Tools

icore icon icore

Integrated code-editor for interacting with models from the UI

mic icon mic

Model Integrated Computing - Design Studio tailored for the eager learners of the subject

ng-gme icon ng-gme

[NOT MAINTAINED] Library of GME-client specific angular services, factories and more.

sysml icon sysml

Systems Engineering Modeling Language (SysML) domain

tutorials icon tutorials

Stepwise tutorials for building webgme components.

udcp icon udcp

Unified Data and Compute Platform

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.