Skip to main content

Quick Start

How to create a ToDo App with BL

Creating a To Do App as example

Project structure

BL needs an input folder with a setup.bl file and the essential controllers of the use cases which will be transpiled.

The structure of the input folder must be as the following:

📦 .
 ┣ 📂To Do App                # Bounded Context Name
 ┃ ┗ 📂To Do                  # Module Name
 ┃ ┃ ┗ 📂Use Cases            # Standard Name (Do not change!)
 ┃ ┃ ┃ ┗ 📂Add To Do          # Use Case
 ┃ ┃ ┃ ┃ ┗ 📜controller.bl
 ┃ ┃ ┃ ┗ 📂 ...	              # Another Use Case
 ┗ 📜setup.bl

setup.bl file

Setup file must be located in the root directory of the input folder.

Format

Language configuration (optional)

Configure which language the bl will be transpiled to. Fow now, only TypeScript-Nest is supported and it is selected by default.
More languages to follow.

Config.setLanguage(TypeScript - Nest);
Router definition (REST)

Declare your router and assign to it a router expression as the example:

const toDoRESTRouter = RESTRouter(REST.Fastify) {
  Get('/add'): [To Do App][To Do]AddToDoRESTController();
// <Method>(<Path>): [<Bounded Context>][<Module>]<Controller>();
};

In accordance with Domain-Driven-Development principles, due to the ubiquitous language, use cases and controllers must have unique names.

Server expression (REST)

Instantiate your server and bind routes as the example:

RESTServer({
  server: REST.Fastify,
  port: env.FASTIFY_PORT || 5001,
  apiPrefix: '/api',
}) {
  '/todo': toDoRESTRouter;
};

controller.bl file

Controller file must be located in the directory of the Use Case it coordinates.

Format

Controller expression (REST)

Declare and instantiate your controller as the example:

RESTController HelloWorldController () {
  method: REST.Methods.GET;
  execute(request, response) {
    this.ok(response, 'To Do added!');
  }
};