Documentation

BUUL: Smart Coding Platform (beta version)

Thank you so much for using our platform.


  • Created: 7 September, 2022
  • Update: 4 December, 2023

If you have any questions that are beyond the scope of this help file, Please feel free to email via Support Page.


Request Account

Follow the steps below to request your account:

  1. Go to buul.bitify.it page to find the request account form. You will need to fill all field and select the account plan.
    • Name: Eg. Mark
    • Surname: Eg. Williams
    • Email: example@bitify.it
    • Plan: Free Plan
  2. Click on Confirm button and if all goes well then you will see a succesfull message.
  3. You will recive your personal account credentials.
  4. Insert your credentials in the login page and you are done.

Create project

To create your first project you will have to follow simple steps:

  1. Go to projects page by clicking the button in the left side menu.
  2. Click on New button
  3. Select project type.
    • Monolithic
    • Microservices
  4. Insert all needed information.
    • Name: The project name.
    • Description: A project description to describe the project.
    • Group Id: will identify your project uniquely across all projects, so we need to enforce a naming schema. It has to follow the package name rules, what means that has to be at least as a domain name you control, and you can create as many subgroups as you want.
      eg. org.apache.maven, org.apache.commons
    • Artifact: You can choose whatever name you want with lowercase letters and no strange symbols.
  5. Click on Save button to create project.

Create microservice

To create a microservice with Buul is very simple:

  1. Go to project details page by clicking the button with eye icon.
  2. Click on Add button under Custom Microservices
  3. Insert microservice name.
  4. Click on Save button to create microservice.
  5. Go to microservice details page by clicking on microservice card.
  6. Click on Project Info to open microservice configuration. Here you could edit microservice parameters.
    • Name: By default is the same of parent project.
    • Description: By default is the same of parent project.
    • Group Id: By default is the same of parent project.
    • Artifact: By default is the same of parent project.
    • Port: By default is 8081 (8082, 8083 and so on for other microservices).
    • Company Name: By default is empty. This field will be used in the comments of code.
    • Author: By default is empty. This field will be used in the comments of code.
  7. Click on Edit button to enable edit mode.
  8. Click on Save button to persist your changes.

Create workitem

You can create microservice workitems and monolithic workitems in the same way.

  1. Go to project details page by clicking the button with eye icon.
  2. If your project is a monolithic architecture click on edit button and the workitem ADD button will appear.
    If your project is a microservices architecture, otherwise click on microservice card to go in details page, then click on edit button and the workitem ADD button will appear.
  3. Click on Add button under Workitems.
  4. Insert workitem name. You can also add an optional description.
  5. Click on Save button to create workitem.

If everything went well, you can now start to characterize the workitem by adding properties and relations.

Add Property

By clicking on three dots icon in the right corner of workitem you could activate a workitem menu.

  1. Click on + Property.
  2. Insert the requested details:
    • Key: Enable it if the property is a unique identificator.
    • Required: Enable it if the property is required. If it is Key, then it's also Required by default.
    • Type: Select the type of the property. (See Table 1)
    • Name: The property name.
    • Comment: The comment describe what is the aim of the property.
Note: Every workitems must have one Key property.
Table 1: Property Type
Type Description
Int Integer number until 32 bit.
Long Integer number until 64 bit.
String A Text.
Boolean Value that can be true or false.
Date Property that represents a date.
Big Decimal If you are dealing with money, or precision is a must, use BigDecimal.

This is a sample of workitem:

Add Relation

In order to create a relation you will need at least two workitems. By clicking on three dots icon in the right corner of workitem you could activate a workitem menu.

  1. Click on + Relation.
  2. Insert the requested details:
    • Master: Enable it if the selected workitem is the owner of the relationship.
    • Type: Select the type of the relation. (See Table 2)
    • Workitem: Select the workitem to relate.
    • Comment: The comment describe what is the aim of the relation.
Note: When you create a relation in a workitem, Buul automatically creates a new relation in the related workitem. In this way you obtain a bidirectional relation. Only one of these two relations ca be master.
Table 2: Relation Type
Type Description
@OneToMany Each workitem A istance can be related to one ore more workitem B istance.
@ManyToOne More workitem A istance can be related to one workitem B istance.
@ManyToMany More workitem A istance can be related to one or more workitem B istance.
@OneToOne Each workitem A istance can be related to only one workitem B istance.
@Self This is a self relation.

This is a sample of workitem with relation:


Select technologies

You can easily select your favourites technologies:

  1. Go to project details page by clicking the button with the eye icon.
  2. If your project is a monolithic architecture, click on edit button and you can choose what technologies and modules will be used by the generator.
    If your project is a microservices architecture, otherwise you can choose the SPA (Single Page Application) technologie, then click on microservice card to go in details page, now click on edit button and you are able to select module and technologies like in monolithic case.
    If you select a frontend technologie for a specific microservice, Buul will create a plus dedicated SPA for the single microservice in addition to the global SPA.
  3. For Spring Boot and Angular you can also choose their respective versions.
  4. Finally click on Save button.

  5. Note: React and Node.js technologies are coming soon.

