node-red-contrib-uibuilder
Easily create data-driven web UI's for Node-RED. Single- & Multi-page. Multiple UI's. Work with existing web development workflows or mix and match with no-code/low-code features.
https://github.com/totallyinformation/node-red-contrib-uibuilder
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.9%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Easily create data-driven web UI's for Node-RED. Single- & Multi-page. Multiple UI's. Work with existing web development workflows or mix and match with no-code/low-code features.
Basic Info
- Host: GitHub
- Owner: TotallyInformation
- License: apache-2.0
- Language: JavaScript
- Default Branch: main
- Homepage: https://totallyinformation.github.io/node-red-contrib-uibuilder/#/
- Size: 13.5 MB
Statistics
- Stars: 487
- Watchers: 25
- Forks: 92
- Open Issues: 6
- Releases: 0
Topics
Metadata Files
README.md
UIBUILDER FOR Node-RED
UIBUILDER for Node-RED allows the easy creation of data-driven front-end web applications.
It includes many helper features that can reduce or eliminate the need to write code for building data-driven web applications and user interfaces integrated with Node-RED.
Installation
UIBUILDER is best installed using Node-RED's Palette Manager.
Manual installs and other versions
To install manually, from a command line on your Node-RED server: ```bash cd ~/.node-red npm install node-red-contrib-uibuilder ``` To install old versions, provide the major version number: ```bash cd ~/.node-red npm install node-red-contrib-uibuilder@v5 ``` To install development branches, please install from [GitHub](https://github.com/TotallyInformation/node-red-contrib-uibuilder). Branchnames are usually future version numbers, check GitHub for available branches: ```bash cd ~/.node-red npm install totallyinformation/node-red-contrib-uibuilder#v7.1.0 ``` You will need to restart Node-RED if installing manually.Compatibility of current release
- Servers:
- Node-RED: v4+
- Node.js: v18+ LTS (matches Node-RED v4+ requirements)
- Platforms: Linux, Windows, MacOS, Raspberry Pi, Docker, FlowFuse, etc.
- Browsers:
- CSS - 0.12% or above of global usage but not Internet Explorer (ref.). The uncompiled CSS should work in all current mainstream browsers. The compiled CSS (
uib-brand.min.css) should work in browsers back to early 2019, possibly before. Enforced by LightningCSS. - JavaScript - ES6+ so should work in all current mainstream browsers. The compiled JS (
uibuilder.min.{iife|esm}.js) should work in browsers back to early 2019, possibly before. Enforced by ESBuild. Script (IIFE) and Module (ESM) versions are provided.
- CSS - 0.12% or above of global usage but not Internet Explorer (ref.). The uncompiled CSS should work in all current mainstream browsers. The compiled CSS (
Updates
The current CHANGELOG contains all of the changes and requirement details for each version.
Older changes can be found in the previous change documents: CHANGELOG-V5, CHANGELOG-V5, CHANGELOG-V3/V4, CHANGELOG-v2, and CHANGELOG-v2.
Getting started
Once installed, The following is a typical simple flow to get going.
- Add a
uibuildernode. Open its settings and give it a "URL" which is used as the identifying name. Close the settings and click on the Deploy button. - Re-open the
uibuildernode's settings and click the "Open" button to see the resulting web page.
You are now ready to edit the front-end html/javascript/css if you wish and to add logic in Node-RED to provide inputs and handle outputs. You can also use UIBUILDER's no-code features to create your UI as well or instead.
Please see the First-timers walkthrough in the documentation and the Introduction Video for more help to get started. Also try out the built-in example flows.
Examples
Within Node-RED, use the hamburger menu. Click Import. Click Examples. Select the node-red-contrib-uibuilder folder and choose an example.
The templates feature in UIBUILDER provides working front-end code of various configurations.
Other examples can be found on the Node-RED Flows site and the UIBUILDER WIKI. Also see the UIBUILDER tag on the Node-RED Forum.
Documentation and other links
Please refer to the Documentation web site. This can also be accessed from within UIBUILDER nodes even without an Internet connection.
There is a library of "official" video tutorials on YouTube. Other folk have also produced UIBUILDER-related content.
Questions, issues and suggestions
The best place to ask questions or discuss possible enhancements is the Node-RED Forum.
Alternatively, use the GitHub issues log for raising issues or contributing suggestions and enhancements and the GitHub Discussions page for general questions, suggestions, etc.
Other links
-
- ❓ Ideas, questions & general help - Ask your question on the Node-RED forum using the node-red-contrib-uibuilder tag.
- 📁 Documentation - Go to the latest documentation.
- 🧑💻 Flows - Example flows, nodes and collections related to UIBUILDER.
- ℹ️ WIKI - More documentation and examples.
- 📂 Example Svelte External Template - In case you want to build your own svelte app.
- 📂 Example Simple External Template - In case you want to build your own external template.
- 📊 uPlot UIBUILDER extension - Useful charts but also demonstrates how to build your own extension.
🧪 Web Components Library - A growing library of useful HTML Web Components. Useable with or without Node-RED & UIBUILDER. Some having specific enhancements for Node-RED but will still work well stand-alone. These now have their own dedicated documentation, demo and test website at https://wc.totallyinformation.net. Please check them out there.
🔨 ui library module used by UIBUILDER - Can be used stand-alone for turning UI standard config JSON into HTML.
🕜 node-red-contrib-moment - Nodes to make use of the MomentJS date/time handling library in Node-RED.
🧙 Alternate Node-RED installer - Some scripts and example configs for running Node-RED locally instead of globally and having the userDir as a child folder so that everything can be easily backed up and restored from a single project folder.
🧪 Testbed for Node-RED custom nodes - Embodying more up-to-date thinking than the test nodes, a blank playground.
🧪 Test Nodes for Node-RED - Some test nodes for Node-RED that help you understand how everything works.
🚤 HotNipi Gauge Web Component - A really nice looking gauge component. Works with Node-RED, UIBUILDER, or stand-alone.
🧪 Array Grouper - Stand-alone function to reshape an array of objects.
Purpose
The purpose of UIBUILDER is to:
- Support easy methods for creating and delivering data-driven web apps and web pages (also known as web User-Interfaces).
- Be a conduit between Node-RED and front-end (browser) UI web apps.
- Be UI framework agnostic. No framework is needed to use UIBUILDER but it will work with them where desired. UIBUILDER aims to reduce the requirement for a framework by making it easier to work with vanilla HTML/CSS.
- Provide interface/data standards for exchanging data and controls between Node-RED and the web pages.
- Enable the creation and management of multiple web apps from a single Node-RED instance.
- Reduce the amount of front-end code (HTML/JavaScript) needed to create and manage a web app.
- Reduce the knowledge required for creating reliable, accessible web apps by providing low-code and no-code features. But still ensure that any learning is applicable to general web development.
- Make it easy to install and serve front-end libraries to support the development of more complex web apps.
Features
The core features of UIBUILDER:
- As far as possible, uses only vanilla, native HTML, CSS and JavaScript. Other than the Socket.IO client for communications (which is baked into the front-end library), no other front-end libraries are needed. UIBUILDER stays as close as possible to native HTML to avoid future compatibility issues. However, it does aim to make interaction with native HTML easier.
- Nodes to enable zero-code translation of input data to usable and accessible web elements.
- Capability for low-code, configuration-driven, data-driven UI's.
- Creating a capability for describing a UI and translating to actual code without having to write code.
- 2-way communications channel between the Node-RED server (back-end) and front-end UI.
- A Node-RED node to act as the focus for communications with other nodes for additional ease of use.
- Front-end library to: do the complex parts of the communications in the client browser; make manipulation of the UI easier and more consistent; make it easy to get data back to Node-RED as needed (both automatically and manually).
- Easy to use templates and examples for front-end code to enable people to get a quick start on creating web apps.
- Management and serving of npm packages that provide front-end libraries consumable easily by front-end code.
- Editing of front-end code from the Node-RED Editor (designed for small changes, use web development tools generally).
- Various server middleware and API options for additional custom capabilities.
- A caching capability allowing newly joining clients to receive the latest data and configurations. Joining/leaving clients create notifications in Node-RED.
- A front-end lightweight router for creating Single-Page Apps.
- Have as many
uibuildernode instances as you like. Each instance allows the creation of many web pages and sub-folders for easy management. - Each
uibuildernode instance provides a private 2-way communications channel between the Node-RED server (back-end) and browser (front-end) UI code. - Supports the use of standard web development workflows.
- Allows the creation of a dedicated web service to facilitate independent security.
- Allows any custom Node-RED node to communicate easily with a uibuilder enabled client via the Node-RED events system.
- Provides server-side hydration of no-/low-code definitions into full HTML & easy saving to uibuilder folders.
- Make it easy to develop event-driven UI's.
No-code UI's
UIBUILDER continues to expand its no-code capabilities. THe `uib-element`, `uib-tag`, and `uib-update` nodes offer no-code methods for creating and updating data-driven web UI's. `uib-element` takes in simple data and outputs configuration data. This can then be sent to the front-end via the `uibuilder` node. Alternatively, it can be saved and the result used in an initial load. Several simple options such as tables and lists are available in UIBUILDER v6.1, additional elements and structures will be made available in future versions. The UIBUILDER front-end client takes the configuration information and dynamically builds HTML elements and inserts them to the web page (or removes/updates as needed). While this is not the most efficient processing approach (since updates are mostly replacing the whole element which could be quite large for things like big tables), it is very efficient from an authoring perspective. So the `uib-update` node provides a more targetted approach to updating and changing specific attributes and "slot" content for elements. The `uib-tag` node then lets you create ANY single HTML element and so covers all the many things that `uib-element` might not (yet) cover. This even works with web components which are vanilla HTML/JavaScript native enhancements to HTML. It is important to note that no front-end, 3rd-party frameworks such as VueJS or REACT are needed for this approach! Everything uses vanilla HTML, JavaScript and CSS under the skin and so is **compatible with current and future web standards**.Low-code UI's
The data that `uib-element` outputs is a format that you can use in your own flows in Node-RED and even in front-end code if desired. It describes a set of HTML UI elements but does not need you to actually write HTML code. The configuration schema is very flexible and even allows you to load configuration data, HTML, scripts, and new ECMA Modules/Components from external files. The schema and the UI creator functions built into the front-end client are specifically designed to work with current and future HTML standards in order to avoid the kinds of issues commonly encountered when using 3rd-party front-end frameworks (e.g. major version changes forcing rewrites of all of your tooling). So ES Modules, ECMA Components, and future ECMA versions should all be supported. The `ui.js` library is now also available for anyone to use in their own projects and works fully stand-alone without UIBUILDER. It is also baked into the `uib-html` node which turns low-code configurations into HTML from within Node-RED.Future direction
UIBUILDER will continue to be independent of front-end frameworks though it will also continue to be as compatible as possible so that any desired framework can be used with it. * It will continue to gain more zero-code pre-built elements. * It will gain improved control over the instance root folder structure and the ability to execute `npm run` scripts defined in the `package.json`. * More videos! ### Longer term focus There remains a desire to build a page-builder feature so that people with no coding skills can build great data-driven web apps. * The documentation quality will continue to improve. * The number of 3rd-party module dependencies will be reduced. Starting with the eventual removal of `fs-extra` in favour of the native promisified fs library. Followed most likely by `arun`. * Once Node.js v18 or 20 is the base, the code is likely to be refactored into multiple sub-packages in a mono-repo.Feature details and benefits
* Designed as an alternative to the Node-RED official Dashboard. Without the overheads and restrictions. * Control everything from the Node-RED admin ui. Edit your front-end resource files, manage front-end packages. No need to access the servers command line. * Manage startup templates. Internal templates for vanilla HTML, Svelte, VueJS (v2 & v3), and VueJS/bootstrap-vue are provided. Load templates from other repositories via _degit_. Makes it easy to share templates that provide a whole app or just deal with boilerplate. * Have as many custom user interfaces as you want. Just 1 node is needed for each entry point. Use link nodes to send data from other parts of your flows. An entry point can be contain multiple web pages. * Has a control interface separate to the message interface. Know when a browser tab connects or disconnects, send cached data, and more. * Provide a stable _client id_ that identifies a specific browser profile until it is restarted. A _tabId_ is provided that identifies a specific browser tab on a client device. * Provide information to Node-RED about the client that is sending a msg so that security and other processing can identify the client, the user, and so on. * Can be a lot lighter in weight and more mobile friendly than the Node-RED official Dashboard. * Use **any** front-end framework you like. Simply install via the built-in library manager. * Use without any front-end framework if you prefer. Keep it light and simple. Try this out with the "Blank" template and the `uib-element` node. * The included front-end libraries (`uibuilder.iife.js`, `uibuilder.esm.js`) provide connectivity to Node-RED and msg event handling along with some helper utility functions. * Write your own HTML, CSS and JavaScript to define the perfect front-end user interface for your needs. Or define it using a JSON config description. * Edit your custom front-end code from within the Node-RED Editor. Auto-reload your clients on changes to the code. Great for rapid development. *Note* that this is designed for quick edits, it is recommended to use your normal web development toolchain for larger edits. * Needs almost no boilerplate in your front-end code in order to work. * Optional index web page listing of available files. * Two detailed admin info web pages are included to help authors understand where everything is and what is available. * Uses Node-RED's own ExpressJS webservers by default. Switch to a custom ExpressJS server if desired. When using a custom server, pages can also include EJB server-side templating. * Has middleware for ExpressJS (for web services) and Socket.IO (for communications, both at initial connection and per-message) so that you can add your own custom features including security. * Can create custom API's for each UIBUILDER instance. * Use the `ui.js` library in your own projects!Contributing
If you would like to contribute to this node, you can contact Totally Information via GitHub or raise a request in the GitHub issues log.
Pull Requests both for code and documentation are welcomed and the WIKI is open to new entries and corrections (but please let me know if you make a change).
Please refer to the contributing guidelines for more information.
You can also support the development of UIBUILDER by sponsoring the development.
GitHub Sponsorship, PayPal Sponsorship
Sponsors
Developers/Contributors
- Julian Knight - the designer and main author.
- Colin Law - many thanks for testing, corrections and pull requests.
- Steve Rickus - many thanks for testing, corrections, contributed code and design ideas.
- Ellie Lee - many thanks for the PR fixing duplicate msgs.
- Thomas Wagner - thanks for the steer and PR on using projects folder if active.
- Arlena Derksen - thanks for suggestions, bug checks and Issue #59/PR #60.
- cflurin - thanks for the cache example.
- Scott Page - IndySoft - thanks for Issue #73/PR #74.
- Stephen McLaughlin - Steve-Mcl - thanks for the fix for Issue #71 and for the enhancement idea Issue #102.
- Sergio Rius - thanks for reporting Issue #121 and providing PR #122 as a fix.
- Thorsten von Eicken - thanks for providing PR #131 to improve CORS handling for Socket.IO.
- meeki007 - thanks for supplying various documentation improvements and code fixes.
- Scott - talltechdude - thanks for supplying PR #170.
- Calum Knott - Thanks for the tidied up node-blue logo.
- Harold Peters Inskipp - Thanks for the logging examples.
- dczysz - Thanks for reporting Issue #186 and helping work through the complex async bug.
- Colin J (mudwalkercj) - Thanks for helping with the documentation.
- Marcus Davies - Many thanks for the encouragement and for the 3d logo.
- Fabio Marzocca (fmarzocca)) - Many thanks for help with the design and testing of the uibrouter front-end router library.
- MysteryCode (mutec)) - Thanks for the PR to fix up the standardised use of fast-glob for returning lists of files.
Many other people have contributed ideas and suggestions, thanks to everyone who does, they are most welcome.
Please also check out my blogs:
- Totally Information's Web Log, "Ramblings by Julian Knight on all things Digital, Technology and Life". This is my new blog. It will have articles on Node-RED, web development, hardware reviews and more.
- Much Ado About IT, it has information about all sorts of topics, mainly IT related, including Node-RED. This is no longer being updated but it will be retained for reference.
Owner
- Name: Julian Knight
- Login: TotallyInformation
- Kind: user
- Location: Sheffield, UK
- Company: Totally Information
- Website: http://it.knightnet.org.uk
- Twitter: knightnet
- Repositories: 83
- Profile: https://github.com/TotallyInformation
IT architect and information management specialist. Designing and implementing information systems architectures & IT/Cyber Security.
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: node-red-contrib-uibuilder
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Julian
family-names: Knight
affiliation: Totally Information
- name: Totally Information
city: Sheffield
country: GB
region: South Yorkshire
alias: TotallyInformation
identifiers:
- type: url
value: >-
https://github.com/TotallyInformation/node-red-contrib-uibuilder/releases/latest
description: Latest release of UIBUILDER for Node-RED
repository-code: >-
https://github.com/TotallyInformation/node-red-contrib-uibuilder/
url: >-
https://totallyinformation.github.io/node-red-contrib-uibuilder
abstract: >-
UIBUILDER for Node-RED allows the easy creation of
data-driven front-end web applications.
It includes many helper features that can reduce or
eliminate the need to write code for building data-driven
web applications and user interfaces integrated with
Node-RED.
keywords:
- node-red
- ui
- gui
- dashboard
- SPA
- web
- website
- data-driven
- webpage
- web-app
- ui-builder
license: Apache-2.0
GitHub Events
Total
- Create event: 104
- Release event: 5
- Issues event: 11
- Watch event: 28
- Delete event: 106
- Issue comment event: 177
- Push event: 72
- Gollum event: 2
- Pull request review event: 3
- Pull request review comment event: 3
- Pull request event: 207
- Fork event: 7
Last Year
- Create event: 104
- Release event: 5
- Issues event: 11
- Watch event: 28
- Delete event: 106
- Issue comment event: 177
- Push event: 72
- Gollum event: 2
- Pull request review event: 3
- Pull request review comment event: 3
- Pull request event: 207
- Fork event: 7
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Julian Knight | 1****n | 2,282 |
| dependabot[bot] | 4****] | 32 |
| colinl | c****n@c****k | 6 |
| meeki007 | 5****7 | 1 |
| StepSecurity Bot | b****t@s****o | 1 |
| Sergio Rius | S****s | 1 |
| Inskipp | 7****p | 1 |
| Henry Miskin | h****n@g****m | 1 |
| Ellie Lee | e****8@g****m | 1 |
| Arlena Derksen | a****a@h****u | 1 |
| Thorsten von Eicken | t****e@c****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 86
- Total pull requests: 385
- Average time to close issues: about 1 month
- Average time to close pull requests: 16 days
- Total issue authors: 49
- Total pull request authors: 13
- Average comments per issue: 3.53
- Average comments per pull request: 1.09
- Merged pull requests: 83
- Bot issues: 0
- Bot pull requests: 346
Past Year
- Issues: 6
- Pull requests: 179
- Average time to close issues: about 1 month
- Average time to close pull requests: 18 days
- Issue authors: 5
- Pull request authors: 4
- Average comments per issue: 3.33
- Average comments per pull request: 1.27
- Merged pull requests: 42
- Bot issues: 0
- Bot pull requests: 166
Top Authors
Issue Authors
- TotallyInformation (23)
- tve (5)
- alastaira (4)
- unborn-andy (3)
- meeki007 (3)
- dependabot[bot] (2)
- dczysz (2)
- Steve-Mcl (2)
- kansaandre (2)
- amizer12 (2)
- calumk (1)
- leoclausmeyer (1)
- nandlab (1)
- simonbuehler (1)
- PLCMercenary (1)
Pull Request Authors
- dependabot[bot] (575)
- TotallyInformation (25)
- meeki007 (3)
- chmac (2)
- snyk-bot (2)
- step-security-bot (2)
- Lackmann1994 (1)
- unborn-andy (1)
- HaroldPetersInskipp (1)
- SergioRius (1)
- talltechdude (1)
- tve (1)
- mutec (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 5
-
Total downloads:
- npm 6,857 last-month
- Total docker downloads: 2,549
-
Total dependent packages: 5
(may contain duplicates) -
Total dependent repositories: 19
(may contain duplicates) - Total versions: 224
- Total maintainers: 2
npmjs.org: node-red-contrib-uibuilder
Easily create data-driven web UI's for Node-RED. Single- & Multi-page. Multiple UI's. Work with existing web development workflows or mix and match with no-code/low-code features.
- Homepage: https://totallyinformation.github.io/node-red-contrib-uibuilder/#/
- License: Apache-2.0
-
Latest release: 7.4.3
published 5 months ago
Rankings
Maintainers (1)
proxy.golang.org: github.com/totallyinformation/node-red-contrib-uibuilder
- Documentation: https://pkg.go.dev/github.com/totallyinformation/node-red-contrib-uibuilder#section-documentation
- License: apache-2.0
-
Latest release: v7.4.3+incompatible
published 5 months ago
Rankings
proxy.golang.org: github.com/TotallyInformation/node-red-contrib-uibuilder
- Documentation: https://pkg.go.dev/github.com/TotallyInformation/node-red-contrib-uibuilder#section-documentation
- License: apache-2.0
-
Latest release: v7.4.3+incompatible
published 5 months ago
Rankings
npmjs.org: flowstack-uibuilder
Easily create data-driven web UI's for Node-RED using any (or no) front-end library.
- Homepage: https://totallyinformation.github.io/node-red-contrib-uibuilder/#/
- License: Apache-2.0
- Status: unpublished
-
Latest release: 1.0.12
published 11 months ago
Rankings
Maintainers (1)
npmjs.org: flowstack-uibuilder2
Easily create data-driven web UI's for Node-RED using any (or no) front-end library.
- Homepage: https://totallyinformation.github.io/node-red-contrib-uibuilder/#/
- License: Apache-2.0
- Status: unpublished
-
Latest release: 1.0.14
published 11 months ago

