Cookie Consent by FreePrivacyPolicy.com TIBET
TIBET Logo

TIBET

TIBET Server

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.

TDS Startup
TDS Startup

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.