Generate

If you have correctly created project, microservices and workitems, now you can start the magic.

Just click on Generate button and the magic begins.

After a couple of seconds you can click on Download button to get the entire project.

If you have configured correctly your git repository (See Here) you can push project by clicking on the dedicated button.

Note: Not all checks are yet implemented, please pay attention to project definition.

Run

After you have downloaded or pulled your project, everything is ready for run.

You can run the project with docker in one click. Buul prepare for you all necessary docker files and docker compose. The only thing you need is execute the following command, in the root folder (you can see docker-compose.yml file):

docker-compose up -d

Otherwise you can run the project with your usual tools.

Note: By default we use the following versions:
  • Java: 17
  • Spring Boot: 3.0.3
  • Angular: 16
  • PrimeNG: 16
As seen above (and in other sections below), the user can also choose Spring Boot version 2.5.6 (with Java 11) and Angular 13 (that comes with PrimeNG 13) for their services.
By default, with microservices architecture the Gateway comes with Spring Boot 3.0.3.

In addition we recommend the following versions for develop machine:
  • Node: 16
  • Npm: 8.5

You can refer more information about how to get docker here: Get Docker

After the building and starting process is completed, open your browser and go to localhost and enjoy your new Web App.

This is an example of main Dashboard

Example of an item details:

Example of an item details with relationed items:

Note: If you selected security module default credentials are:
  • Username: admin
  • Password: 123456
Click here to understand how create new users, roles and permissions.

Project Settings

Documentation and examples for project settings.


Team Configuration

If you are the owner of the project, you are able tu add/invite a new team member and share project.

  1. Go to project details page by clicking the button with eye icon.
  2. Click on Team accordion.
  3. If you are the owner of the project you can see the Add New Member button.
  4. Insert the new member team email and click on Save button.
  5. If the new member email is already present in Buul, user will be added instantly to project, otherwise it will send an invitation email.

Git Integration

Buul offers to you a way to integrate easy generated code into your external git repository.

  1. Go to project details page by clicking the button with eye icon.
  2. Click on Git Configuration accordion.
  3. Insert the following information and click on Save button.
    • Git Url: Url of your git repository.
    • Git Username: Username that Buul will use to authenticate.
    • Git Token Token that Buul will use to authenticate.
  4. If the provided informations are correct you will have a fully integrated git project.
  5. After your first generation you will see the Git Push button.
Note: Buul will create a dedicated branch for each new generation.

Modules

Here we explore the main modules provided by Buul.

Table 3: Modules
Name Description
Spring Boot If you select Spring Boot module, with its desired version, a Maven-based backend server will be generated that exposes REST-API to interact with your workitems. A three-tier architecture is adopded, with Persistence Layer, Service Layer and Controller Layer. About persistence you'll find JPA-based repositories. By default you have a H2 database for development environment and a MySQL database for the other environments. Swagger UI is provided to document and test the available endpoints (see Readme file for more information).
Node Js Coming Soon.
Angular If you select Angular module, with tis desired version, a mobile first Single Page Application (SPA) based on Angular framework will be generated. In addition it comes with PrimeNG, the Most Complete Angular UI Component Library.
React Native iOS | Android If you select React Native module, will be generated iOS App and Android App based on React Native framework.
React Coming Soon.
Report This module will add Pdf, Excel and CSV reports for your workitems lists. This feature is base on Jasper Reports, the world's most popular open source reporting engine.
Security Security module will add a security subsystem to manage authentication and authorizatione of your project. The security module version will inherit the one chosen for the Spring Boot framework back-end. You can learn more about here.

Ready To Use Microservices

Here we explore the main Ready To Use microservices provided by Buul.

Table 4: Ready To Use microservices
Name Description
Gateway Microservice based on Spring Gateway that comes with Spring Boot 3.0.3. It is already configured to serve correctly your microserivces project, you just need to enable it.
Security Ms Microservice based on Spring Security, already configured to manage authentication and authorization of your project. Being an independent service, you can also choose between Spring Boot version 2.5.6 and 3.0.3. You can learn more about it here.

Security

Documentation and examples for Security features.


Authentication

Authentication is a process that verifies that someone or something is who they say they are. Technology systems typically use some form of authentication to secure access to an application or its data. For example, when you need to access an online site or service, you usually have to enter your username and password. Then, on backend part, security subsystem compares the username and password you entered with a record it has on its database. If the information you submitted matches, the system assumes you are a valid user and grants you access. System authentication in this example presumes that only you would know the correct username and password. It, therefore, authenticates you by using the principle of something only you would know.


Authorization

