Skip to content
The GUI for MongoDB.
JavaScript CSS HTML Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.evergreen chore: update npm version to fix evergeen (#1822) Oct 1, 2019
.github
src COMPASS-3920: Remove license display code on community Oct 3, 2019
test COMPASS-3710: Migrating all connections to new disk model Aug 28, 2019
.babelrc Compass using React components May 21, 2016
.eslintignore INT-1098: Use hadron-build (#346) Apr 18, 2016
.eslintrc Fix eslint settings and errors (#1702) Apr 26, 2019
.evergreen.yml Fix evergreen yml bash typo causing failed builds (#1802) Sep 19, 2019
.gitignore factor out instnce plugin to be a standalone Feb 7, 2018
.jsfmtrc moved to http://github.com/mongodb-js/precommit Jul 1, 2015
.npmrc
.snyk fix: .snyk & package.json to reduce vulnerabilities Aug 14, 2018
.travis.yml COMPASS-3814: add respondTo ipc event to show info dialogue (#1795) Sep 30, 2019
CONTRIBUTING.md COMPASS-3823: Add CLA requirement to CONTRIBUTING.md Sep 18, 2019
LICENSE COMPASS-3823 Switched to SSPL Aug 28, 2019
README.md README updates: screenshot, development, plugin info Sep 26, 2019
THIRD-PARTY-NOTICES.md fix apache 2 default copyright Sep 18, 2019
compass-screenshot.png README updates: screenshot, development, plugin info Sep 26, 2019
package-lock.json Include driver syntax in export-to-lang (#1829) Oct 21, 2019
package.json

README.md

MongoDB Compass

The MongoDB GUI.

Aggregation Pipeline Builder Tab in Compass

Development

Running Compass locally requires Node.js and npm:

  • Node.js: 10.2.1
  • npm: >= 6.0.0
npm install
npm start [compass|compass-readonly|compass-isolated]

Plugins

Current Plugin API Version: 3.0.0

Majority of Compass' functionality lives in various plugins outside the main repo. This repo just brings them all together. All external plugins are tagged via the compass-plugin topic in the mongodb-js organisation. There are also various compass-tools and compass-ui-tools packages that help put together the application.

Plugins can be added to Compass by requiring them as a dependency in package.json, and by adding their installed location to the distribution plugin list also in the package.json. Plugin's apiVersion field has to match Compass'. Currently it's at 3.0.0.

Example of adding a dependancy:

npm i -S @mongodb-js/compass-aggregations@latest

And in package.json:

"distributions": {
  "plugin-prefix": "@mongodb-js/compass",
  "default": "compass",
  "compass": {
    "name": "mongodb-compass",
    "plugins": [
      "node_modules/@mongodb-js/compass-aggregations", // add compass-aggregations
      // rest of the plugins required for this distribution
    ],
    "styles": [
      "index"
    ]
  },
  // other distribution config
}

Plugin Roles

Compass determines functionality of a plugin based on its registered Role. There are a few mains ones that we use:

  • Instance.Tab - Display as tabs in the instance context of the app. For example, server-status-plugin.
  • Database.Tab - Display as tabs in the database context of the app. compass-collections-ddl is registered as a Database.Tab, for example.
  • Collection.Tab - Display as sub tabs in the collection context of the app. A good example of this is the compass-crud.
  • Global.Modal - Will open as modal dialogs in any context of the app. These can be separate plugins entirely, or part of an existing plguin that does something else. For example, compass-aggregations is an Collection.Tab, but also registers a Global.Modal.
  • Collection.ScopedModal - Will open as a modal scoped in the collection context. compass-import-export, for example, registers 2 ScopedModals - one for import and the other for export.

Creating a New Plugin

We use a template to create new plugins. It comes set up with packages we might need to be using, and an electron environment to debug and test the plugin. The template is managed by khaos

npm i -g khaos
khaos create mongodb-js/compass-plugin ./my-plugin

Contributing

For issues, please create a ticket in our JIRA Project.

For contributing, please refer to CONTRIBUTING.md

Is there anything else you’d like to see in Compass? Let us know by submitting suggestions in out feedback forum.

License

SSPL

You can’t perform that action at this time.