Data Server (Overview)
NOTE: TIBET Desktop does not require the TIBET Data Server (TDS) for operation; however, you can seamlessly leverage the TDS to mock remote service endpoints.
Wins
- Powerful Node.js Express server with modular, plugin-based architecture.
- Pre-configured plugins for mocking, security, authentication, logging, and more.
- Specialized plugins supporting interactive development via TIBET Lama.
Concepts
For projects without an existing investment in a server technology or those looking to migrate to a Node.js-based solution we provide the TIBET Data Server (TDS).
We use the TDS in our daily development and as the default server for our Enterprise clients. It might be optional but it's powerful, extensible, and supported.

The TDS is pluggable, leveraging pre-built middleware components for logging,
compression, session management, security, authentication, and more. Many of
the TDS's plugins are themselves pluggable. For example, the authentication
module wraps passport.js
, letting you integrate with a wide variety of
authentication approaches from OAuth2 to LDAP.
The TDS is designed to speed development with automatic route and mock generation. Using the TDS you can quickly serve static JSON or XML data behind public or private handlers, eliminating boilerplate for mocking static or dynamic data.
TIBET-specific TDS plugins are also leveraged to support fast development via the Lama. Pre-built handlers support bi-directional file change management, TIBET CLI invocation, TIBET Workflow System features, administrative APIs, and more.
Configuration
The TDS draws its configuration data from two files: tibet.json
and
tds.json
. The tibet.json
file contains TIBET's default configuration values
and information in that file is shared by both client and server. The tds.json
file is only available to the TDS.
For brevity we'll skip the tibet.json
file. Here's a sample tds.json
file.
{
"default": {
"port": 1407,
"pouch": "pouch",
"plugins": {
"tds": [
"couch",
"tasks"
]
}
},
"development": {
"plugins": {
"tds": [
"cli",
"couch",
"patch",
"tasks",
"watch"
]
},
"use": {
"couch": true,
"watch": true
},
"port": 2345
}
}
As you can see here, the TDS configuration file is segmented by 'environment'.
Top-level keys must match the current Express env
value or default
values will be used.
Core Plugins
The TDS is a highly modular server whose functionality is driven by a set of prebuilt plugins you can adjust or replace to meet your needs:
// ---
// Plugins
// ---
// Shared options which allow modules to essentially share values like the
// logger, authentication handler, etc.
options = {app: app, argv: argv, env: env};
plugins = TDS.getcfg('tds.plugins.core');
if (!plugins) {
plugins = [
"preload",
"body-parser",
"logger",
"compression",
"reconfig",
"public-static",
"session",
"security",
"view-engine",
"authenticate",
"private-static",
"routes",
"pouchdb",
"tds",
"proxy",
"fallback",
"errors"
];
}
Each TIBET project with a TDS component gets its own copy of these plugins, allowing you to adjust their behavior as you see fit.