The new user interface feature introduces the side-by-side view of the selected list item on the wide screen. This type of presentation is commonly found in the email readers and task management applications.
By default, the list of items is not accessible when a modal form is displayed, even though it is visible to the end user.
The reading pane mode allows interaction with the list of items while the form is open. We are able to deliver a seamless integration of the reading pane through the changes in the modal form presentation mechanism.
The reading pane requires zero configuration. Developers can disable the side-by-side display and force the modal presentation at all times.
Code On Time app builder makes it possible to create a single application that works both online and offline. Online access is available in modern web browsers. Use the free Cloud On Time app as an alternative to web browsers on popular mobile platforms.
Cloud On Time app installs the front-end of an online application created with Code On Time to the device. It performs HTTP requests to read/write data on behalf of the front-end. The app also provides access to the device storage, camera, and location sensors. If Offline Sync Add-On is enabled in the online application, then Cloud On Time app also downloads the data linked to the pages marked as “offline”. Cloud On Time continues to work with the offline data until the synchronization with the online application is requested by the end user.
Cloud On Time app is available in the major app stores. Use the app to test custom applications created with Code On Time or run them in production mode.
White-label clones of Cloud On Time app will allow developers to promote their own brand in the app stores or to side-load apps in an enterprise environment.
Built-in barcode scan detection is the integral part of application framework. Hand-held barcode scanners register as keyboards emitting rapid sequences of characters representing the scanned code. The framework automatically detects the rapid input of keys and triggers the system barcodescan.app event. This makes possible instant integration of hand-held barcode scanners, QR code scanners, and RFID readers.
The framework responds to the barcode scan event if a data field is tagged as barcode or barcode-select. If the view is in the “read” mode, then the matching data item is located and optionally selected. If the user is entering data, then the barcode value is automatically populated in the corresponding data field. If a view is tagged as barcode then the Calculate action is triggered giving developers a chance to perform custom processing of the scanned code with the business rules.
Developers can control the sensitivity of rapid key input detection or specify the prefix and the suffix triggering the rapid key input sequence.
Cloud On Time app offers custom applications an additional option to scan on the devices with the built-in or attached cameras. If the barcode tag is detected in the data view configuration, then the Scan action becomes available to the end user. This action displays the camera preview and automatically captures the barcode reported by barcode recognition software of the operating system. If a barcode is scanned by the camera, then the same barcodescan.app event is triggered and processed as it would be for the hand-held scanner.
Presently Cloud On Time app is available for iOS, Mac OS, Windows 10, and Windows 7 platforms. Support for Android will extend the range of the supported mobile platforms.
App generator can publish your application to the File System, FTP server, or Microsoft Azure. The App Store option is revealed on the Publish screen as soon as the application has been published.
If the “App Store” option is selected, then the app generator will activate https://my.codeontime.com portal with the production and development URLs of the app passed in the parameters. Developer will complete or modify the online questionnaire describing the white-label app configuration for each supported platform.
The portal background processor will clone the current version of Cloud On Time app source code for the requested platform, customize it according to the questionnaire, and compile the distribution package. The name of the app is derived from the project name.The list of native whitle-label apps will be available for download in the portal to the members of the organization. Developers will either side-load the apps or submit them to the app stores for sale/distribution.
The white-label version of the Cloud On Time app automatically connects to the application backend at the production URL specified in the Publish options. If the end user of the white-label app has the “Developers” role, then the user account menu allows selecting Online, Development and Staging instances of the application backend.
The whilte-label clone of the Cloud On Time app will execute in offline mode if Offline Sync Add-On is enabled in the application.
The lightweight generic REST API will be integrated in the application framework. The framework will include the implementation of Google Drive API v3 built on top of the generic foundation.
The new Content Maker Add-on will sync the document files in the specific online drive folders with the Content Management System of the application.
The screenshot shows the sample folder structure compatible with the addon.
Documents (*.docx, *.odt, etc.) will be downloaded in Open Document Format, parsed, compiled into HTML and stored in the CMS. The folder names will inform the application framework on how to interpret the HTML. For example, documents retrieved from ~/blog will appear under the corresponding URLs of applications as blog entries. Images contained in the online documents will be extracted and persisted in the CMS. Cross-references in the documents will be resolved. Content marked with the special tags will be processed and converted into image galleries, code samples, etc. The presentation of content will be formatted for the Bootstrap framework integrated in the Touch UI.
Application end users will create high quality content using Microsoft Word or online document editor available in Google Drive on a variety of devices and platforms. Spell checking, group document editing, online backup, and support on mobile devices will make content creation a breeze.
The concept of the content decoupled from the application is referred to as “headless CMS”. Your organization will own the content with an option to have it integrated in the apps created with Code On Time.
The follow-up releases on Content Maker Add-on will support the plain file system, Microsoft Office 365, and SharePoint as the source of documents.
Our internal purpose for this addon is to move the documentation system from the database to the cloud storage and have it replicated to https://my.codeontime.com and https://codeontime.com.. We will migrate http://my.codeontime.com and the support system to https://my.codeontime.com. Each comment and ticket will end up as “*.odt” document in our Google drive. Content Maker will support the corresponding rendering styles best suited for community and ticket-based support systems. The portal CMS will store the parsed copy of the content. New tickets and comments will be pushed to the cloud. The addon will provide a robust publishing mechanism for rapid delivery of up-to-date documentation.
With a single click you will be able to integrate blogging, news, forums, support system, and documentation library into your own apps. Just install the CMS support in the database and enable the Content Maker Add-on.
The addon has two physical components. One is the DLL installed in the application. Its purpose is to render the content stored in the CMS using a style such as blog entry, support ticket, news article, documentation page, etc. The second component is the cross platform command line utility executed on schedule to synchronize the content between the online storage and the application. The cloud drive credentials are stored in the CMS of the application. The utility obtains the access tokens from the app, scans the cloud content for changes, parses the contents, and persists the compiled resources to the CMS. It also pulls the new support tickets and community posts from the CMS of the app and pushes them to the cloud drive in .odt format.
Permission-based access control list (ACL) is the built-in feature of the application framework. It ensures the complete lock down of application and requires the explicit exposure of data and functionality to specific user roles through permissions. Ability to access pages, to read, update, insert, and delete records is disabled if ACL is activated.
The lock down approach is more secure than the traditional restrictive method of hiding features and data. If the ACL configuration mistake is made by developers, then the data and features are under-exposed to the users. The traditional restrictive security model may reveal data unintentionally when the application is changed and a new revision is deployed.
ACL Editor will introduce the built-in visual security matrix that presents permissions as rows and roles as columns. Developers will use the ACL Editor to assign permissions to the user roles at design time. The default association of permissions and user roles is persisted in ~/acl.json file in the application code base. New associations and permissions created by application Administrators at runtime are stored in the CMS of the app.The framework merges the default ACL with the runtime ACL.
Survey Add-on will make it possible to build apps that allow collecting structured data in the surveys designed at runtime and stored in the database. These are just a few use cases for the addon:
The screenshot of the sample survey is shown in the picture.
This is the definition of the survey stored in ~/js/surveys/survey1.js file.
Questions may reference data controllers of the application.
Application framework automatically displays the survey in the response to an action with the Confirmation property defined as:
Values collected in the survey are available to the business rule developers when referenced as special fields with Parameters_ prefix:
Survey Add-on will make it possible configuring a simple and powerful auditing system with just the two tables.
The desired survey will be assigned to an audit through Audits.SurveyID column when the end user is creating an Audit record.
The application framework will rely on the survey-form and survey-data tags to activate the survey form and persist the collected data in JSON format to the database. Developer will tag the borrowed Audits.SurveyDefinition data field as survey-form and Audits.Response data field as survey-data in the Audits data controller. This will activate the addon.
Application framework will display the progress button for the Audits.Response data field at runtime, when an audit record is displayed in the form. The button will show the level of audit completion. If the button is pressed, then the survey is displayed with the previously collected data. If the survey form is saved, then the collected values are persisted to the survey-data field as a JSON document.
Surveys are rendered by the forms engine of Touch UI. The survey form does not need to be fully completed in order to save. The button representing the survey data in the Audit form will show the progress of completion.
The survey definition will also support mapping of the questions to the fields of application data controllers. If the mappings are detected, then the answers to the questions are persisted to the corresponding data tables automatically. Developers can also parse the JSON response on their own to process the collected information as needed.
Survey engine of the application framework will be extended to allow master-detail surveys through the new question type “survey”. It will complement the existing “text”, “date”, “number”, and “bool” types of questions. The developer will simply enter the name of another survey in the type of the question.
The “survey” question will be displayed as a list of items in the survey form. Developer will specify the minimum and maximum number of items that must be entered for the survey to be completed. Question items will be persisted in the JSON data as an array of objects.
Naturally the “detail” surveys may have their own questions of “survey” type, which allows collecting datasets of any complexity.
The survey with the “survey” questions is equivalent to the data controller with the DataView fields. It behaves in exactly the same way but is not based on physical data tables. Offline Data Processor (ODP) makes the questions of the “survey” type possible.
The survey data is not displayed to the user in the raw format if the data field is marked with survey-data tag. Instead a button with the survey completion progress is rendered. Users will click on the button to activate the survey form.
Touch UI API will be extended to make it easy adding custom input controls. Survey button is one example of such input control.
Another input control will be introduced along with the Survey Add-on. The virtual numeric keyboard will be displayed when the end user is entering numeric values in the survey or any other form of the app.
Touch UI uses the native “number” input of HTML 5 when rendering editable numeric values on the mobile platforms. The native implementation of “number” input causes the mobile operating systems to display a numeric keyboard to make it easier to enter numbers. Unfortunately the standard for “number” input is very strict and permits only the numeric characters and the “period” to be entered. The “comma” character is used in many cultures as a decimal point, making it difficult for the end users to enter numbers. Also the keyboard is displayed at the bottom of the mobile device, which is not optimal in long forms on a large screen forcing the user to look away from the input towards the keyboard.
The new virtual keyboard of Touch UI will be displayed right next to the numeric inputs on touch screens with the national character keys for the groups and decimal point. This will make it easier to complete long survey forms with multiple questions requiring a numeric answer.
The text input will not be rendered for the editable data field marked with the survey-form tag . The “View” button will be rendered instead. The live survey form will be presented to the end user if the button is pressed. Survey Add-on will activate the design environment on top of the live survey upon request from the end user. The survey design environment will share the code base with the live design environment of the upcoming Code On Time v9. The survey structure will be displayed in the Project Explorer and the properties of the selected element will be visible in the Properties Window. Changes to many properties and drag & drop operations will result in immediate user interface feedback. The toolbox with the supported survey elements will allow dragging new components to the survey form.
WYSIWYG survey designer will simplify the management of survey forms at runtime. Changed survey definition will be saved directly to the database.
The upcoming major revision of Code On Time app builder will introduce two major enhancements to the only product on the market that allows creating a single application working both in online and offline mode.
Code On Time v9 will feature a Project Designer embedded directly in the live application and will support multiple database connections.
Projects created with v8 are based on a single database connection. CoT v9 will allow specifying any number of database connections. The unified data schema of the project will include the entities from all connected databases.
This is the current development workflow in Code On Time v8:
Code On Time v9 is fully compatible with the projects created with v8.
The development workflow will change significantly:
The new design environment is implemented as an addon. The app generator will include addon.appbuilder.dll in the ~/bin folder of the application. The published version of the app does not include the addon. The addon is metadata driven. It invokes the app generator in command line mode in response to the developer actions to rebuild the application as needed.
The subset of the new design environment is also incorporated in the Survey Add-on to implement the Visual Survey Editor.
Touch UI is the primary interface of applications created with Code On Time app builder. It responds to the touch and works with the mouse on the devices in the hands of the end users. Developers also need to interface with the applications when writing business rules and building custom solutions.
Application framework will be extended with the native implementation of Graph QL, the data query language pioneered by Facebook . Developers will describe the shape of data they need and the application will dynamically fulfill the request and return the result in JSON format.
Incomings requests must be authenticated by the application components on the server. The front-end of the app created with Code On Time is passing the Bearer token in the HTTP header of each request. The access token is decoded by the server components of the app to establish the user identity. Access token expires after a specified period of time, which results in “401 Unauthorized” status code returned to the client. Client-side components of application seamlessly renew the access token by submitting the refresh token to the app.The original request to read/write data is resubmitted with the new access token after successful renewal.
If you are developing an external solution making requests to an application created with Code On Time, then you will be able to use the new endpoint _invoke/auth. Just post the following payload to to the end point to obtain access and refresh tokens.
If the user identity is confirmed, then acces_token and refresh_token are returned.
Specify the access token in the Bearer header variable of your requests to read/write data. If a “401 Unauthorized” response is returned by application, then post the refresh_token value to _invoke/auth endpoint to get a new access token. Resubmit your request with the new access token in the HTTP header.
The new authentication service provides a modern and secure method of authentication for solution developers. It also makes it possible to use tools such as Postman to create and debug queries in Graph QL language.
This is an example of Graph QL query in the Postman user interface.
If this query is posted to _invoke/query endpoint of the application along with with the access token in the HTTP header, then the following JSON result is produced.
Inspect the query and compare it to the data items in the result. The shape of query and the shape of data items are a complete match.
Graph QL language has been invented by engineers at Facebook to simply interfacing with the numerous application servers. The API of each server is described by a collection of query types, mutations, and input types, known as a schema. Developers must create a custom Graph QL server for their projects and implement each element of the schema to make a request to the external application servers, databases, or object stores. Graph QL server instance provides a special playground for developers to rapidly design queries with code completion and instant preview of results.
Data Aquarium framework is the foundation of the server-side code of applications created with Code On Time app builder. It has been designed with a similar philosophy in mind. We had to solve a problem of interfacing with numerous database entities populating a typical database. Client application makes a request to get a page of data. The response is produced with the help of data controllers. This is resembling the queries in Graph QL. Applications execute actions to change data. The responses are produced with the help of data controllers. This is equivalent to the mutations in Graph QL.
There will be no need to configure and run a Graph QL server in order to interface with the application created with Code On Time. Your application is the server that natively handles all requests and produces the results, thanks to the built-in Graph QL engine. Your application also provides the corresponding Graph QL schema. The schema is automatically composed from the data controllers. Use Postman or other similar tools to rapidly develop Graph QL queries for your app whether you are writing business rules or building complex solutions.
Touch UI framework provides the end users with an interactive graphical user interface.
Graph QL engine provides the developers with the query language and powerful tools.
What if you don’t have a screen to touch and do not know how to write code?
Assistant UI Add-on will make it possible to send informal queries to the app created with Code On Time and get intelligent responses.
The dedicated Assistant action will be available in the GUI of the app when Assistant UI addon is enabled. The action will bring up a chat window.
The end user will enter an arbitrary query in the natural language. Application framework will pass the query to the addon for processing. Assistant UI will translate the user request into a Graph QL query. The result will be presented to the user in the text format. The addon will maintain a workspace for the user and allow composing complex queries and data mutations by maintaining a conversation with the end user.
The addon will respond to the emails! The end user will email the query to a predefined email address. The cloud-based email agent of Assistant UI will monitor the mailbox and identify the users by their email address. The response will be sent back as a reply.
The addon will respond to the messages! The end user will text the query to the predefined phone number. The messaging agent of Assistant UI will identify the user by their phone number. The agent will text back to the user with the result.
The addon will respond to the voice commands given through the voice assistants! The end user will activate the Assistant UI agent on the voice-enabled device. The voice commands from the user will summon the agent. The voice agent will identify the user by their email address or phone number. The request will be delivered to the application as a text query and the response will be voiced over to the end user.
Chat, Email, SMS, and Voice agents are hosted in our cloud. Administrator of an app with Assistant UI Add-on will create a registration record in the cloud. The cloud-based agent service will obtain the phone number, email address, access token, and refresh token for the users from the registered app. The tokens and the hashed values of email addresses and phone numbers will be stored in the cloud. The agents will hash the email or phone number of the incoming request and match the user in the cloud database. Then the agents will pre-process the queries from the end user, pass them for execution to the application along with the access token, and return the results without persisting any data. The physical execution of queries will be performed by the applications. The state of the conversion with the end user will be persisted in the workspace of the application. Application administrators can invalidate the access and refresh tokens at any time.
The agents will have the specific email address and the phone number assigned to them. The end users will always contact this address and number with their queries. If more than one app is available to the matched user identity, then the agent will ask the user to choose the app before a request is processed.
All agents will be available in the public cloud and also offered for private hosting.
Custom applications created with Code On Time can be instantly protected with a membership system derived from the database schema designed by Microsoft. Membership Manager is included in the generated app to allow maintenance of users and roles at runtime.
The new database schema will be introduced to replace the legacy membership system. The app generator will upgrade the database without loss of data and replace the standard membership manager in the existing projects. New projects will have Cloud Identity as the default option for user and role management. App generator will continue to offer support for custom membership providers, Active Directory, and Open Authentication.
Built-in identity managers will offer enhanced options to view and maintain access tokens and refresh tokens associated with the user identities. External applications will need to be registered in the cloud identity tables of the app database. The host application will also have its own registration record. Administrators will enjoy the deep insight in the security related activities of the app.
Cloud Identity will make it possible to create an application to serve as an identity provider for other applications created with Code On Time. Developers can create a suite of custom apps operating as identity consumers. Identities of users will be confirmed by the “identity provider” application. Administrators will manage users, roles, and Access Control List in the “identity provider” application. OAuth providers can be configured once in the “identity provider” application and consumed from the other customs apps in the suite.
These are the items that we expect to work on in 2021.
The cloud version of Code On Time with a live design environment will be launched.
The hosted version will have a simple subscription pricing model to facilitate the low code rapid application development without making a long-term commitment. Custom applications will be developed and hosted in the cloud. Cloud On Time app, white-label apps, Offline Sync Add-on, Survey Add-on, Content Maker Add-on, and Assistant UI Add-on will be offered as an option.
The cloud database will have an online schema designer, integrated with the model builder.
We expect to offer the cloud app builder for private hosting.
Application Framework will be refactored to externalize components of ASP.NET into a separate set of classes. We will implement the .NET Core version of those classes. Target framework “.NET Core” will become available as an option to app developers..
Migration of the application framework to .NET Core and embedded live design environment opens up a road to multi-platform CoT v10. The command line version of the app generator will be refactored for .NET Core. Developers will be able to create mobile and online apps on Windows, Mac OS, and Linux.
We will continue introducing the new features of Touch UI in 2020 and 2021. The goal is to have the 3rd iteration of Touch UI by the end of 2021 in production apps.
Forms will support navigation between records without the need to select a record in the grid/list/cards/map. It will become possible to setup a form view style as the primary presentation mode.
The default form view editForm1 will switch to the search input mode that allows entering a sample of data. Application will find the matches and either let the user to navigate the result of search in the form or display grid1 view instead.
The new high performance “true” scrolling both in vertical and horizontal direction will be supported.
The end user will have an option to change the order of visible columns and manage custom filter sets with sorting and grouping expressions for each view.
Grid-in-grid presentation with infinite levels of nesting will be supported. This feature is being implemented as a component of hyper-scrolling.
An item presented in Grid/List/Cards style will have an “expand” icon if there are DataView data fields in the view of the controller. The expansion of an item will reveal the “drawer” area of the item with the fully functional instances of the corresponding data views. The child data views may have their own drawers with infinite depth.
The self-referencing child DataView field of a controller will effectively provide a hierarchical presentation reflecting the tree of the relationships.
Additional action group scopes will introduce swiping gestures and permit promoting certain actions.
It is possible to create data controllers based on arbitrary data sources in CoT v8. We will extend the model builders beyond the SQL databases.
Any REST API or Graph QL application server will become a foundation for a data model. This will make it possible using Code On Time to create custom applications on top of existing application ecosystems.
Microsoft made it a de-facto standard for application developers to use Entity Framework to access data. Code-first developers will be able to take advantage of Code On Time app builder though the data models based on Entity Framework. Application will treat the Entity Framework as internal API that does not require reaching outside of the application boundaries.
We will create a unified model builder for NoSql data stores, such as Mongo DB.
Online Store is a popular design pattern in business applications. We will offer an addon that will make it easy to configure a custom collection of data controllers in a storefront similar to Amazon. Many business use cases require the end users to browse a selection of products, placing them in shopping cart, and checking out orders.
The new addon will allow identifying data controllers as catalogs of products, shoppings carts, and orders. The addon will render a store front and use the data controllers to manipulate data.