Appsmith is available via the cloud as well as self-hosted instances. It comes in three versions: Community, Business, and Enterprise. They're all extremely similar in build and architecture and are deployed as a single Docker container with a single volume for storing persistent data.
Read further to learn about how the Appsmith platform works under the hood.
Self-hosted instance architecture.
The diagram below illustrates the different components and how these services communicate with each other.
How it works
A single Docker container runs the following processes to deploy and get started with Appsmith:
- The Appsmith Server (backend) as a Java process, which handles:
- Authentication: login credentials, OAuth 2.0 with Google and GitHub, SSO with OIDC and SAML
- A CRUD API for users, workspaces, applications, pages, and widgets
- An action execution module that executes your queries to your databases and APIs
- A git module that maintains clones of your Git-connected apps on the file system
- The NGINX Server, which routes:
- Requests to static assets like Javascript, CSS, and images
- Incoming requests to the backend server, or the RTS depending on the request path
- Path-unidentified requests to an
index.html
page with a 200 status code. This is like a typical single-page application where the client React code is expected to understand the path and show the UI accordingly.
- The Realtime Server (RTS), a tiny NodeJS server that handles a few features such as mapping dependencies between APIs, queries, and web UI components. It also updates references for all reference-able entities when their names change in Appsmith.
- The MongoDB Server, which stores all persistent data needed and generated by Appsmith’s building blocks, like:
- Your users’ details and permissions
- Workspaces you have created
- Applications you are building and have deployed
- Datasources you have connected to
- Queries that connect those datasources to your apps.
- The Redis Cache, which is used for storing user sessions and cache permissions that a user has access to directly and indirectly.