Features and Modules
In this section we will explain what are Modules and Features.
Modules and Features are building blocks of a Flexbase Applications. These are concepts that help you design any application with ease.
A feature is the basic building block of your application. It is simply an API. For example, Add New Customer, is a feature. It is an API that gets called when you submit details of a new customer in a CRM system.
Similarly, Confirm Order is a Feature in Order module ( or, Order Management module). In an e-commerce application, it is an API that confirms an order of items placed in a cart and sends out a notification to Delivery to fulfill and ship the order.
Another example could be a Get API - Show List of Customers. User sends a search request from web page. The API called is Show List of Customers. This feature will query the database for a list of customers and send the result back in response.
In Flexbase, you can use words "Feature" and "API" interchangeably.
A feature in Flexbase follows the standard REST API format.
In Flexbase you can specify the implementation of the API - Create, Update, Delete & Search by ID. Flexbase also provides specialized implementation options- Search without paging, Dynamic search & Soft Delete.
You can design the APIs with ease using a visual diagramming interface of FlexStudio.
One of the big advantage of Flexbase is that it helps you build modular monoliths with ease where your teams can work in distributed fashion as if working on micro-services architectures. This is the consequence of modular design.
When you are creating APIs, you would like to logically group them. How would you group them, is dependent on how you are designing the domain. For example in an e-commerce application some of the logical groupings can be - Order, Delivery, Product and Product Category.
When you group APIs in this manner, you are most likely thinking in terms of Domain Entities. This is the best of creating modules.
Another way could be to think in terms of services and even business modules. When designing services you can think of modules as Order Creation, Order Modification, Order Queries.
While, if you are designing application from business modules perspective, you can think name module as Order Management, Receivable, Shipping, etc.
The ease of designing APIs with FlexStudio is that you don't need to know the implementation details of the API at the outset. All you need to understand is the pub sub pattern.