Authorization is the security process that determines a user or service's level of access. In technology, we use authorization to give users or services permission to access some data or perform a particular action. Typically each user has one or more roles. The system use the role to provide each user with individual permissions. For example, in Buul default generated code, we have two basic roles: ADMIN and USER. ADMIN has by default all permissions but User nothing. So authentication verifies the user before allowing them access, and authorization determines what they can do once the system has granted them access.


Monolithic Security

Now let see how enable and configure security system in a monolithic project.

  1. Create or open a monolithic project.
  2. Enable edit mode by clicking on edit button.
  3. Enable Security module
Note: In the monolithic project, security subsystem is implemented in the same unique backend service.
Click here to understand how to configure roles and permissions.

Microservices Security

Now let see how enable and configure security system in a microservices project.

  1. Create or open a microserivces project.
  2. Enable edit mode by clicking on edit button.
  3. Enable Security-ms Ready To Use microservices. In this way Buul add a dedicated Security microservice to your architecture.
  4. Choose the version of Spring Boot you wish to use for the service.
  5. Enable Security module in each microservice that needs to be protected. So open microservices details by clicking on it and click on Security module.
Note: Only the microservice with security module enabled will be secured.
Click here to understand how to configure roles and permissions.

Configuration

By default, just generated applications provides two basic roles: ADMIN and USER.
ADMIN has all permissions otherwise USER has no permissions, so we need to configure it. Now we discover how manage roles and permissions.

  1. Run your project.
  2. Go to security page by clicking the button in the left side menu.
  3. Click on ROLES menu item. Here you can add, remove or update each roles.
  4. Click on the eye icon of USER roles to access user role details.
  5. Click on edit to enable edit mode.
  6. Click on + to add permissions.
Note: Buul generate a fine grained permissions policy. In fact there is a permission for each endpoint. In this way you can prepare a best fit role for every circumstance. Click here to understand how permission name is made.

Permissions

By default, each endpoint has a dedicated permissions so we are able to create a best fit roles.

A permission name is made basically from two parts:

        workitem name + feature name
      
Table 5: Default feature name
Name Description
Create _create Eg. workitem_create
Update _update Eg. workitem_update
Delete _delete Eg. workitem_delete
Delete All _delete_all Eg. workitem_delete_all
List Paged _list_paged Eg. workitem_list_paged
List All _list_all Eg. workitem_list_all
Get by id _by_id Eg. workitem_by_id
Report PDF _report_pdf Eg. workitem_report_pdf
Report CSV _report_csv Eg. workitem_report_csv
Report XLS _report_xls Eg. workitem_report_xls

Click here to understand how to add permissions to a role.


iOS & Android

Documentation and examples for mobile app features.


Run

We recommend to consult the official documentation to understand how to run the application.
Running On Device


VIDEO DEMO

How to model and generate Spring Boot / Angular / Docker Web Apllication in less then 10 minutes.


FAQ

A FAQ is a list of frequently asked questions (FAQs) and answers on a particular topic.

If you don't receive credentials after one day please check your email spam inbox. If the email is not present please contact us at buul@bitify.it
We raccomend node v.13 and npm v.8.5
By default we use Java 11 for Spring Boot 2.5.6 and Java 17 for Spring Boot 3.0.3. You can switch manually, after generation, to another Java version.
By default we use Angular 16 but you can also choose to use Angular 13. In addition we use PrimeNG components, the same version of the selected Angular version.
Please check your project design. You should verify that:
  1. Each workitem has an id property
  2. Each workitem has a unique name
  3. Each microservice has a unique name
  4. Each property has a unique name
  5. Self relation must be type @Self
  6. If you have removed Gateway you should configure your own. (Only microservices architecture)
Sorry for the issue. Please send us details about your error. Click here to send it.

Source & Credits


Support

If this documentation doesn't answer your questions, So, Please send us Email via Support Page

We are located in GMT +1 time zone and we answer all questions within 12-24 hours in weekdays. In some rare cases the waiting time can be to 48 hours. (except holiday seasons which might take longer).

Note: While we aim to provide the best support possible, please keep in mind that it only extends to verified users and only to issues related to our template like bugs and errors. Custom modifications or third party module implementations are not included.
Please Add your Review (Opinion) for Our platform. It would be a great support for us. Click here and write your review.
Thank You.

Changelog

See what's new added, changed, fixed, improved or updated in the latest versions.

For Future Updates Follow Us @linkedin

Version 0.6.0 (4 December, 2023)

  • Added Option to change Spring Boot and Angular versions.
  • Fixed Some minor bugs for Frontend.
  • Updated Documentation updated with new features and screenshots.

Version 0.5.0 (14 April, 2023)

  • Added Mobile App iOS & Android with React Native Framework
  • Fixed Some minor bugs for Backend
  • Fixed Some minor bugs for Frontend
  • Updated New default color in Dashboard

Version 0.4.0 (7 September, 2022)

  • start First beta release