Our software, web & mobile app development technology stack

The tech stack is crucial to the success of any project.

So how does ours stack up?

Unfamiliar with the term ‘technology stack’? This bit of tech jargon simply refers to the combination of programming languages and software used to develop a piece of software. Getting the right mix of these underlying development tools is essential.

As software specialists and experienced experts in our field, we have selected a tech stack that contains the best in breed enterprise level tech. These are all ‘here to stay’ tried and tested technologies that have been very carefully selected to give us the flexibility to create any software platform required. So what exactly is in our tech stack?

Our tech stack toolbox – App Engineering Department

React and React Native

We’re big fans of React. It’s a mature JavaScript framework for web development which allows web applications to be written entirely in JavaScript. It enables greater functionality than traditional applications, without a corresponding increase in code complexity. Using the ‘Virtual DOM’, whenever a UI change is required, rather than updating the entire page, React only updates what’s changed from the old to the new state. With React, applications are broken into self-contained, easily reusable ‘components’, which not only permit greater clarity, they also allow for easier refactoring.

We write our Android and iOS mobile applications using React Native. Why? Because this framework allows a high percentage of code to be shared across both mobile platforms. How? Both are written using JavaScript. Also, business logic written for React web applications can be shared with mobile applications, too. This is much more efficient than full native mobile development and provides nearly identical performance.

Xamarin

The Xamarin platform is an open-source collection of tools and libraries for building iOS and Android apps using .NET. User interfaces are constructed using declarative XAML syntax, with business logic written in the same C# language that powers our backend Cloud services.

Xamarin is a mature platform, acquired by Microsoft in 2016, that allows for UI and business logic to be defined once and shared across platforms. Xamarin.Forms includes a variety of standard XAML UI templates, while Xamarin.Android and Xamarin.iOS still allows for specific customization when needed. Furthermore, it is possible to invoke mobile-native languages such as Java and Swift, which maximizes compatibility with other third-party libraries. Apps written in Xamarin offer near-native performance, as the C# source code is compiled to native assembly for each platform.

Our tech stack toolbox – Cloud Engineering Department

.NET Core, SQL Server

NET Core is a cross-platform application framework that can be run on Linux, Mac and Windows on-premises servers or in the cloud. It’s actually a full re-write of Microsoft’s earlier .NET Framework, with an emphasis on performance, testability and compatibility.

Web APIs, libraries and desktop applications can all be developed using the C# language. This modern, object-oriented language is still being actively developed and improved by Microsoft and the open-source community, with version 8 having just been released in 2019.

SQL Server is a highly secure, enterprise-grade relational database management system. It’s dependable as it’s remained one of the most popular data persistence options for decades. A relational database maintains data accuracy using atomic transactions, which ensures that each data change is reliably processed. Plus, the fairly recent addition of JSON support to SQL Server allows for a hybrid relational and document-based approach. So, you get the best of both worlds.

Azure and Kubernetes

Azure is Microsoft’s global cloud platform. We fully embrace Azure and our software development team uses this to provision virtual machines, network infrastructure, SQL Server databases and Kubernetes clusters.

Because our server and client-side software are written to support containerisation using Docker, they can be deployed to Kubernetes. Kubernetes has now become the industry standard in container orchestration. It provides global resiliency and scalability for applications and is also offered as a managed service within Azure.

Our tech stack toolbox – Testing

Unit Testing

As a project’s code base evolves over time and requirements change, having a strong foundation of unit tests becomes increasingly important. Unit tests are fast, repeatable tests that check that individual components behave the way we expect them to in isolation. By running unit tests automatically while writing code in Visual Studio, and as part of our continuous integration pipelines in Azure, we can ensure that we quickly identify bugs early and avoid regressions. We make use of the popular xUnit testing framework, in addition to using the Moq library for generating mock components.

Integration Testing

In addition to low-level unit tests that focus on small components, we battle test our software using automated integration tests. This ensures that the application as a whole is behaving as intended. At AVAMAE we find Postman suite gives us an organized and effective way of testing our Cloud APIs.

Tests are bundled into collections that represent the desired requests and responses we need to be confident that everything is running smoothly. These integration test collections can then be configured to run as part of our continuous integration pipelines every time we release new software versions. Even after release, we write our software from the ground up to ensure that we can continue to periodically run our integration tests as a health check, and clean up any test data created as a result.

Have an idea or project to discuss?

Fill out the short form on our Contact Us page, give us a call directly on +44 (0) 800 029 1425 or email us at enquiries@avamae.co.uk. We’ll guide you through our process, advise on the best possible solutions and steer you in the right direction.

Contact Us