Architecture
Tempus is designed to be run as an offline application. The application runs as a WASM application on Blazor.
Client Application
NOTE: The application can be used directly from any browser without installing Chromely (such as from a mobile device), however security restrictions will the application from having access to local files and printers.
Decision Log
The decision log allows decisions to be revisited while considering the original decision’s reasons.
C# Currently the best balance between performance and rapid development for cross-platform applications.
HTML UI The most robust set of UI components with the most flexible UI layout.
Blazor HTML is designed for the web, however this application is designed to be offline. Most HTML UI implementations would create a faux web server, which introduces significant complexity to the deployment and architecture. Blazor allows the entire application to run in the browser’s application space. NOTE: Because Blazor is so new, it’s possible that the client-side-only implementation may present significant issues, thus the server-model infrastructure still exists in the code.
jQuery / Bootstrap Blazor provides the infrastructure for MVVM, thus HTML is only necessary for presentation. jQuery and Bootstrap provide minimal UI-only implementations to support HTML development. Furthermore, jQuery has a very wide selection of freely available UI components.
Chromely Chromely is a lightweight application host for Chrome that provides a cross-platform application that seamlessly hosts an HTML application. It was chosen over Electron for two reasons:
Electron bundles Chrome, making it a 200MB+ install. Would rather use the installer to ask the user to install a system version of Chrome. We may want to bundle Chrome in the future to (1) gurantee the operational environment and (2) not require the user to install additional software, but I’d rather keep the installer small and simple for the initial releases.
Electron is a NODE.js application. Chromely is a C# application. We need expose local system resources (files & printers) to Tempus, and keeping the platform homogenous (C#) will make this easier.