Node-red Dashboard limitations

Hi,

I'm new to Node-red and I'm coming from a c++ background with some experience building angular 10+ front end applications and connecting them using MQTT, sockets, ROS etc..

I love the idea of fusing Node-red as the glue to pulling together different systems that need to communicate with different protocols. I'll continue to write our core back end services in c++ but I need to speed up how we joining all the different subsystems we use to build a full system.

Where I am really struggling to get my head around is what is the best UI to use to present to a user as we have a number of difference requirements for different projects?

These applications that are being developed will be commercial offerings that feature vision hardware (cameras and laser scanners for scanning and inspection of components on a production line). The interface does not have to be a browser

So here are some of the questions I have

  1. Does Node-red dashboard only allow you to create a single page web application?

  2. I need to create a widget of some sort that can visualise 3D laser scan data as it scans. I was thinking of using threejs for the drawing but I could use anything really based around opengl. Can I create my own custom widget to include the threejs library and add this to the dashboard pallete to be used again and again in projects or would this have to be done in UI builder?

  3. Can I mix and match dashboard widgets with UI builder on the same web page?

  4. What are my options if I want to create more of a desktop application written in c#

  5. For forms and persistence of data if I use UI builder is there an an easy way to display and store the data in forms.

  6. Can you create wizards with dashboard or would this have to be done in UI builder

  7. Seeing as I have used angular before can I create my own GUI with visual studio code as before and then use UI builder to connect the two 'applications'? Only problem I have with this is the length of time it takes to create the user interface - it's slow and cumbersome..... but very flexible

Hope these questions make sense

Thanks in advance

JT

Yes.

Several people have now created custom Dashboard nodes so yes, it is possible. Easier using uibuilder though :wink:

Hmm, yes-ish. I don't personally recommend it though. You would need to use iframes.

I think you may be asking on the wrong forum. You need a .NET forum for that.

However, since Node-RED is a Node.js app, it would (theoretically, I've not tried myself) be possible to include c# or at least C++ certainly modules since Node.js supports that directly.

Yes, many! uibuilder doesn't force you to use any front-end libraries, you can choose anything or roll your own. For example, if your experience is with Angular, you can happily build an Angular app with uibuilder helping. Or REACT, VueJS, ....

Not aware of a way but there are different types and approaches of wizards so you might need to expand a little on that question.

You absolutely can. This is what I do if creating anything other than the simplest of web pages. Except, like you, I find angular arcane, overly-complex and cumbersome, so I stopped using it a long time ago. Personally, I find VueJS to be a good balance for simple to medium complexity SPA's. But something like Svelte might also be a good choice given its speed, flexibility and adherence to modern web standards (web components).

Really, any of the front-end frameworks should work quite well but VueJS and Svelte are my 2 favourites for speed, flexibility and lack of complexity. REACT or Angular if that's what you know are still OK, just more complex.


As you know, uibuilder doesn't give you the hand-holding that Dashboard does but on the other hand, doesn't get in the way if you go beyond the basics. Like Node-RED itself, it is designed to help and support but give you the best flexibility. However, that does mean that you need to do more of the front-end coding yourself. However, because you can use standard design, coding and build tools with uibuilder, you should be able to make use of other tooling to help.

The vNext branch shows you what will be coming shortly. In particular since you can now use an independent instance of ExpressJS from Node-RED, you can really customise to your needs. I'll be continuing to build on vNext throughout the year to make uibuilder even more flexible and to make it much easier to work with build steps, create custom API's and more.

Many thanks for taking the time to answer all the questions. Very helpful. I'll dig into UI builder more. It looks like it will offer more flexibility which I believe I will need. I'll look into Svelte and vuejs to see if they are easier to work with then Angular

Another alternative, if you don't need a browser i/f, is to use node-red for the back end and use MQTT (for example) to communicate with a non-browser front end in whatever language you like.

Yes that's definitely an option too. Would be interested to hear what frameworks developers create their front ends in? vuejs? .net? QT creator? angular? etc... Really looking for something that is fast to develop and where I can reuse components to speed up development where I can.

I don't think that .net can be used to develop anything other than a "thick" client application can it?. My experience with .net development (I'm going by our devs not direct experience) is that it isn't at all easy to do well unless you are pretty expert.

Corporately, we require all new bespoke developments these days to use REACT for the front-end and .NET for the back-end. That mainly reflects the ease of getting suitable developers though more than anything else.

Personally, I'd always use VueJS for anything except the very simplest of UI's. But once Svelte matures a little, it is quite likely that I'll switch. Being only a single, part-time dev (my professional development days being long gone), I only really have time to focus on 1 framework and even then I only scratch the surface. I don't need to be messing with developing thick client apps certainly but if I did, I'd probably use Electron so that I could leverage my Node.js and web knowledge.

As I say, I don't use Angular or REACT because they are just too complex for the UI's that I'll ever want to create. If you have a big app to develop and a team to work with, they are fine but otherwise, I think not.

1 Like