Apex Designer users use visual models with type-ahead and other assists to design the desired application, including information models, process models, user experiences and server-side behaviors. The application code can be generated incrementally as changes are made. Apex Designer has native branch capabilities, allowing multiple team members to work on the same artifacts at the same time with fine-grained tools for merging changes back into the master.
Apex Designer generates client-side source files for an Angular single page web app (SPA) using configurable templates. It generates server-side source files for a Node.js back end using the Loopback framework. To date all projects have been built in Angular, but React templates are in development and initial testing is complete.
Apex Designer comes with a selection of libraries containing design artifacts for application generation as well as capabilities such as authentication, integration to external systems like Salesforce or Box, SMS and email messaging, and many others. Users can create custom libraries to share capabilities across multiple projects and maintain standards. Open source libraries from npmjs.org (the worlds largest open source software library) can be included in applications in a single click, and many capabilities can quickly be added in this way.
App Manager is the build/run environment used during development of an Apex Designer app. Each app (and branch of an app) has an App Manager. App Manager retrieves the generated source files from Apex Designer, builds the client and server apps, runs the app and provides access to logs. App Managers are provisioned on the cloud by default but they can also be run locally or on an on-premises server.
By default, generated applications use a Postgresql database for persistence. Loopback 4 supports all major database flavors as well as other connectors such as REST and SOAP. Generating the application automatically updates the schema of the database to support the information model defined. Additional views and indexes can be added as needed via the Apex Designer client.
Generated applications have basic authentication (email and password) managed within the application, but can be easily integrated with a third party identity provider. Our default is Auth0 but Active Directory, Ping and others have also been used.
Apex Designer has integrated process modeling which pushes process definitions to Camunda for execution in the Camunda process engine. Apex has a specific build of Camunda that includes a multi-tenant pattern with Auth0 machine to machine authentication so that each app and branch of the app can run without disturbing the other apps and branches.
Apex Designer pushes metadata and generated source files to Git (including specific branches if needed). Automated build and deployment pipelines have been developed using several different technologies. Client-side and server-side files can be packaged as a Docker image and checked into a container repository for deployment.
The code generation templates in Apex Designer are content in a library and as such can be modified if different standards for implementation are desired. Custom server side behaviors and endpoints can be built. These require some typescript capabilities but wherever code is required in Apex Designer, the Monaco editor plug-in is used for error checking and formatting. Any generated file in Apex Designer can be overridden to allow a customized implementation. This means applications are not restricted from using any capability of Node/Angular.
Angular incorporates responsive design features for making applications function on any screen size. Progressive Web Apps (PWA) can be generated to give a more native app-like experience on mobile devices.
Loopback uses Loopback Connectors to access relational databases safely using parameterized queries to avoid SQL injection.
Authentication can be handled by external services (i.e. Auth0, Ping), on-prem SSO, or the built in user management in Loopback. In all cases, the access token has an application-specified expiration. Access tokens can be secured using cookies that are domain specific, http-only and signed to prevent modifications. They can also be managed in JSON Web Tokens and local storage.
The Loopback framework includes capabilities to remove sensitive data from responses so that it is never transferred from the server to the client. There are also capabilities to encrypt data before going to the database and decrypt it on the way back. If the load balancer does not handle automatic redirects to HTTPS, logic in the Loopback server can do that automatically. Passwords managed by the Loopback user management are encrypted using bcrypt.
Loopback APIs use JSON-based payloads by default. This eliminates the risk caused by xml external entities references.
The Loopback framework provides integrated access control that can be configured by the application in many ways. Users are assigned roles and roles have specified access levels for models (Products for example) or specified methods (create Product for example). There are also numerous patterns to controlling access to subsets of objects (my orders for example).
Apex Designer apps should be run on servers that are configured properly (certificates, etc). In addition, the Loopback framework supports production builds that hide server-side error messages. The Loopback framework is continuously updated to address any vulnerabilities that are discovered.
The Loopback framework leverages the Helmet xssFilter, frameguard, and many others. These are configurable on an application by application basis. Angular also helps with XSS by treating all values as untrusted by default and providing sanitizers to apply the appropriate level of trust to user entered values when applicable.
The client-side and server-side application dependencies are installed using NPM. NPM automatically checks for package vulnerabilities and provides information on how to correct them.
Application logs can be streamed to log analysis tools. Events can be published to Slack or other notification systems.