Well, this is probably possible in Dashboard but I don't see that it would give you any benefits and would almost certainly be harder because you will most likely be fighting the underlying AngularJS framework because you need to dynamically create the interface anyway.
This is likely an ideal use-case for UIBUILDER though.
The slight downside of using UIBUILDER is that, if I haven't already provided a no-code element that matches one of your needs, you will need to output your own. Thankfully, this isn't too hard but involves a little head-scratching until you've grasped the low-code option JSON format. (Hint: the JSON format for low-code actually mirrors how you would manually create the HTML structure).
Actually, when using either Dashboard or UIBUILDER, you would probably do it in Node-RED. With UIBUILDER though, you can certainly do it either way, whichever you find more comfortable.
There are certainly plenty of online page builders. However, as you are building a data-driven UI, I would recommend starting with the basics. You can make it pretty later. So you might prefer to use something like Figma that will let you draw your layout ideas on-screen as a wireframe without worrying about the underlying HTML. That will let you get a basic layout and help you understand what element types you need. Then you can always come back to the forum for some help on turning them into HTML.
If you do decide to use UIBUILDER, remember that the no-code uib-element
outputs the low-code JSON data. So you can get that node to output something similar to what you want and examine the data format to make whatever changes you like. Using the low-code JSON data, you can create litterally ANY HTML UI driven by Node-RED data.
Also remember that you can turn data into HTML in Node-RED itself and save to the appropriate uibuilder folder. This lets you create a basic layout and save it so that it is efficiently loaded. I'm not sure exactly how dynamic your layout will need to be but you will certainly want to separate the fixed and dynamic layout parts. The fixed parts can be written directly as HTML or generated from Node-RED and saved to a fixed file and the dynamic parts either completely re-generated on update OR, amended with new data depending on how much needs to change each time, how big things are, etc.
UIBUILDER provides a cache node as well so that you can have the latest data always available ready for a new or reloaded connection.
Also, the latest version has the front end router available which lets you break down a single-page app style web UI into logical parts should you want that.