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

In Walhall, these microservices are called 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:

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.


You can also add blueprints to your Walhall application. These are blank services and clients that are pre-configured to work with Walhall but open for you to code.

We currently offer the following blueprints:

Blueprint services

Blueprint clients

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 backend service. Some of them will include a frontend, indicated by a checkbox labeled Include Frontend.

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 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.

To use a blueprint in your application:

  1. Follow the instructions for creating an application.
  2. When you get to the logic modules screen, scroll down to the section labeled Blueprints.
    Screenshot: Where to find blueprints for your Walhall application
  3. A list of blueprints will load. Enter a name in the text field of 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

When you fork a service blueprint, you don’t need to do any pre-configuration—Walhall takes care of the CI/CD, and the blueprint comes configured to communicate with your application’s API via BiFRost. All you need to do is clone the repository and code the service.

The README for each service blueprint contains information about 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

Some pre-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.