Everything into Orbit

For many years I've been working with web-based applications, looking at the best ways of creating and maintaining software that can be accessed via a browser, while still feeling like a desktop application.

Everything into Orbit

It's always been a beast of many moving parts, both in the browser and on the chosen back end, but with the advent of React and Vue many things changed. Suddenly, the amount of work required to maintain complex multi-page screens at the front end melted away. At the same time the rise of NoSQL databases made it easier to map onto web-based applications. All that was missing was the glue to hold it all together.

When GraphQL landed I thought we'd found it and the puzzle was complete.

After many weeks, all I had was a sore head from banging my head against the office wall. All was not as I had expected. This glue wasn't the glue I was looking for. I wanted to write system and business applications and I wanted a platform that would take care of the mechanics allowing me to focus on business logic, but it was nowhere to be found.
With the advent of COVID lockdowns, I decided to try and write my own email client and see what would be involved in making my own glue. Two things sprang from this decision. Firstly, I now have "Orbit Communicator" which has been my only email client for over a year. Secondly, we have the Orbit Framework, which is the re-usable technology behind the application.

Orbit Communicator

Orbit Communicator is a fully-featured email with integrated calendar application that runs locally on your machine and uses a web browser as a front end. The back end is written in Python, the front end in Vue.js, with communication between the two being handled by Websockets. It's designed to be extensible and to this end I've added an Assets module, allowing you to enter information about, for example, insurance, tax, subscriptions etc and provides tracking and reminder functions that all link back into the email and calendar. Renewal dates for all your key services appear in your schedule and on your calendar with linked emails from their providers. Once set up, you can drill down to your car insurance, look at the previous renewal, and click on a button to view all emails from your insurance provider at the time. And so on.

This is an add-on module, which demonstrates how easy it is to add your own functionality which can integrate with Orbit Communicator, which already handles the Google API and allows synchronisation with GMail and Google Calendar.

Orbit Framework

The point of the framework is to transparently take care of communication between the front end browser and the back-end code and synchronise what's on the screen with what's in the Orbit Database. So if User A's screen view displays an account balance and User B puts through a transaction which modifies that account balance, we want User A to see the balance update in real-time.

In terms of what we've ended up with, the framework consists of the following:

  1. A fully-featured, local database server which supports a host of indexing options including full-text, but the main feature is its reactive feedback function where you can open a table with a python callback routine that is activated every time there's a modification.
  2. An ORM module designed specifically for the database but with reactive feedback in mind.
  3. A Vue.js / Pinia client-side module that talks directly to the ORM with a view to keeping Pinia data-sets in-sync with their server-side counterparts.

If the real data actually lives elsewhere in another database, that's fine too. Think of the Orbit Database as a local cache. All we need are connectors that can feed data into the cache, automatically updating what the user sees. This means that any third party Python script, on the same machine with sufficient permission, can effectively control what the user sees in real-time by updating the cache.

Mad Penguin is now actively looking for testers, help, use-cases etc, so if you find this of interest or know someone who might, they can contact me here or visit the Orbit Communicator website (linked below.)

Thanks for your interest and reading this far. Get in touch to go into Orbit!