-
Notifications
You must be signed in to change notification settings - Fork 2.8k
POC: Dynamic Dashboards / Dashboard apps #19575
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
I love this concept. Hopefully it transitions from a POC to a real thing 🤞 |
ContextI wanted to add some context to this PR so that people who have not been involved in the discussion can get up to speed about our initial ideas/plans for this. BackgroundAs the author of The Dashboard, which provides a simple dashboard targeted for backoffice users, I wanted to expand the feature set to allow other package developers to build A very big problem with this approach would be that each and every package would have to ship another NuGet-package for the widget with a dependency on their own package and "The Dashboard" to provide the widget. With this in mind, I talked to Umbraco HQ and @madsrasmussen about the idea of putting the core foundation for these "widget-based dashboards" into the core, and this PR is a first draft of how this could look. In this PR, a "widget" is called The "roadmap"@madsrasmussen and I talked about this during the MVP Summit at CodeGarden 2025. The initial goal, and the most important part is that the foundation/framework for this is included in the core. Most likely, the default behavior for a vanilla Umbraco site will be to not show anything related to these new But. a package like With the foundation for Some more thoughts that we've discussed:
My feedback on initial PRI've been playing around with the source code and I have a couple of things that I think needs to be discussed. I appreciate the idea of keeping the scope as small as possible so some of the things that I raise here might not be included in "v1" but I think it would make sense to ensure that we have a roadmap. SizesI like the idea and simplicity of having fixed sizes, but when I was looking to implement some of the "apps" from "The Dashboard" I was left with limitations that I could not get around. The proposed approach with small, medium, large would look something like this: ![]() "The Dashboard" package has several boxes that take up 1 column but more rows - I think we're missing something here. ![]() I think we need to find a way to support these "higher" apps that might not need a lot of width. So maybe if a User specific and defaultsThe current implementation (which I know is just a POC) just lists all registered dashboard apps that matches the conditions. In the "real world", it would be ideal if the user could choose the apps to show and save these settings. maybe using the This brings up another issue about defaults. Let's say that we're running a website for a customer and they add a new User, when this user logs in for the first time - it would be ideal if there was a way for me as the developer to provide a "default" dashboard configuration so that we're not just showing an empty canvas for them. It could be as simple as showing all registered dashboard apps until user makes any changes, but ideally it would be nice if there was a way to configure defaults for this, even better if this was extendable so that implementors could create defaults based on e.g. the user group. Maybe a Default "look and feel"I'm conflicted about this one but I want to raise it. Forcing the dashboard app to be inside a ![]() I'm thinking that maybe we should leave this up to the implementor to decide, maybe provide a base class like Anyone that is interested in this, please feel free to drop any comments, feedback and or/ideas. Multiple Instances of a dashboard appIf a dashboard app provides configuration (say that we want to create a dashboard to show a certain Google Analytics property) would it make sense to allow multiple instances of the same type of dashboard app? So that each instance could have different configuration? ChartsI'm guessing that there will be several dashboard app implementors that wants to use charts in some way. Right now, Umbraco does not ship with any chart library, if we leave it up to each developer to include a chart library we might end up with having 10 dashboard apps with 10 chart libraries shipped and bundled with is not optimal. I know that including this in the core is probably not something you want to do but I wanted to raise the issue. Mood boardI wanted to share this "mood board" that I cranked together with the help of Lovable. To be able to allow the "freedom" used in some of these apps, we probably need to ditch the ![]() |
Thanks for the very nice summary @enkelmedia. I think you are on point in more or less all of your cases. I will address a couple of them in this comment, and then we can go through all of them during the next period. I think you already have suggestions for many of them in your PR. 🙌 Default "look and feel"I have pushed an update to the PR that allows for more flexibility. We now have an SizesWe might want to try out some different options for the general layout and size options to figure out what works the best. It might also make sense to use some more descriptive size names so we have room for adding more in the future. Thinking out loud here: "Tall," "Landscape," "Portrait," "Wide." 🤔 User-specific and defaultsI think it is really interesting how we will support the "Default" setup. It could be the three-step system that you mention:
I am open to giving all of them a try. I would like to introduce some good DX around the "Custom User Data" endpoints. With a repository, a good way to store data for the correct key, and maybe some additional helpers in the CurrentUserContext when we want to store something for the current user. MoodboardThanks for the very nice moodboard. When we can make that, then I think we are in a pretty good state. 😃 |
Figured I'll add the screenshare of the current state of my PR-branch (that hopefully will be merged into this) so that anyone that is following along can pitch in feedback. This shows:
|
I have nothing to add other than this looks brilliant. |
@enkelmedia "App-specific settings." Should we go all the way and make it "Data Type"-like? You pick an App (Property Editor), it comes with flexible configuration defined through the manifest, and we store it in the database. It will require a Management API and all of that jazz. It is out of my area of expertise, so it would require you or someone else to want to do that part. |
Hmm, did not think about that as an option. It would be really cool. I mean, technically, that could be implemented by:
Maybe I'm missing something, but given the setup above, that would not require anything from the Management API? |
I've been thinking about the default layout for the dashboard apps, if we use the uui-box and it's headline that might stear people into always adding a "regular" headline which would also add the gray border underneath. I'm kind of inspired by the mood board ![]() Maybe we should have a "special" kind of uui-box for the
![]() This way we could ensure that we have a more consistent look and even even if someone creates a dashboard app that does not have a "headline" in the same way as a @madsrasmussen let me know what you think, would be happy to implement it to try to see how it looks. |
* DashboardApps: Added sorting, defaults to all dashboard apps * POC: Dashboard apps, added storage, introduced edit mode, support for multiple instances * Dashboard apps, style refactoring and fix for pending users
Dynamic Dashboards / Dashboard Apps
Context: #19575 (comment)
Register a dashboard
Register an app
App Element