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.
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.
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.
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).
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. The repository also provides HTTP Action that connects to the external WEB endpoint that responds with JSON.
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.
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.
The repository connector provides a template from external repositories, such as CMS or file system.
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.
JUnit 5 extension for Knot.x-based projects.
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.