RESTHeart
# RESTHeart

RESTHeart is a Java open source Low code micro-services Open Platform.

RESTHeart is dual licensed under the AGPL and a business friendly commercial license.

As a framework for building HTTP micro-services is comparable to others, like Undertow (that is actually internally used by RESTHeart), Micronaut and Quarkus.

Its development framework allows implementing Services for request handling and Interceptors to snoop and modify requests and responses at different stages of the request lifecycle. It supports different programming languages, including Java, Kotlin, JavaScript and TypeScript leveraging the polyglot nature of the GraalVM virtual machine.

As a point of distinction between RESTHeart and other popular frameworks, it ships with application-level common features that makes it a Low Code Platform:

* A Data API for MongoDB (or any compatible database e.g. Percona Server for MongoDB, AWS DocumentDB and Azure Cosmos DB) that exposes the database resources through a comprehensive set of REST, GraphQL and WebSocket APIs.
* A Declarative Security implementation to manage Authorization and Authentication via configuration and Access-control list. Leveraging the same plugins mechanism for implementing Services and Interceptors, the security layer can be also adapted and customized.

## Technical implementation

RESTHeart it's fully implemented in Java and embeds Undertow, the high performance HTTP server which is one of the core components of the Wildfly Application Server.

RESTHeart inherits the same Undertow's pipeline architecture, where specialized handlers are chained together to serve the requests.

The module restheart-core is the foundation of the platform, the runtime process responsible for handling the core services, parsing the configuration, registering the plugins, enforce the security policy, route requests to the correct Services, executing Interceptors and Initializers.

The plugins implement general purposes functionalities and application logic and can be added via a file based deployment mechanism.

RESTHeart supports the GraalVM so it can be built as native image to better target containerized services. It's also available via Docker containers.

