Company Cookbook – Testing out Azure App Service

Check out my latest hackathon project, Company Cookbook, for Microsoft’s US Hack for Wellness: https://devpost.com/software/company-cookbook

It is a simple Microsoft Teams Tab application that allows employees to post links to their favorite nutritional recipes as part of a wellness program. Employees can build their own company cookbook of curated recipes. The app uses the link-preview-js module to get the recipe title, description, cover image, from the recipe page and adds a preview card to the grid layout on the Teams tab. MS Teams blocks external links by default so I still need to figure out a way to allow employees to easily hot-link into the source recipe page. It is a hackathon project so certainly not production-ready but there are some tidbits that might be useful in the code: https://github.com/MkFoster/companycookbook

I hosted the project on Microsoft’s Azure App Service which is similar to Lambda or Azure functions where you don’t need to worry about managing servers or container config files.  The difference from functions is that you can control your endpoints, routing, etc. in your app code.  You don’t need to configure API Gateway and you don’t need to do things differently for the platform.  I developed and tested this project locally like a normal Node.js w/ Express.js. 

The difference is that when I was done, I just clicked a button in the Microsoft VSS Azure App Service plugin to deploy my app.  It automatically packed everything up and uploaded it behind the scenes.  App Service knows that index.js and app.js are common entry points and automatically called my index.js to fire up the app.  It then provided a default URL (https://companycookbook.azurewebsites.net/) with TLS and forward requests to my app listening for HTTP on port 80.  Standing up an app with HTTPS is therefore effortless.

A negative: Very long cold start times on the free tier (like over a minute).  I would need to pay for at least the first non-free hosting tier which offers “Always on” if I hosted anything serious.