✨ Dynaboard is joining Figma!

Composition with low-code — multi-page apps and complex workflows

Multi-page apps & complex workflows

Written by

author

Remy Guercio

Published on

April 21, 2023


As users have broadened the scope of apps built in Dynaboard, they’ve faced two major problems: implementing multi-page navigation & building complex multi-step workflows. While it has been possible to implement partial solutions, we’re making things much simpler with two new components:

  • A Navigation Bar with built-in current user, authorization, and page awareness

  • Dialogs & modals that are completely customizable and programmable

Tackling complexity with composable UI

We built Dynaboard from the ground up with composition as a first-class feature. UI components in the Dynaboard editor come in three main types:

  • Base Components: make up the base atoms (inputs, text, buttons, images, etc…) of UIs in Dynaboard. They can be customized, but they cannot contain other components.

  • Custom Components: are built visually within the Dynaboard editor. Each custom component contains its own state, data fetching logic, and custom behaviors.

  • Higher Order Components: exist as wrappers to extend custom components with new functionality and display one, or more than one, at a time.

The composition of base components into custom components, and custom components into higher-order components, enables quick development of more complex apps.

For example, the Iterator — our original higher-order component — behaves as a visual “for loop,” taking an array of JSON objects and a custom component as inputs. Each JSON object is then passed into a custom component where it provides a list of properties, which can be almost anything including: strings, objects, and even functions!

An example of an Iterator rendering a custom component for each story on the front page of Hacker News.
An example of an Iterator rendering a custom component for each story on the front page of Hacker News.

Depending on how the Iterator is used, it can become: a list, a table, a group of cards, a tag cloud, or anything you need it to be to display an array of data.

While the Iterator and custom components are able to handle a many complex UI / UX tasks, we knew things could be easier for larger applications.

Navigation Bar — Going multi-page and multi-purpose with your apps

The Navigation Bar supports buttons, tabs, and standard link types out of the box with the ability to create your own navigation items as well.
The Navigation Bar supports buttons, tabs, and standard link types out of the box with the ability to create your own navigation items as well.

The first of our new higher-order components is the Navigation Bar, and under the hood, it behaves more or less like a variation on the Iterator. However, we’ve given it more information about the current page, current user, and applicable authentication rules, so it can take that information — along with the list of pages — to appropriately render each individual navigation item custom component. When you use a navigation bar in your project you can:

  • Choose from pre-built button, tab, or link types for navigation items

  • Support uncommon use cases with custom components

  • Ensure consistent styling with built-in theme support

  • Build complex multi-page UIs by combining navigation bars with headers

Dialogs — Supporting complex workflows with custom components

Built-in dialog types include: confirmation, deletion, edit, and alert. They can also be built from scratch using custom components.
Built-in dialog types include: confirmation, deletion, edit, and alert. They can also be built from scratch using custom components.

Like Navigation Bars and Iterators, Dialogs take a component and pass it a set of properties. However, dialogs only render a single custom component comprising any defined inputs, text, or functionality.

Just like in popular libraries for your favorite front-end framework, in Dynaboard, functions from your page can be passed into the dialog as a callback. Dialogs are opened and closed using functions attached to the built-in Browser resource, and they can also be inserted from the command bar where you're able to then:

  • Choose from 4 dialog presets including: alert, confirmation, deletion & edit

  • Build your own dialog with custom components and the blank dialog variant

  • Add callbacks to update a DB, make an API call, or modify UI on dialog close

Build your next app in Dynaboard

With higher-order components like the Navigation Bar and Dialog, we’re bringing the full power of a low-code IDE to developers to accelerate building large and complex applications, not just simple ones.

Have a complex app internal tool or customer facing app in mind that you’d like to build? Get started — and maybe even finish — today! Sign up to try out Dynaboard for free, and check out our documentation site to get started with recipes, templates, and references.

Build web apps fast with Dynaboard — the low-code web app builder made for developers.