Dynamic Vue Rendering Engine
The heart of CloudHaven is a dynamic Vue rendering engine (UI Engine) which renders Vue applications and components from a json text blob. Many details can be found in the API Programmers Guide. Currently only the Vuetify component library and some additional custom components are supported but Quasar support is on the roadmap.
This rendering engine supports the following Vue features:
- data model
- dynamically rendering components from any organization
- Vuetify plus some additional system components
(Quasar support coming soon)
- read and write to a simple CloudHaven db (for backend-less prototypes)
- HTTP Gets and Posts to the application or components registered back end
- CloudHaven-native messaging, workflow and calendar
- More (see the API Guide)
Hosting Applications from Multiple Organizations
Multiple organizations can host applications as well as components and mixins on the CloudHaven platform. For these applications, CloudHaven provides the following:
- Dynamic rendering of the UI from a Vue-based json schema
- Ability to create multi-organization composite applications
- User management and authentication
- App Store where users can search for and subscribe to applications
- Per organization access control in the App Store
- “My Apps” area for user to easily access subscribed apps
- CloudHaven system API
- Tightly-integrated messaging, workflow queues and calendar
Composites UIs of Components from many Organizations
Not only does the UI Engine enable dynamic loading of application UIs, but it also makes it possible to build applications that are seamless composites of components from many organizations. This opens up enormous possibilities for sophisticated collaboration. For example, it would make it possible to create healthcare systems where many different organizations can easily and seamlessly collaborate around a patient case, all under a single user base/login.
Similarly, applications can be embedded in CloudHaven’s own messaging (message), workflow (task) and calendar (event) content.
Configurable Backend for each Application or Component
Organizations can configure each application or component to have its own backend by registering a URL to their corresponding application server. These backends can provide UI Engine json as well as application logic via system functions that perform HTTP GETS and POSTS to these backends. Alternatively, applications and components can be configured to get UI Engine json and application logic from a local text blob stored in CloudHaven (good for prototyping but not recommended for production applications).
Simplified UI Development with Rapid Deployment
The json schema that drives the UI Engine is simple and easy to understand. It very closely matches the structures in Vue: dataModel, life cycle events, methods, computeds, watch and filters. It also contains a “uiSchema” property that defines the hierarchy of components that comprise the UI of the application (or component). See the API Programmers Guide for more details.
An intelligent editor is provided that assists with building the UI Engine json. It can be used to find and insert both system functions and components from a list of available. For components, available props, slots and events can also be selected. Additionally, dynamic components (those built in CloudHaven by other organizations) can be searched for by name filter or key word, and inserted (also includes selection of any props, slots and events registered for that component).
This model makes for rapid development and deployment. Development doesn’t involve any of the typical toolchain required for creation of Vue front-ends (Vue CLI, nodejs/express, webpack, babel, etc.), nor do developers need to be concerned with maintaining versions of Vue or its dependencies. Deployment is as quick as selecting “Publish” in the CloudHaven record for the application or component.
System functions are provided in the following areas:
- Data Storage
- Communicating with the application server
- Searching, reading and writing CloudHaven-stored user data/files
- Navigation between application “pages”
- Sending messages or queuing workflow tasks
- Manipulating the calendar
Common User-base & Personal Data Control
Since CloudHaven provides the “front end” for many applications, it is a natural place to store and manage user data. User data that is incoming can essentially be “intercepted” and stored in CloudHaven rather than in the application’s back end servers (which makes it easier for that organization to comply with HIPAA or GDPR regulations). Once stored in CloudHaven, applications can request that user data be displayed on their behalf. This is done though a combination of CloudHaven’s own collaboration components and system methods for reading from and writing user data to CloudHaven (see the API programmers guide).
User data includes files – currently CloudHaven can store and provide a viewer component for the following file types:
- Image (all browser compatible images)
- Docx (Microsoft Word documents)
Common communication, workflow and calendar
With a common user-base, its easier for users to communicate and collaborate with each other regardless of which applications they are using.
To that end, CloudHaven has a number of built-in collaboration components that can be embedded, context-sensitively, in application UIs:
- conversation (comment threads)
- messaging (like email)
For example, an application could include an image, like an x-ray, along with an associated conversation component to create a discussion among all relevant parties about that x-ray – regardless of which organization they’re a member of or application they are a user of.
The “Conversation” component that can be embedded in any application and configured to manage a conversation for a specific application, page and topic. For example, there could be a conversation around an image displayed in the page.
CloudHaven provides a secure message system (like email) whereby users can send messages to each other regardless of which vendor’s application those users have subscribed to.
The API provides a system method for applications to send these messages including the ability to embed applications directly in the message. For example, a patient management system may need to get an authorization for an insurance company. Such an application could send a message with the insurance companies own “Get Authorization” application embedded directly in the message.
Similar to messages, the API also provides system methods for creating tasks and assigning them to workflow queues (groups). Such tasks appear in the “Unassigned Tasks” list for members of the group. These tasks can then be grabbed by members of the group on a First-Come-First-Serve basis at which point the task is moved to that users “My Tasks” list. Again, an application that can fulfill that task can be embedded directly into a task. Additionally, workflow tasks have the ability (via another system method) to be marked done and a result message assigned that can be reviewed at a later time.
CloudHaven provides a calendar that can be managed manually by users or through API methods available to applications and components. When events are submitted programmatically, an application can be embedded directly in the calendar event. Note that, calendar events can be submitted across vendor applications.