Core Concepts

How it works

Simply put, Impulse syncs content. A sync requires a job. A job requires endpoints. Endpoints connect to a system.

Once a job exists and has endpoints with configs, a sync can be started.

What does "sync" mean?

A "sync" is Impulse's primary function. Sync means moving content from a source to a destination. Sources or destinations can be files systems, databases, content management systems, version control sites, and more. These sources and destinations are connected to via Impulse endpoints.

What's a connector?

A connector is an extension point of Impulse that allows Impulse to retrieve and/or save content to a system. Connectors have 3 levels.

  1. Destination connector only

    • Can only sync from motation

    • The endpoint will not pick up and save content into Impulse's motation standard

    • The endpoint will not save content into Impulse

  2. Source connector only

    • Can only sync to motation

  3. Both source and destination connector

    • Can sync to motation and from motation

What's an endpoint?

Endpoints are the connection to a source or destination. An endpoint declares a repository for data. Repositories could be GitHub, dotCMS, Strapi, a file system and more. These repos are a location that data is stored at so data can be either synced to or from that site. Endpoints require configuration based on their connector to sync data.

Endpoints are used by both sources and destinations. Endpoints contain the information required to connect to a source or destination. Each endpoint tells what system the repo is and the configures the location and authentication needed.

What's a job?

Jobs are how impulse starts a sync. They are used to declare the source(s) content should sync from and the destination(s) content should sync to. Jobs also configure what data to sync and special rules for saving it. A job uses endpoints to access systems and sync their data.

Jobs use endpoints to access systems and determines which are sources or destinations. A job has a list of endpoints which declare if an endpoint is a source or destination. A job also includes details for each endpoint which determine what data should be synced from source endpoints and how it should be synced in destination endpoints.

What's a transaction?

When a job is used to start a sync it creates a transaction. A transaction is the detailed process of a sync. When a sync starts a transaction starts. Once the transaction is finished the sync is done.

A transaction has reports which provide details on the process of the sync, differences found between repositories in a sync, and more.

How content is sync?

Using the search criteria configured in the Job Options for each endpoint, impulse will request to the configured source endpoint and each destination endpoint the contents matching that criteria (not the whole content but just some details used on the impulse comparison), those contents will be compared between the source and each destination endpoints and depending on the result of the comparison impulse decides whether a content needs to be sync or not.

Impulse has the concept of Local Ids, a local id is a unique identifier for each content in each system, the comparison described above is made using those local ids, and it means that if the content does not change the local id won't change either allowing us to use to compare, if the local id for a given content changed over time we can infer the content also changed and needs to be sync.

What is motation?

Motation is short for "Motiv Notation". This is the storage type that Impulse stores all content as. Many of Impulse's functions use motation as the standard. The functions that use motation as the standard will be unable to function without the proper connector level and config.

For instance, the diff report will not work without the destination endpoint using a level 3 connector and having both source and destination configs.

Last updated