RUAL Documentation

Core Concepts

The key ideas behind RUAL — blueprints, blocks, flows, storage, and deployment.

What is RUAL?

RUAL is a no-code platform for building ERP/CRM systems, apps, and websites. You build all backend logic by placing blocks on a visual canvas, there is no custom backend code. The frontend can be built with blocks too, or with custom React components for more advanced use cases.

You manage your system in RUAL Studio, the web application at rual.at. From there you manage blueprints, traffic, queue, deployment, translations, templates, and base settings for your cluster.

Blueprints

A blueprint is a large canvas where you design workflows. You place blocks on it and connect them to create flows. Each blueprint is typically dedicated to a specific component: a page, modal, API, or a set of functions, similar to assigning a single class to a file in traditional coding.

Multiple users can work on the same blueprint at the same time. Team members can add comments, group blocks with titles, and copy blocks between blueprints. RUAL logs all blueprint modifications automatically, like git commits but with real-time collaboration.

Since version 13.0.7, blueprints have separate development and production modes. Saving does not deploy to production, you must explicitly deploy through the deployment menu.

Blueprint Introduction Learn more about navigating blueprints, context menus, and saving changes.

Blocks

Blocks are the building units of every flow. There are over 1000 available, from array and date operations to HTTP requests and Discord integrations. Each block has input pins (in-pins) and output pins (out-pins) that define what data goes in and what comes out.

Pin Types

Pins are types, you can only connect pins of compatible types. The most common ones:

Pin Type Description
flow Controls the execution order between blocks. Flow pins determine when a block executes.
value A string value, such as a name, email, or identifier.
number A numeric value.
condition A boolean: true or false.
object A JSON object with key-value pairs.
array An ordered list of values.
date A timestamp for date and time operations.
file A file reference for upload and processing operations.
query A search query used with storage operations.
mutations A set of field changes for creating or updating documents in storage.
storage A reference to a specific storage (database) in your cluster.
state A UI state element used in frontend page rendering.
user A reference to a user in the system.
Browse All Blocks Explore the full library of over 1000 blocks organized by group.

Flows

A flow is a group of connected blocks within a blueprint. Each flow has a starting block that determines its type and purpose. A single blueprint can contain multiple flows of different types.

Flow Types

The following flow types exist in RUAL, each starting with a specific block:

Flow Type Starting Block Purpose
Page state_page Builds a user-facing page with UI components. Pages are accessible via URLs and can be public or restricted with scopes.
Function trigger_custom_function Creates a reusable function that can be called from other flows or blueprints. Functions are private by default.
API on_startup_register_uri_{method} Registers an API endpoint (GET, POST, PUT, PATCH, DELETE, or file upload) that can be called by external services or your frontend.
Modal state_flow_modal Creates a pop-up modal that can be shown on a page.
Storage Event storage_event Executes when a document is created, updated, or removed in a specific storage.
Repeating Event schedule_repeating_event Executes at a recurring interval, similar to setInterval() or crontab.

How Flows Work Together

In a typical app, a Page flow renders a form where users input data. When the user submits, a Function validates the input and creates a document in storage. A Storage Event picks up that write and sends a confirmation email in the background. An API endpoint lets external services query the same data, and a Repeating Event runs every hour to generate statistics and cache them in Redis.

Functions can be called from any flow type using the function_custom_execute block. Public functions can be called across blueprints, while private functions are only accessible within their own blueprint.

Storage

RUAL includes a built-in, enterprise-scale storage system with full-text search. Storage is JSON-based and schema-less — you don't need to predefine structures. It does not support relationships between entities, so include all necessary data within each document (denormalization).

Documents are updated using mutations, a transaction-based system that processes updates sequentially. This makes counters and array operations safe to use without race conditions.

Storage Learn how to create documents, build search queries, model data, and manage document lifecycles.

Activation and Deployment

Before any pages, APIs, modals, or events in a blueprint become active, you need to activate the blueprint using the Activate button in the top bar. All elements are inactive by default.

Since version 13.0.7, there is a clear split between development and production. Saving keeps changes in development mode. To make them available to users, you need to deploy the blueprint to production.

Getting Started Tip If you are new to RUAL, start by reading the Blueprint Introduction to learn how to navigate and work with blueprints, then explore the Tips & Tricks for productivity shortcuts.

Next Steps

Block Execution Learn how blocks execute, including parallel flows, dataflow, and error handling. Browse Blocks Explore the full library of over 1000 pre-built blocks. Cluster APIs Access 40+ REST APIs for managing your cluster.