I have been with several companies where the employees can't remember the exact location of the meeting room of their next meeting. This can happen if there are multiple buildings and/or many meeting rooms and the meeting rooms names doesn't give a hint about the physical location of the room.

What it does

It's an Outlook task pane add-in that's triggered on viewing or editing a meeting. The add-in reads the current location from the meeting and displays an image. The images shows a custom map/floor plan with a marker icon indicating the precise location of the room. Administrators can easily upload maps/floor plans and assign rooms and their location to these. This is done through a separate admin web site.

How I built it

Started experimenting with Add-ins with yo-office. Later build the whole backend and admin web UI using .Net Core 2 API+MVC. Using table and blob storage to store images and location data (each customer/Office365 tenant has their own tables and containers). Considered hosting in Azure Web Sites, but wanted to gain knowledge about Kubernetes, so set up an AKS cluster to host.

Challenges I ran into

Had some difficulties with trying to do SSO in Outlook Add-in and working with auth in .Net Core 2 APIs as this is not yet widely documented. Still trying to do proper Office Store license checking. Initially wanted to store all information (attached image and location) as extensions directly on the Graph, but so far the meetingrooms entity does not allow extensions, so had to save this information externally.

Accomplishments that I'm proud of

Building an easy to use Add-in using multiple cutting-edge technologies (AKS, .Net Core 2, Graph beta endpoint, Kubernetes etc.).

What I learned

  • Figuring out how to create an Office Add-in.
  • Gaining experience with Kubernetes/Azure AKS.
  • Publishing an app to Office Store
  • Building multi-tenants apps

What's next for MeetingRoomMap

Planning to introduce localization and migrating admin web site from plain Bootstrap styling to use Office-UI-Fabric.

Built With

Share this project: