Marketplace

The Walhall marketplace is a hub for reusing microservices in your Walhall application and for publishing your own.

In Walhall, these microservices are known as logic modules.

What are logic modules?

Logic modules provide the basic features of a Walhall application. Each logic module is a set of business logic implemented as a backend service and a frontend client.

Some examples of logic modules:

  • Documents module: Enables your users to upload and manage documents in your application.
  • Products module: Enables your users to manage products in your app.
  • CRM module: Provides the basic CRM functionality that is crucial to an e-commerce application.

Logic modules are the backbone of your application’s microservice architecture. The source code for each logic module you selected from the marketplace is forked to your GitHub repository, so you can customize each of them to fit the needs of your application.

To see the logic modules that are already in the marketplace, click the Market tab in the top header of Walhall.

Reuse logic modules in your application

You can add logic modules to your application during the creation process.

Each logic module in the list will include a service, but some of them will include a client, which will be indicated by a checkbox labeled “Include Client.” These are the backend and the frontend of the logic module, respectively.

Screenshot: List of logic modules

Once you’ve added a logic module, it will be implemented in your application immediately – no extra setup required.

In the top left of this screen, you’ll see the option to choose your frontend stack. This will filter the list to show only the logic modules with frontend clients in your preferred stack.

Customize a logic module

When you add a logic module to your Walhall application, the source code will be forked to your GitHub account. From there, you can modify the source code to fit your application’s needs.

You’ll get one repository for the logic module’s service and one for its client. These repositories follow a specific naming convention: {name-of-module}_{service/client}_{stack}.

Screenshot: repositories forked to your GitHub account by Walhall

See the README of each service/client repository (or one of the links to the left of this page) for more information about the logic module’s implementation details.

Make your own logic module

You can create your own logic module from one of our client and service blueprints: boilerplate code that’s pre-configured to work with BiFrost and the Walhall CI/CD pipeline.

To use a blueprint in your application:

  1. Follow the instructions for creating an application.
  2. When you get to the logic modules screen, click the select field in the top left of the screen labeled Type. Then, select Blueprints.
    Screenshot: Where to find blueprints for your Walhall application
  3. A list of blueprints will load. Enter a name for the blueprint that you want to use and click Add. The name you enter here will be given to the forked blueprint repository.

When you click Create application, the repository for each blueprint you added will be forked to your GitHub account.

Create a service from a blueprint

We currently offer the following service blueprints:

When you fork a service blueprint, you don’t need to do any sort of setup—Walhall takes care of all that for you. All you need to do is clone the repository and code the service logic.

The README for each service blueprint contains information about how the service connects to BiFrost and how it uses the core data model.

Reserved names

The following endpoint names are reserved by BiFrost:

  • /admin
  • /complete
  • /core
  • /disconnect
  • /docs
  • /graphql
  • /group
  • /health_check
  • /logicmodule
  • /milestone
  • /oauth
  • /organization
  • /static
  • /user
  • /workflow

Create a client from a blueprint

We currently offer the following client blueprints:

Some configuration is necessary when you use a client blueprint:

  1. Clone the client blueprint and application root repositories.
  2. Open your terminal, navigate to your application root repository, and run npm run init. This will clone the blueprint to your /clients directory and connect it with Midgard.
  3. Now an empty client is set up, but you need to connect it to a service. Change the following default values:
    • The API URL is set to the one provided for your Wahlall application. In Angular, you can change this in /src/lib/state/client.epics.ts.
    • The data model in all service requests is called client. You have to change this based on which data model your client needs to access.