blog

Booked Tips: Setting up Administrators

Booked is configurable in so many ways. In this article we’ll review how to set up multiple levels of administration.

Most of the time organizations can get away with the single administrator that is the default in Booked. The first user to register gets full administrative rights for the whole application. So they can create resources, manage reservations, control configuration settings, and so on.

This is a powerful set of permissions and it should be limited who gets them. If you do want to add users to the application administrator role, you have two options.

The first is to open Application Configuration and add the other users’ email addresses to the admin.email setting – just add a space or comma between each email address.

The second option is the same way you can add lower-privileged administrators, as well.

First, create a new group in Application Management > Groups. Then change the roles for the group to include Application Admin

Finally, add users to this group. Every user added will have full application administrator rights.

Other Types of Administrators

Booked has multiple levels of administration to allow certain people to do things like manage a set of resources or update user details for a set of users. These are Group Admins, Resource Admins, and Schedule Admins.

Group Admins

These users can update user details and manage reservations for specific users. To set them up, follow the same steps as for Application Admins, except choose Group Admin as the role.

Next we need to set the users that these admins can manage. To do this, create another group (I created one called Users), then set the Group Administrator to the admin group.

Now every user in the Users group can be managed by users in the Group Administrators group.

Resource Admins

Users in a Resource Admin group can manage resource information and reservations for a set of resources. To set them up, follow the same steps as for Application Admins, except choose Resource Admin as the role.

Next we need to set the resources that these admins can manage. Click the drop down in the Roles column, then pick the Resources option. Finally, check off all the resources that you’d like this group to be able to manage.

Schedule Admins

Users in a Schedule Admin group have all the same privileges as resource admins, but for all resources on a schedule. They also have management rights for the schedule. To set them up, follow the same steps as for Application Admins, except choose Schedule Admin as the role.

Next we need to set the resources that these admins can manage. Click the drop down in the Roles column, then pick the Schedules option. Finally, check off all the schedules that you’d like this group to be able to manage. Remember – they will be administrators for all of the resources on those schedules.

Hosting and Support

Did you know that I offer professional hosting and support for Booked? You can set up a free trial in minutes and get unlimited support.

This article was written on November 4, 2019, so check your documentation for the latest options.

Booked Tips: Tablet Display

Booked includes a lot of features that you may not know about. In this article we’ll talk about the tablet display, which is perfect for showing reservation information next to a resource. A good example is a tablet mounted outside a conference room, but this can be used for any type of resources.

Here’s an example of what this looks like.

You can quickly see if a resource is currently in use, what the schedule for the day looks like, and create ad-hoc reservations. If there is a reservation that is pending check in, a button to check in will be shown instead.

Great, so how can this be enabled, you ask? It’s simple.

On your tablet, open a browser and navigate to https://your-booked-url/resource-display.php. You’ll be greeted with a sign in screen. Sign in with an administrator account, then pick the resource you want to show.

That’s it. You can leave this up and it will continuously refresh with the latest information.

Hosting and Support

Did you know that I offer professional hosting and support for Booked? You can set up a free trial in minutes and get unlimited support.

This post was written on November 4, 2019. Check your documentation for the latest options.

Learning how to modern web dev

I’m neck deep in learning ES6, React, Typescript, Node and all the billions of pieces that are a part of this “ecosystem”. I think I’m going to post some of the things that I learn along the way here.

Most of it will probably be obvious if you’ve been working with these technologies for a while, though I assumed a lot of what I was trying to do would be easily discoverable online. Maybe I just need to take some Google lessons.

My Lessons

Lessons to write about…

  • Using Sequelize CLI (and probably a rant about all ORMs, but especially this one)
  • Avoiding Redux and test driving React apps using hooks
  • Dockerizing a dev database
  • Writing integration tests with Sequelize without losing my mind

Packaging a Node Express App

I’m not sure how most of the JavaScript world is building, packaging, and deploying their applications. We’re using Yarn instead of npm, but neither tool provides a simple way to zip up and version your app (unless you’re publishing to npm, that is).

Here’s what worked for me (based on Yarn 1.15.2). As with everything I post, If there are better ways, please tell me.

Install cross-var to support consistent variable usage in package.json across Windows and Mac.

yarn add cross-var

Install bestzip to support cross-platform packaging.

yarn add bestzip

Install copyfiles to support cross-platform, configurable file copying.

yarn add copyfiles

Create a script in package.json for compiling TypeScript to JavaScript

"build:ts": "tsc"

Create a script in package.json for copying the compiled files to a /dist directory

"copy": "copyfiles -a -e \"**/*.ts\" -u 1 \"src/**/*.*\" dist"

Create a script in package.json for packing up the source and dependent node_modules

"package": "cross-var bestzip $npm_package_name-$npm_package_version.zip dist/* node_modules/* package.json"

Notice the $npm_* variables? Apparently you can use any variable defined in package.json within package.json. You just need cross-var to consistently access them.

That ended up being it. Here is a redacted package.json that I’m using:

{
"name": "Nick Korbel Demo",
"version": "0.1.0",
"description": "The demo for packaging",
"private": true,
"main": "dist/index.js",
"scripts": {
"build:ts": "tsc",
"copy": "copyfiles -a -e \"/.ts\" -e \"/.spec.js\" -e \"/.log\" -u 1 \"src//.\" dist", "start": "node ./dist/index.js", "package": "cross-var bestzip $npm_package_name-$npm_package_version.zip dist/ node_modules/* package.json"
},
… more stuff here like dependencies

This post is part of a series I’m writing to share what I’m learning