How are applications built with Apex Designer hosted?
When you use Apex Designer to develop an application, you can host it in the Apex cloud, or take care of hosting yourself.
For self-hosting, when development is complete, the generated source code is pushed to your source control system (GitHub, BitBucket or another other Git-based system). The production container image is built using normal CI/CD processes (BitBucket pipelines or Docker Hub builds for example).
The resulting containerized app can be run on prem using Kubernetes (AWS EKS, Digital Ocean Kubernetes, etc.) or other container orchestration tools (AWS ECS for example). There is a Helm Chart library that generates Helm charts as part of the app or a Terraform library that generates Terraform files for the app.
We also have experience in building administrative UIs that deploy customer or project specific instances of an application using the Kubernetes API directly from an Apex Designer app.
How do I debug and monitor an application developed with Apex Designer?
During development, you can view and analyze the app’s logs through the UI in App Manager.
For production, the generated application is a containerized Node.js app. You can manage logs and monitor application health using standard K8 / Node.js capabilities.
We use the NPM debug package extensively in our apps. This lets you put debugging into the application that can be configured at run time. This is super helpful both during development and in production. We often include an administrator option in the app to adjust the debug configuration on the fly in production.
How can I use an external database for a new app instead of the default cloud one?
When you create a project (app) in Apex Designer and provision an App Manager in the Apex Cloud, a unique database and user in a shared AWS RDS Postgres instance are created for your app. The connection details for that database are added to the app manager environment variables.
If you want to run with a different Postgres database, you can simply update the environment variables to point to that database (it will need to be cloud accessible).
If you run an App Manager in your own K8 environment or on your local machine, you can access databases that are not cloud accessible.
If you want to use a different type of database (SQL Server for example), you will just change the connector for your app and provide the connection string details.
How is the database schema managed for my application?
When your application built with Apex Designer launches, it includes an “Update Schema” behavior that uses the business objects, properties and relationships of the application to generate the appropriate create and alter scripts. It manages tables, indexes and foreign keys automatically.
If you run the application against a new database, this update schema behavior will automatically create the database tables, indexes, etc. The schema management leverages the generated Loopback data model and is included in the build of your application, so it will work wherever the application is hosted (or even if it is exported).
Does Apex Designer support SAML and Active Directory?
Apex Designer apps use an authentication pattern that can be implemented using various identity sources. There are standard libraries for Auth0 and Cognito. We have developed client-specific implementations for Ping and SAML.
You can develop (or we can develop for you) a library to connect to whatever source you need.
How can I expose an API for an external system?
Some or all of the app’s REST API can be accessed by other systems. You can control this with various authentication techniques (machine to machine tokens, API keys, etc).
You can also implement Webhooks and socket.io connections for other applications to communicate with your app. We have also consumed messages from other applications through Kafka.
Does Apex Designer handle security related request headers?
Generated apps use the Helmet NPM package to configure various security headers. Clear-Site-Data can be set with using an app or business object behavior when the user logs out.
How do Apex Designer apps integrate with Camunda APIs and callbacks?
For Camunda 7 (and Camunda 8), we use the “External Task Pattern” (you can read more about it here. In this pattern, the process engine is run in separate containers from the application itself. When the Camunda engine reaches an external system task, it waits for an application to claim that task and complete it. This provides lots of flexibility in designing the orchestration. The Apex Designer app can handle all of the system tasks or leave some or all of them for external systems to handle.
Can I Jump start a traditional development project using Apex Designer?
There is no design time lock in with Apex Designer. You can always download the source code and continue development using IDEs. The downloaded source code includes components specific to your project as well as the components coming from the underlying Apex Designer libraries.
While it would be possible to scaffold a complete application in Apex Designer and then export it for continued development, we believe that after you experience the productivity of Apex Designer, you will find that the preferred approach will be to stay in Apex Designer.
Can I use Apex Designer for back end development and traditional development for the front end?
Yes, the API generated by Apex Designer could be called by UIs developed outside of Apex Designer, however you would lose out on the productivity gains of having these APIs integrated into your UIs automatically.
Can I use Apex Designer to build the data model, back-end, and management UIs, and use traditional development to build the front end for end-users?
This is also possible. The API that is generated for the Apex Designer application could be called by both the Admin UI and the end user application.
This is the path that we started on with another partner consulting company. After a week or two of development work, they decided to do both the end user app and the management app entirely in Apex Designer.
How can I integrating Externally Developed Angular Components?
There are at least two ways that you can accomplish this. The first is to have a set of static source files in Apex Designer that are developed outside Apex Designer using an IDE. We use this for a handful of low level components in some of the libraries today. The editing can be done in an external IDE and then uploaded. The editing could also be done in the web-based IDE that is part of Apex Designer.
The second approach would be to package the components as an NPM module and import them into the Apex Designer app. This is how we use things like Angular Material components.