Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
ujibang authored Dec 8, 2023
1 parent bbfd5b1 commit 570361c
Showing 1 changed file with 23 additions and 60 deletions.
83 changes: 23 additions & 60 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,77 +1,49 @@
# RESTHeart - Ready to use backend for the modern Web.
# RESTHeart - Open Source Low-code API development framework

## REST, GraphQL and WebSocket APIs for MongoDB.
_Featuring ready-to-go Security and MongoDB API_

[![GitHub last commit](https://img.shields.io/github/last-commit/softinstigate/restheart)](https://github.com/SoftInstigate/restheart/commits/master)
[![Github stars](https://img.shields.io/github/stars/SoftInstigate/restheart?label=Github%20Stars)](https://github.com/SoftInstigate/restheart)
[![Maven Central](https://img.shields.io/maven-central/v/org.restheart/restheart.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:org.restheart)
[![Docker Pulls](https://img.shields.io/docker/pulls/softinstigate/restheart.svg?maxAge=2592000)](https://hub.docker.com/r/softinstigate/restheart/)
[![Join the chat on Slack](https://img.shields.io/badge/chat-on%20slack-orange)](https://join.slack.com/t/restheart/shared_invite/zt-1olrhtoq8-5DdYLBWYDonFGEALhmgSXQ)

RESTHeart offers the following features:

1. **Out-of-the-box data persistence** on [MongoDB](https://www.mongodb.com) as well as **compatible databases** such as [AWS DocumentDB](https://aws.amazon.com/documentdb/?nc1=h_ls) or [Azure Cosmos DB](https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb/mongodb-introduction), all accessible through REST, GraphQL, and WebSocket APIs.

2. **Declarative authentication, authorization, and user management** for your applications.

3. A **polyglot development framework** that supports Java, Kotlin, JavaScript, and TypeScript.

With RESTHeart, you can harness **100% of MongoDB's capabilities using simple HTTP calls**, eliminating the need for programming!

> **Note**: Schedule a [free 1-to-1 demo](https://calendly.com/restheart) and feel free to ask us anything!
During startup, RESTHeart **automatically establishes a connection to the configured MongoDB database** and provides comprehensive API access. Refer to the example session below, which employs [HTTPie](https://httpie.io) for making REST calls:

![See RESTHeart in action](https://github.com/SoftInstigate/restheart-website/raw/aa2a9be0fc13c5d70f3ad4ed9e337875525394bc/images/restheart.gif)

**Developers can reduce backend code by at least 80%** when managing security and delivering content to mobile apps, Angular, React, Vue, or other single-page application (SPA) frameworks.

![RESTHeart use cases](https://restheart.org/images/clients.png)

## Supported databases

RESTHeart works with any MongoDB compatible database. The actual features supported depend on the level of compatibility of the database with the official MongoDB Java driver.
RESTHeart is a framework for building HTTP microservices that aims to empower developers with intuitive APIs out of the box. It is built for developers, with a focus on simplicity, speed and ease of use.

**Note**: RESTHeart releases are tested in continuous integration with official MongoDB distributions only (from MongoDB 4.2 to 7.0).
RESTHeart is classified as a low-code framework because it provides pre-configured APIs like authentication/authorization and data management through MongoDB integration. This approach reduces the amount of code developers need to write, streamlining the development process and making it easier and faster to build cloud-native HTTP microservices

<a href="https://mongodb.com"><img src="https://upload.wikimedia.org/wikipedia/commons/9/93/MongoDB_Logo.svg" width="200px"></a>
<a href="https://www.ferretdb.io"><img src="https://dbdb.io/media/logos/ferretdb.svg" width="200px"></a>
<a href="https://developer.azurecosmosdb.com"><img src="https://devblogs.microsoft.com/wp-content/uploads/sites/31/2019/04/cosmosdb_fi.png" width="100px"></a>
<a href="https://aws.amazon.com/documentdb/features/"><img src="https://d2908q01vomqb2.cloudfront.net/887309d048beef83ad3eabf2a79a64a389ab1c9f/2020/02/04/DocumentDB.png" width="160px"></a>
<a href="https://www.percona.com/software/mongodb/percona-server-for-mongodb"><img src="https://www.percona.com/blog/wp-content/uploads/2015/12/psmdb-logo.png" width="200px"></a>
The **MongoDB plugin** exposes the full database capabilities through REST, GraphQL and Websockets with no backend code required. This cuts development time significantly. Supports MongoDB, Mongo Atlas, FerretDB, AWS DocumentDB, and Azure CosmosDB.

- MongoDB Community, Enterprise and Atlas Cloud are 100% supported in all their functionalities.
- Azure Cosmos DB and Amazon DocumentDB offer partial support for the MongoDB API, but most common RESTHeart features work as expected.
- FerretDB offers partial support for the MongoDB API on top of PostgreSQL, but its level of compatibility with MongoDB is growing daily. FerretDB plans to support more relational databases in the future.
- Percona Server for MongoDB is, in general, fully compatible with MongoDB, so RESTHeart usually works perfectly with it.
RESTHeart offers comprehensive authentication and authorization services, supporting various security schemes. It enables the management of users and permissions directly in MongoDB collections, eliminating the need for backend code. This streamlined approach significantly reduces development time.

## Advanced Capabilities

RESTHeart incorporates [Undertow](https://undertow.io), a versatile and high-performance web server crafted in Java. Undertow furnishes both blocking and non-blocking HTTP APIs built upon [NIO](https://en.wikipedia.org/wiki/Non-blocking_I/O_(Java)). Notably, Undertow serves as the foundational HTTP server for [RedHat's Wildfly](https://www.wildfly.org).
## Documentation

Setting up RESTHeart is effortless, as it operates seamlessly after installation and configuration. It is exceptionally well-suited for deployment within a [Docker container](https://hub.docker.com/r/softinstigate/restheart), making it a natural fit for deployment in **Kubernetes** and **AWS ECS** clusters.
The full documentation is available on [restheart.org/docs](https://restheart.org/docs/).

RESTHeart additionally provides support for [GraalVM](https://restheart.org/docs/graalvm/), an innovative Java Virtual Machine developed by Oracle. GraalVM introduces a **polyglot runtime environment** and the ability to compile Java applications into **native binary images**.
## Installation

The internal architecture relies on a system of [plugins](https://restheart.org/docs/plugins/overview/), exposing an API that empowers the implementation of custom services in Java, Kotlin, JavaScript, or TypeScript.
Refer to the documentation sections [Setup](https://restheart.org/docs/setup) or [Setup with Docker](https://restheart.org/docs/setup-with-docker).

To [enhance the default functionality](https://restheart.org/docs/plugins/overview/), you can implement the following Java interfaces:
One-liner to run RESTHeart with Docker:

- __Service__ - Expands the API by introducing new web services.
- __Interceptor__ - Observes and modifies requests and responses at various stages of the request lifecycle.
- __Initializer__ - Executes initialization logic during startup.
- __Providers__ - Implements the Dependency Injection mechanism to supply objects to other plugins using the @Inject annotation.
```
$ curl https://raw.githubusercontent.com/SoftInstigate/restheart/master/docker-compose.yml --output docker-compose.yml && docker compose up --attach restheart
```

The default [GraphQL](https://restheart.org/docs/graphql/) plugin seamlessly coexists with the existing REST endpoints, yielding a managed and unified GraphQL API tailored for modern applications.
## The Framework

Furthermore, the embedded WebSocket server can expose MongoDB's [Change Streams](https://docs.mongodb.com/manual/changeStreams/), permitting applications to access real-time data alterations.
A plugin is a software component that extends the functionality of RESTHeart, allowing you to add additional features and capabilities to the basic API. RESTHeart supports the development of plugins in Java, Kotlin, and JavaScript.

Given these considerations, __RESTHeart emerges as the ideal "low code," self-contained backend solution for contemporary web and mobile applications__. Its design is centered on streamlining development and deployment processes.
## Download
There are four types of plugins in RESTHeart:

Download prebuilt packages from [releases](https://github.com/SoftInstigate/restheart/releases)
- Service: These plugins extend the API by adding web services.
- Interceptor: These plugins snoop and modify requests and responses at different stages of the request lifecycle.
- Initializer: These plugins execute initialization logic at system startup time.
- Provider: These plugins provide objects to other plugins via the @Inject annotation.

Find setup instructions at [Setup](https://restheart.org/docs/setup/) documentation page.
Additionally, it is also possible to develop security plugins to customize the security layer.

## Build from source

Expand Down Expand Up @@ -142,21 +114,12 @@ The short hash is `2108ce0` and the docker pull command is therefore
$ docker pull softinstigate/restheart-snapshot:2108ce0
```

## Documentation

The full documentation is available [here](https://restheart.org/docs/).

You can also have a look at our [introductory video](https://youtu.be/9KroH-RvjS0) on Youtube:

[![Watch the video!](https://img.youtube.com/vi/9KroH-RvjS0/hqdefault.jpg)](https://youtu.be/9KroH-RvjS0)

## Contacts and Support
## Community Support

- Open a [issue on GitHub](https://github.com/SoftInstigate/restheart/issues/new) to report a specific problem.
- Ask technical questions on [Stackoverflow](https://stackoverflow.com/questions/ask?tags=restheart).
- Chat with other users on [Slack](https://join.slack.com/t/restheart/shared_invite/zt-1olrhtoq8-5DdYLBWYDonFGEALhmgSXQ).
- Book a [free 1-to-1 demo](https://calendly.com/restheart) with us.
- Write us an [e-mail](mailto:ask@restheart.org?subject=RESTHeart).

## Become a Sponsor

Expand Down

0 comments on commit 570361c

Please sign in to comment.