Web Client and Workbench | |
Web Assembly | Web Assembly is a new type of code that can be run in modern web browsers — it is a low-level assembly-like language with a compact binary format that runs with near-native performance and provides languages such as C/C++, C# and Rust with a compilation target so that they can run on the web. Sm8rtHealth Workbench, Demonstration Application and Web UI are developed using Microsoft’s implementation of Web Assembly named Blazor. Web Assembly is supported in all major browsers and largely removes the need for JavaScript, TypeScript or any other JavaScript based framework such as React, Angular etc. Whilst still having the benefits of HTML and CSS based websites. This removes a lot of the frustration with older style JavaScript frameworks. Clients can of course choose to develop their own UI in which ever technology they choose, and call functionality in the Sm8rtHealth API directly. Clients are not tied to the Sm8rtHealth visual User Interface. Clients can also call selective parts of the SM8rtHealth API and integrate into their own existing backend system. |
Application Server | |
.Net6 | .NET 6 is a general purpose development platform maintained by Microsoft and the .NET community on GitHub. It is cross-platform, supporting Windows, macOS and Linux, and can be used in device, cloud, and embedded/IoT scenarios. .Net is much more compact than the .Net Framework for Windows – and is ideally suited to applications targeted for AWS – and applications where portability between operating systems is a significant requirement |
Entity Framework | EF Core. Entity Framework is what is known as an Object Relational Mapper: it sits between the application code and the database – allowing the code to work with in memory business domain objects and remain essentially database agnostic. Entity Framework for .Net Core (EF Core) allows us to write application code that – at deployment time – can be targeted at many modern relational and no SQL databases. |
Swagger | Swagger is an open source software framework backed by a large ecosystem of tools that helps developers design, build, document, test, and consume RESTful Web services. Swagger allows us to automate one of the most time consuming – and often error prone aspects – of constructing modern web applications. It also provides tooling for manual testing of the web API – independent of the web client – and for the generation of API documentation. Along with a number of other tools in our box – Swagger provides us with enormous productivity and quality improvements over traditional manual approaches. |
Transactional Database | |
MySQL | MySQL is a relational database engine that is available through Amazon Relational Database Service (RDS). It is a high performance database that integrates the database engine with an SSD-backed virtualized storage layer purpose-built for database workloads. |
Amazon S3 | Amazon S3 is object storage built to store and retrieve any amount of data from anywhere. It is designed to deliver 99.999999999% durability, and stores data for millions of applications used by market leaders in every industry. S3 provides comprehensive security and compliance capabilities. It gives customers flexibility in the way they manage data for cost optimization, access control, and compliance. |
Security Stack | |
OAuth 2 | The solution will use the OAuth 2 protocol – supporting authentication for users of web, desktop and native mobile applications. The solution can include functionality for password complexity/strength settings, automated account lockout, password change, and forgotten password. |
User Authorization | The solution will use a Role based security model. In this model the customer may configure one or more business roles to which access permissions are granted. New user accounts can then be associated with one or more of the defined roles. |
Amazon VPC. | Amazon VPC. For cloud deployments Amazon Virtual Private Cloud (Amazon VPC) will be used to provision a logically isolated section of the AWS Cloud for SM8 applications and database resources. Web servers will reside in a public-facing subnet with access to the Internet, while database servers can reside in a private-facing subnet with limited or no Internet access. |
Amazon IAM | The cloud based solution will use the Amazon Relational Database Service (Amazon RDS) to manage its MySQL database instances. Amazon RDS is integrated with AWS Identity and Access Management (IAM) allowing us to configure access rights for administrators and just those IAM identities under which our web and background applications are running. |
Transport | TLS. Transport Layer Security (TLS) will be used to protect the privacy and integrity of all data transported over the public internet. |