A Peak Behind The Nerd Curtain
Development Tools & Language
Visual Studio Professional
C# for all client code and nearly all server-side code
A dab of JavaScript where required on the server.
Postman for RESTful testing
JetBrains ReSharper tools for advanced C# development and debugging
Client UI Framework
Previously Xamarin for cross-platform mobile development. We are in the process of transitioning to Microsoft’s new MAUI framework as it matures and fixes bugs. Xamarin is being deprecated and MAUI is the successor and has been built from the ground up with less baggage and less need to write platform specific code. It also integrates nicely with C# and Visual Studio.
Server-Side Technology
We are using Microsoft Azure over AWS and Google for a number of reasons. Primarily because of how easily it integrates with the entire tech stack, but also because there’s better support and documentation available. The feature set that we use is also much easier to get up and running and maintain: a crucial requirement when doing complex and secure back-end development. A peak at some of the features we’re using with Azure:
Serverless “functions” - instead of renting & maintaining dedicated servers, this powerful feature lets us write C# code to handle some of the most complex tasks, is scalable, provides secure means to access back-end resources and hides behind our API Management system so that client apps can communicate with whatever they need from the cloud.
API Management System - Used to securely interact with our serverless functions. In a nutshell, it’s how the client code securely talks to the server instead of directly calling the functions themselves. This allows a fine degree of access control and greater security, such as verifying if a client is even authorized to make a server call in the first place. You can think of it as the gatekeeper to the serverless functions. We think of it as extra security and cost savings: if you’re not authorized, the call doesn’t go through, and we aren’t charged.
Notification hub - used for easily sending push notifications to iOS and Android devices.
MS SQL database - yes, databases are boring (to us at least), but this is at least easy to use and interoperates seamlessly with the serverless functions. It also allows us to employ encrypted storage, both at rest and in transit.
Blob storage - Simple, secure storage for items that don’t belong in a database, such as files.
Key Vault - secure storage for various secrets and keys that shouldn’t be viewable. Integrates nicely with the rest of the ecosystem as a way to manage secure access across resources on the server.
AD B2C - Lots of acronyms here. Let’s just simplify it and say it’s what we’re using for secure user sign up/in, password resets, all that super exciting user authentication related stuff.