# Registry

We are using the registry to decrease coupling between the components and modules. This way
you do not have to be avare which module is implementing a service, you only need to be aware
of the name it is registered.

## Example usage
```javascript
// Registering a new service
const registry = require('core/server/registry');
registry.add('FooBar', FooBar);

// Retrieving the service somewhere else
// (either in a different module)
const registry = require('core/server/registry');
const FooBar = registry.get('FooBar');
```

## Core modules in the registry

**Main event emitter** ([more info](Events.md))
```javascript
registry.get('events');
```

**Promise Hub** ([more info](Promise-Hub.md))
```javascript
registry.get('promisehub');
```

**Timer** ([more info](Timer.md))
```javascript
registry.get('timer');
```

**App** ([more info](App.md))
```javascript
registry.get('app');
```

**API Router** ([more info](API-Router.md))
```javascript
registry.get('apiRouter');
```

**Config** ([more info](Config.md))
```javascript
registry.get('config');
```

**Logger** ([more info](Logger.md))
```javascript
registry.get('logger');
```
