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!');
}
};