I’ve been working on a proof of concept for a meeting room scheduler software I think you will find interesting.
The initial target audience of the app is professional services organizations with geographically dispersed offices that need to manage meeting rooms in the different offices but don’t have a large team dedicated to this task or a large budget to acquire expensive meeting room management software.
The goal is to provide these organizations with a simple and inexpensive software that (1) allows end users to book rooms in the different offices through a web browser on a PC or mobile device, and (2) allows a designated group of system managers to perform administrative tasks such as adding and removing rooms in the system.
I’m following an Minimum Viable Product development model for this project where I will create a small set of features that will provide satisfy the goals above at a basic level. I have three specific requirements that I’m targeting first:
- Create an “available meeting rooms” screen where users can see the list of available meeting rooms for a specific office and date combination.
- Create a “booking” screen where users can enter or edit a booking.
- Create a “meeting rooms list” screen where administrators can view the rooms that are set up in the system.
- Create an “edit room” screen where administrators can edit a room’s properties (name, office, capacity and such).
I’m using ASP.NET MVC for the web application and a SQL Server backend. I will host the system on Microsoft Azure.
The main challenge that I have now is the user authentication/authorization method for the application.
As the application will be multi-tenant (it will support multiple organizations on a single running instance of the application), I have two authentication/authorization approaches that present challenges each:
- Use individual user accounts maintained inside the application itself.
- Single sign-on through an organization’s internal user accounts and authorization mechanism.
User accounts inside the application: If I take this path, I need to create a “users and roles” database and provide screens for user registration, logon, logoff, and password reset. These are easy tasks for me to take.
The disadvantage of this approach is that it creates a barrier of entry to the system because users will have to create and remember a username and password combination just for the application.
Single sign-on through an organization’s accounts: In this scenario the application will delegate the authentication step to a sign-on server on the organization’s side. Once the authentication takes place, the sign-on server will tell the application that the user is valid and the application will let them in.
The good side of this approach is that it doesn’t require users to create a username and password pair to access the application, as they will be able to go in using the credentials they have to access their organization’s network.
On the flip side, I would need to create a single sign-on setup for each organization (tenant) that intends to use the system. I have done this is the past and it required a fair amount of coordination with the organization’s technology team. I’m not sure I want to take this route for this project.
The provisional solution I will adopt for now is to use the user accounts inside the application approach, without a multi-tenant setup, so I can move on with the development of the project. I’m confident I will solve this challenge at a later time.
Current Status and Next Steps
Right now I’ve created the source code repository for the project, set up the database and started coding the screen that will allow users to create a booking. Here’s a mockup so you can have an idea of how it will look:
Next, I will focus on the screen that shows a user the list of meeting rooms for a given office and date combination. I will post updates on this project frequently, so stay tuned!