šŸ¬ Introducing Meteor Candy, the Hackable Admin Dashboard

Update 2: looking to get some feedback before I do the announcementā€¦

On one hand, a lot of people have been asking for a trial edition of Meteor Candy. On the other hand, Meteor Toys customers loved the account impersonation feature but wanted the ability to search through the databaseā€¦ soā€¦ Iā€™m happy to launch Meteor Candy Light which is a customized version to bring the best of both worlds to the development environment:

1 Like

Deserves a separate thread Iā€™d say.

1 Like

Looks great! I had a few questions:

  • Can you edit fields? Like changing a userā€™s profile info, etc.
  • Can you add other collections other than the user collection? If so, what would setup look like for that?
  • Are you considering a non-yearly 1 time payment option? If I were to use it, Iā€™d love to drop it in to my clientā€™s apps without having to sell them on an annual subscription.

Other than that, it looks very sleek! Great work

Thanks man! To answer your questions:

  • you can edit any document in the database, because you can program your own commands to run whichever way they like
  • in the same way, you can display user data from any data source, like HTTP requests or collections. Itā€™s just a matter of defining the output, i.e. `BillingSettings.findOne({owner: userID}).currentPlan
  • Iā€™m still thinking about the yearly billingā€¦ either to make it on an honorary basis, or limit support to one year, or somethingā€¦ would love to hear some more opinions here. I think not doing recurring billing on Meteor Toys was a huge mistake, but its really hard to tell.

Thereā€™s a guide on Meteor Chef that goes into the details of configuring Meteor Candy:
https://themeteorchef.com/blog/meteor-candy

You can also take the functionality for a spin with Meteor Candy Light. Itā€™s really easy to install and configure.

Hey folks - Meteor Candy 2 is on the way, and I think itā€™ll resonate very well with what people have been saying. In the meantime, I am happy to announce minor update to smoothen out the edges of the initial release.

Also, if I may suggest, make sure to get Meteor Candy before the price goes up, and if you already have it, fill out the survey to make sure you get the update to the next version.

Every customer will get the updated zip file shortly. To update, you just have to replace everything but the config folder and business should proceed as usual.

Improvements in v1.1

JSON Rendering Everywhere
Added support for rendering JSON data anywhere - just return an object where applicable and Meteor Candy will work the magic.

  • customizeable look and feel
  • automatically truncates data into scrollable window
  • double click to expand to full size

This means you can now render any data you want into the user accounts and into stats tabs, from virtually any data source, and view it on demand.

Cosmetic Improvements
There were a few small tweaks with the loading screens, rows, and etc, to make the interface feel more sturdy. Most notably, all things related to data loading are now operating smoother.

UI Locking
Whenever an operation - such as a task or data fetch - is in progress, the entire UI gets locked up. This is to prevent the end-user from firing multiple actions and to ensure they see the results of the tasks they run.

Disconnected Notice
Whenever the application loses connection to the server, the loader icon will turn orange to let the end user know there is a connectivity issue.

Added ā€œrequiredā€ field to Tasks
When you are creating tasks to run on your user accounts, not every task may be applicable. For example, if we have the ā€œChange Passwordā€ task, it wouldnā€™t make sense to show it on an account that has been authenticated by Facebook, since it has no passwords. Now, you can use parameters from your user data to determine if tasks should run.

Removed hiddenProfilesFields
From this point on, any value prefixed with an underscore will be hidden from the profile display. This allows us to return necessary data like _id and _avatar without going through the trouble of manually hiding them.

Minor Back-End Improvements
Accountā€™s search will no longer break when receiving non-alphanumeric characters, and moment.js has been removed out from the back-end in favor of a couple of small functions.

One of the features of Meteor Candy will be a queue for all things related to moderation. Iā€™m designing the Queue functionality independently - and the idea is that Meteor Candy will work as the optional interface for it.

Iā€™ve started a discussion for it here, it would be great to get some feedback:

cc @joncursi

1 Like

What about routing? I mentioned this above but Iā€™m not sure it was answered. Meteor Candy seems to run through a modal which does not track state changes in the URL. This makes it harder for a team of admins to work together on managing the content on the site because they canā€™t paste links to one another. Does the Yelp use case I mentioned above for with the goals of meteor candy? Iā€™d like to use it as a content management system for my application if that is the case, which is where unique urls come into play.

Active admin on RoR does this by claiming the /admin route and everything you click changes the URL. Team members can then pass urls around in slack to get stuff done faster, rather than having to pass around instructions on how to find something or recreate steps.

Routing - I hear you - its a bit tricky. (and it looks like I missed it - thanks for reminding)

The key difference I see here is RoR renders HTML on the server, whereas Meteor is a single page application. I wouldnā€™t want to touch the URL because it might conflict with something else in the application.

However, I think Meteor Candy has a really simple layout, it might be easy enough to say ā€œGo to Stats > Todayā€ or ā€œSearch for this userIDā€.

I created a hash router for Meteor before, maybe something of this nature can ā€œstackā€ with other routers, but would have to think some more on it.

I suppose this issue would also be resolvable if Meteor Candy ran as a microservice instead of as an in-app tool. I wonder, would anyone have interest, or preference, for this approach?

If we think of content management as editing MongoDB documents - there may be something coming there. One possibility is to bring in a database editor in the style of Mongol. Having a JSON editor would make the tool very versatile, but I wonder if it would scare some customers away as it might be too ā€œtechieā€ for most peopleā€™s taste. Schema validation is also tricky as everyone has their own way of doing it and with Mongol, its been causing issues over and over.

A quick teaser for you guys :monkey_face: The package is working over dynamic import, and has many new features on the way.

2 Likes

Iā€™m going to do an announcement for v2 soon, but I just wanted to give a heads up to the people who have been following this thread:

1 Like

Stupid question but why canā€™t we just call this as a template inside a route and render the UI that way inside a route? The option of rendering as a modal or just an embedded template can then be left to the choice of the dev.

AccountUI is an example of how this works. I donā€™t think you should worry yourself on the specificities of which router etc to load.

That and maybe a parameter to set the route prefix via a config variable would suffice IMO.

This could be done very easily. However, I believe the OP wanted specific routes, for example, myapp.com/admin/search/asdf/viewProfile, which could then be passed around by customer service reps.

This may or may not come to future versions. I think that a lot of people like that it works like an embeddable widget. However, it would be great to hear from others.

Hi msavin.

I reviewed your Meteor Chef post and am configuring Meteor Candy and want to whitelist some user ids but it is not working. The path for this code on Meteor Candy is packages => meteor-candy-config => imports => shared => security => index.js. The code is below.

security = {
// Instead of defining permissions,
// you can just list the userIdā€™s of who is allowed to use Meteor Candy
whitelist: [ā€˜theUserIdIPlanToUseā€™],

// Meteor Candy detects if your application is in development mode using `Meteor.isDevelopment`
// However, you can disable development mode using the flag below
disableDevelopmentMode: false

}

Any insight would be appreciated.

You just need to set this true :slight_smile: the whitelisting feature only runs in production

Hi Max - thanks for the reply. To make sure I understand, in order to test/use whitelisting I need to purchase the business edition - is that correct?

Correct. The development version only works in development mode, so you would not be able to test it in a production build.

I had sent an email with questions about the Meteor Candy and Vue and never got a reply back.

I just searched for ā€œMeteor Candy Vueā€ and could not find anything. I did find one for Meteor Toysā€¦ response coming up now

Thanks for the reply. I bought the business version last week.

Hello msavin,
Iā€™d like to know if youā€™re still maintaining Meteor Candy and if you use any css template (specially Bootstrap that i donā€™t want installed) in it. :slight_smile:
In addition, i can have my dashboard in production or i need to pay for that ? What do i need to pay for actually ?
Thank you in advance for your answer,
Louis