Documentation

Knot.x is an open-source integration framework designed to build backend APIs combining CMS experience with the dynamic data from external systems like e-commerce, CRMs, and search engines.

A "heart" of Knot.x is the non-blocking asynchronous HTTP Server (powered by [Netty](http://netty.io)) that uses Fragment Processing to connect many data sources into a one customer experience (like HTML, JSON or PDF) in the configurable, reactive, scalable and fault-tolerant way.

A fragment is a piece of any kind of document that can be processed independently (e.g. an HTML snippet that represents the shopping cart or a JSON containing person's bookshelf).

Knot.x comes also with a distribution that enables quick start with the framework, is a project structure and supports deployment automation (see the Cookbook and Docker images).

Knot.x is built on the top of Vert.x, known as one of the leading toolkits for performant, event-driven applications. It uses asynchronous programming principles which allows it to process a large number of requests using a single thread. Asynchronous programming is a style promoting the ability to write non-blocking code (no thread pools). The platform stays responsive under heavy and varying load and is designed to follow Reactive Manifesto principles.

Getting started

Start with the Tutorials section to understand the basics of Knot.x and play with it.
Explore the Knot.x Example Project for use case examples.


Documentation

Below you can explore user documentation for the most important Knot.x modules. Each module documentation can be found in module's repository. You may explore all the modules in the Knot.x GitHub project.

knotx-server-http Explore the docs

The server is essentially a "heart" of Knot.x. It's scalable (vertically and horizontally), pluggable (easy to extend), fault-tolerant and highly efficient reactive HTTP server based on Vert.x. It handles all incoming HTTP requests and routes the traffic using the [OpenAPI specification](https://github.com/OAI/OpenAPI-Specification).

knotx-fragments Explore the docs

While Knot.x HTTP Server is a "hearth" of Knot.x, a Fragments processing is its "brain". Knot.x Fragments is a Swiss Army knife for integrating with dynamic data sources. It comes with distributed systems stability patterns such as a circuit breaker to handle different kinds of network failures. Thanks to those build-in mechanisms developers can focus more on delivering business logic and make the solution ready to handle any unexpected integration problems.

knotx-stack Explore the docs

Stack is a Knot.x distribution, a fully-featured bootstrap project for Knot.x-based solutions. It does not require any external dependencies, therefore it is used to build Knot.x Docker images and to setup an instance with Chef.

knotx-launcher Explore the docs

Launcher provides a way to configure and run a bare Knot.x instance. It can be used as a microservice platform built on Vert.x using the HOCON syntax for configuration and modules management.

knotx-repository-connector Explore the docs

The repository connector provides a template from external repositories, such as CMS or file system.

knotx-data-bridge Explore the docs

Data Bridge is an integration module that enriches Fragments with the data from external sources. It comes with HTTP Action that connects to the external WEB endpoint that responds with JSON.

knotx-template-engine Explore the docs

Template Engine converts a template and Fragment's data into the final markup. Knot.x comes with implemented Handlebars engine out of the box, but creating any custom template engine is very easy.

knotx-junit5 Explore the docs

JUnit 5 extension for Knot.x-based projects.

knotx-gradle-plugins Explore the docs

Gradle plugins that help manage Knot.x modules build. Most of the Knot.x 2 modules are built and deployed with Gradle 5 using Kotlin DSL.