This is a project I've had on my todo list for about 5 years - originally conceived as a Skype for Business enhancement. As the Teams APIs have become more mature, the idea of building it for Teams has become more realistic. This competition, plus time away from customer work over Christmas gave me the impetus I needed to turn it into a reality.

As a long-term Microsoft UC solutions architect and Developer, my Web skills were a bit rusty. I'd dabbled with Angular, but been keen for an excuse to try React for a long time. It's been a real joy to use, and I've been amazed at how many of the old-school concerns of building a decent web UI were taken care intuitively, and with a minimal learning curve. Coupling this with the Fluent UI components made building the UI a breeze.

Likewise with SignalR - I'd used it in server-to-server scenarios, but never for pushing UI refreshes. I realise I'm a little behind the curve on this, but wow - it's hard to see any way to make this any simpler. Again, the learning curve was minimal.

At the risk of this story turning into a technology love-fest, I have only good things to say about Cosmos DB. I have a strong SQL background, but have been looking for a reason to try NoSQL for a while. I love how it simplifies the basic (but critical) storage-and-retrieval and concurrency aspects of a data store, while pushing other concerns into code where they can be dealt with more flexibly, efficiently and effectively.

Outside of the technologies, the main challenges in the project were around the user experience - trying to create something that felt like a natural, useful part of Teams, while being simple to use.

Built With

Share this project: