LogoLogo
Home
Core Platform
Core Platform
  • Introduction
    • Overview
    • Use Cases
    • Architecture
    • Built with ML & AI
    • Quick Start
  • Examples
    • Training Examples
      • API Flow Examples
      • Microservice Examples
      • UI Example
      • Exercise: Hello World API
      • Exercise: Test State
      • Exercise: Test UI
    • Exercise: To-do List
      • To-do List Runner
      • To-do List Gateway
      • To-do List UI
      • To-do List Query
  • Troubleshooting
    • Rierino Packages
    • Release Notes
    • Useful Checks
    • Error Codes
  • Devops
    • Overview
    • API Flows
      • Using the Saga Screen
      • Defining a Saga
      • Configuring Saga Steps
        • Event Step
        • Transform Step
          • Transform Classes
        • Condition Step
          • Condition Classes
        • Step Link
      • Injecting Variables
    • Microservices
      • Runners
        • Using the Runner Screen
        • Defining a Runner
        • Managing Runner Settings
        • Adding Runner Elements
        • Deploying Runners
          • Spring Runners
          • Samza Runners
          • Camel Runners
      • Elements
        • Systems
        • State Managers
          • Typical Use Cases
          • State Data Structure
          • Local States
            • In-Memory Map
            • Caffeine Cache
            • Samza Based
            • Lucene Based
            • Single File
            • Multiple Files
            • Selected IDs Map
            • Indexed Map
          • Shared States
            • MongoDB Collection
            • Jooq (SQL) Table
            • Redis Map
            • Couchbase Collection
            • Elasticsearch Index
            • Elasticsearch Joined
            • Etcd Namespace
          • Specialized States
            • CRUD Service
            • Odata Service
          • State Coordinators
            • Lazy Cache Coordinator
            • Event Store Coordinator
            • Write thru Coordinator
          • Loading Strategies
          • ID Generators
        • Listeners
        • Query Managers
          • MongoDB
          • Elasticsearch
          • Lucene
          • SQL Based
          • Odata Service
        • Handlers
          • Core Handlers
            • Write Data
            • Read Data
            • Query Data
            • Apply Rules
            • Call Rest API
            • Generate Text/Html
            • Parse Html
            • Generate Secrets
            • Orchestrate User Task
            • Perform File Operation
            • Run Shell Command
            • Send/Receive Emails
          • Custom Code Handlers
            • Run Scripts
            • Run Java Code
            • Run Java Package
          • Flow Handlers
            • Orchestrate Saga
            • Loop Each Entry
            • Run Multiple Steps
            • Buffer Payloads
            • Merge Parallel Steps
            • Log Event
            • Send Event
            • Validate Event
            • Transform Event
            • Perform DB Transaction
            • Trigger Runner Command
            • Do Nothing
            • Modify Role Data
            • Enrich Role Data
            • Convert Pulse to Journal
          • Gateway Handlers
            • Authenticate
              • No Authentication
              • State Based
              • Keycloak Based
            • Sessionize
          • Specialized Handlers
            • Apply Advanced Rules
            • Calculate Real-time Metrics
            • Score ML Models
            • Score LangChain Models
            • Service MCP Requests
            • Service A2A Requests
            • Consume Web of Things
            • Perform Text Embedding
            • Run Python Procedure
            • Generate Excel
            • Generate PDF
            • Call SOAP API
            • Integrate with Camel
        • Actions
        • Streams
          • Kafka Topic
          • CDC Feed
          • Camel Component
        • Roles
        • Generic Settings
        • Global Settings
      • Deployments
        • Defining a Deployment
        • Alternative Loaders
    • Gateway & Security
      • Gateway Servers
        • Gateway Systems
        • Gateway Channels
        • Gateway Services
        • Gateway Tokens
      • APIs
        • OpenAPI Specification
        • Response Formats
    • Administration
      • Managing Deployments
      • Sending Commands
      • Streaming Messages
      • Migrating Assets
    • Batch Tasks
      • Python Processes
      • Python Iterators
      • Python Processors
    • Pro-Code
      • Custom Handlers
      • Custom State Managers
      • Custom Query Managers
      • Custom CDC Managers
  • Design
    • Overview
    • User Interface
      • Apps
      • UIs
        • Listers
        • Widgets
          • Value Widgets
          • Array Widgets
          • Object Widgets
          • Indirect Widgets
          • Atom Widgets
        • Menus
          • Lister Menu Actions
          • Selection Menu Actions
          • Editor Menu Actions
          • Widget Menu Actions
          • Custom Menu Actions
          • RAI Menu Actions
        • Extended Scope
          • Conditional Display
          • Data Context
          • Extra Data
          • Default Item
          • Extra Events
      • Options
      • Translations
      • Icons
      • Styles
      • Components
    • API Mapping
    • Data Schema
      • Common Data
  • Configuration
    • Overview
    • Queries
      • Query Types
      • Query Platforms
        • MongoDB Queries
        • Odata Queries
        • SQL Queries
        • Elasticsearch Queries
        • Lucene Queries
        • Siddhi Queries
    • Business Rules
      • Drools Rules
    • Dynamic Handlers
  • Data Science
    • Overview
    • ML Models
      • Scheduler Platforms
        • Airflow Scheduler
    • GenAI Models
    • MCP Servers
    • Complex Event Processing
      • Siddhi Data Flows
    • Data Visualizations
    • Customizations
  • EXTENSIONS
    • JMESPath
    • Handlebars
Powered by GitBook

© Rierino Software Inc. 2025. All rights reserved.

On this page
  • Open the App Screen
  • Create an App
  • Create a Source
  • Create a Data Schema
  • Create the UI
  • Test your UI
  1. Examples
  2. Exercise: To-do List

To-do List UI

Once your new runner is accessible through your gateway, you can create a dedicated app and UI for it.

PreviousTo-do List GatewayNextTo-do List Query

Last updated 3 months ago

Open the App Screen

Open the screen from your app. Unless you've modified your implementation, this screen is located at https://[YOUR_ADMIN_UI_DOMAIN]/app/design/common/app.

Create an App

Next, you will create a new App, which will have its own home page and route in admin UI.

Click on "CREATE NEW" button on top of the menu lister and enter "example" to ID field. This ID will be used in the app URL path.

Enter the following details:

  • DEFINITION

    • App Name: Example

    • App Status: ACTIVE

    • Description (optional): Application dedicated to list of examples.

    • Home Image: /image/configuration.png

    • Home Title: Example Navigator

    • Home Description: Everything you need to manage your example services.

  • MENUS

    • Label: Todo

    • Icon: rules

    • Path: /common/todo

Save your new App and browse to https://[YOUR_ADMIN_UI_DOMAIN]/app/example. You should now see your new App home page as follows:

Create a Source

Click on "CREATE NEW" button on top of the menu lister of Source screen and provide the unique identifier "todo" and enter the following details as the source information:

  • Source Name: Todo

  • Source Status: ACTIVE

  • Urls:

    • Action: default

    • URL: request/todo_crud/todo

These settings ensure that our UI requests for todo are directed to /api/request/todo_crud/todo endpoint we've created in previous sections.

Why do you need the Source?

Rierino core platform supports hyper-distributed applications, where each API endpoint could be maintained independent of the rest and serviced over a completely different server or even cluster. Having source mappings allows us to isolate such distribution from end users. It also simplifies the process of changing endpoints centrally.

Even when a Source does not require custom URLs (e.g. uses standard request/crud/[ui] endpoint), it is still mandatory to create a Source, as otherwise the platform will consider CRUD endpoint disabled for access.

Create a Data Schema

Click on "CREATE NEW" button on top of the menu lister of Schema screen and provide the unique identifier "todo" and enter the following details as the schema information:

{
	"title": "Todo",
	"description": "A todo definition",
	"type": "object",
	"properties": {
		"id": {
			"title": "Todo ID",
			"description": "The unique identifier for a todo",
			"type": "string",
			"readOnly": true
		},
		"data": {
			"title": "Todo Information",
			"description": "Properties of the todo",
			"type": "object",
			"properties": {
				"name": {
					"title": "Todo Name",
					"description": "Name of the todo",
					"type": "string"
				},
				"project": {
					"title": "Project",
					"description": "Related project for the todo",
					"type": "string"
				}
			}
		}
	}
}

After editing the definition, save your schema. Title and description information entered in this screen populate labels in UI screens.

Our data schema definitions follow JSON Schema standards, providing ability to use them in other platforms as well.

Create the UI

Click on "CREATE NEW" button on top of the menu lister of UI screen and provide the unique identifier "todo" and enter the following details as the UI information:

  • DEFINITION

    • Name: Todo

    • Status: ACTIVE

    • Description (optional): UI design for todo list management

    • ID Field: id

    • Name Field: data.name

  • LISTER

    • Lister: Grouped

    • Lister Title: Todo List

    • Group By: data.project

Switch to the "TABS" tab and follow below steps:

  1. Click on "Add Tab" to create a new tab.

  2. Hover on the new tab label, click on edit icon and set tab label as "DEFINITION" on displayed dialog.

  3. Click on "Add Grid" to create a new grid.

  4. Click on "Add" to add a new field inside the grid.

  5. Hover on the new field, click on edit icon and set its path to "data.name" and select "Text" widget for it on displayed dialog.

  6. Click on "Add" to add another field inside the grid.

  7. Hover on the new field, click on edit icon and set its path to "data.project" and select "Text" widget for it on displayed dialog.

Your screen should look like the following:

Save your UI design.

Why is UI separate from Schema?

Keeping UI and Schema definitions separate allows us to create multiple visualizations for the same data, which can be required for different organizational teams (e.g. one having access to only small part of data). It also makes sure that even our administration dashboard can be used as headless, without relying on our internal UI configurations.

Test your UI

For testing your new UI, you can simply go back to your Example app (e.g. https://[YOUR_ADMIN_UI_DOMAIN]/app/example) and click on the Todo card. This should display the todo entry we've created in previous steps and allow you to add, edit and remove new todo items, grouped by projects.

Click on the Source icon on navigation bar to switch to the screen on your app. Unless you've modified your implementation, this screen is located at https://[YOUR_ADMIN_UI_DOMAIN]/app/design/common/source.

Click on the Schema icon on navigation bar to switch to the screen on your app. Unless you've modified your implementation, this screen is located at https://[YOUR_ADMIN_UI_DOMAIN]/app/design/common/schema.

Click on the UI icon on navigation bar to switch to the screen on your app. Unless you've modified your implementation, this screen is located at https://[YOUR_ADMIN_UI_DOMAIN]/app/design/common/ui.

Source
Design
Schema
Design
UI
Design
App
Design
App Screen
App Definition Screen
Example App Home Page
Source Screen
Source Definition Screen
Schema Screen
Schema Definition Screen
UI Definition Screen
UI Tabs Screen
Todo Screen