Vaya Nova Batray

Streamlined development, lightweight operation, and zero code repetition. A ready-to-run toolkit.

Introduction to Extensa

Our goal was simple: develop faster, deploy easier, and avoid repetitive coding every time we started a new project. To achieve this, we developed a framework called Extensa. Extensa combines the flexibility of scripting languages like JavaScript with the reliability, performance, and security of a compiled language.

Applications built with compiled languages such as C# often become challenging to maintain or extend over time. You may end up with either a massive, monolithic codebase that's difficult to manage or a complex array of microservices that add environmental complexity. This is where Extensa comes into play.

How Extensa Works

Extensa allows us to develop microservices using the .NET platform. These microservices require only one additional library to be fully functional. Extensa runs these microservices—referred to as extensions—in a single application, whether on a server, cluster, desktop, or mobile device. If an extension throws an error, Extensa automatically stops it, ensuring that the rest of the application continues to run smoothly.

Moreover, Extensa manages dependencies between extensions and can automatically update them if necessary. For instance, if extension C depends on extension B and B is either missing or faulty, Extensa will only run extension A, informing the administrator of any issues with the other extensions.

Extensa also offers flexibility in the framework. If an extension adds services to the dependency container, it will only run at startup; otherwise, it will run after startup, helping us address our original problem of maintaining a clean, manageable codebase.

Batray: Powered by Extensa

Extensa is the backbone of Batray, which comes with a number of pre-built extensions and a shell for running Extensa-based applications. With Batray’s pre-built extensions, we can develop everything—from the UI framework to persistence—once and reuse it repeatedly.

We also built various tools as extensions, allowing the shell to pick them up and provide new tools to the application. These tools range from essential services for rendering web pages to complete automation, event-based architectures, message queues, authentication, and authorization.

Key Tools: Batray Applets

One of the key tools added to Batray is Batray Applets. Batray Applets enable us to serve the user interface using client-side libraries such as Angular and Blazor WebAssembly, facilitating seamless integration. With these applets, the server doesn't need to focus on the user interface, making the application faster, more secure, and reliable.

Client-side UI means that updates can be made without redeploying the entire application. Simply install a new plugin within seconds, and it becomes available to users immediately.

Batray in Action

Batray includes a Machine Learning framework and various pre-built tools. For example, with tools like Elsa Workflows, Transpire (our custom event distribution system), and other extensions, we were able to build a document recovery system for an OCR scenario in just three days. This system successfully recovered 150,000 documents per day.

Batray is currently used in diverse scenarios such as document management, workflows, invoicing, expense tracking, and more. We’re also working on exposing our IoT solution as a Batray extension. A notable application of Batray’s Machine Learning capabilities is in Lease Agreement management for a bank. The system learns the intricacies of lease agreements, predicts costs, detects early escalations, and manages the entire lifecycle of the agreements, including renewals, cancellations, and maintenance.