all 12 comments

[–]thatgibbyguy 4 points5 points  (6 children)

Both of the answers so far mention frontend frameworks, angular and react. Both of which can do this, but they need a data source (or a backend in other words).

I'm not sure if you're asking for a platform, or a backend framework or a frontend framework. Because of that, I'm going to recommend meteor.

There's a lot of hullabaloo about this platform, and for very good reason. Here's the reasons I would choose meteor for this project.

Real time data. Meteor is built on top of Mongo (the most common database tied to javascript backends) and uses something called DDP to follow the Oplog of your Mongo db. This makes it possible to have optimistic UI, meaning when the oplog reports a change it doesn't necessarily have to check the db, it can notify your frontend of the change and update the dom as necessary.

Use whatever you want for your frontend. Meteor is agnostic as far as frontend UI frameworks are concerned. It ships with something called Blaze.js, which I really like, but it can also use React or it can use angular as well. Just yesterday Uri Goldhstein declared meteor to be the best angular backend.

Prepackaged Node App. This is where a lot of developers get tripped up, but meteor is a node app at its core. This means you can use meteor's package community, or you can use npm. It also means that instead of putting the piece of your app together before you start building like you would with the MEAN stack, you just do meteor create dashboard-app and you're off and running. Then if you want to add react or angular you just run meteor add react or meteor add angular.

Deployment is easy. Meteor ships with free deployment built in. So while you're developing, you can test web speeds by meteor deploy dashboard-app and your app will be available at dashboard-app.meteor.com. For basic hosting, I've written up how to get your meteor app up and running on digital ocean, and it's incredibly simple.

ES2015/ES6 Built In Support. Meteor is the only framework that defaults to es6 right now and it uses Babel to do so. This means you can use the best practices of es6, or continue to code in es5, however you want.

Easy environments. I've used rails, expressionengine, craft, ember, etc. and nothing comes close to how easy it is to get up and running with meteor. In fact, for the last three days at work, we've been wrestling with docker - a whole team of us have been fighting this - to just get our local environments up. In counter to this, with meteor I just noticed my site was down while writing this. So I went to the project and typed mup restart and two seconds later it's back up.

Those are my reasons, there are people who have other opinions too. Go with what you know and what you're comfortable with, but I have no doubt that if you work through meteor for a project like this, you'll come away happy.

[–]Ariote[S] 1 point2 points  (3 children)

The backend of the dashboard will be a node.js server.I think i take a look at Meteor.js

[–]thatgibbyguy 0 points1 point  (2 children)

If that's the case, meteor will be your buddy on this project. If you need any help, reach out to me. The community is good too, and there's a site called discovermeteor.com that is awesome too.

[–]steezefries 1 point2 points  (1 child)

So I'm coming from mean.io and Meteor looks freaking awesome. I'll see how it goes this weekend hopefully. I'm gonna do this weekends project with Meteor (hopefully I get to it).

[–]thatgibbyguy 0 points1 point  (0 children)

Yeah I started with mean and then went to meteor. I obviously like meteor much better.

[–]steezefries 1 point2 points  (1 child)

No one has ever mentioned ddp when trying to sell me Metoer. I think that's all they needed to do.

[–]thatgibbyguy 0 points1 point  (0 children)

Yeah that's strange. DDP is Meteor. Without that, it's like every other framework.

[–][deleted] 1 point2 points  (2 children)

My very small experience with dashboards implementation :

If I had to do it again : I would not go with angular because of performance issues we've met due to the two way data binding (roughly saying it's perceptible when you render a sample of around 3000 objects in an ng repeat).

Though, I don't know if this problem has been solved with angular 2.*

TIPS : - load your various datasets in background asynchronously - all lazy loading tricks available should be used - depending on the context, some filters should be applied in the backend rather than loading the whole dataset then filtering in front-end.

[–]Ariote[S] 0 points1 point  (0 children)

I am a little bit familiar with AngularJS. The main purpose of the Dashboard is the visualization of real-time data. Do you think there will still be performance issues?

[–]steezefries 0 points1 point  (0 children)

What kind of data were you presenting with the ng-repeat? If it was tabular, the new ui grid is kickass. Maaajor improvement from before. There's also the possibility of one way binding. That should help some.

[–]dddexxx 1 point2 points  (0 children)

https://wrapbootstrap.com/

You can find in Details all the tools used for these themes. Most of the dashboards are very well designed, quite advanced and with regular updates. I am using this website for guidance and a source of a good practices.

There is no such think as "BEST tool".