# LIMO Overview

## Overview

Life Insurance Cloud Platform (LIMO) is an important part of InsureMO, which is designed with the concept of PaaS (Platform as a Service). Based on the complete configuration capability of the whole product line of life insurance, LIMO can empower various applications (apps) for building digital insurance scenarios. 

LIMO is essentially an open API platform. Here, users, also known as tenants, can subscribe to the platform's out-of-the-box atomic APIs for product verification, calculation, policy changes, and others. Subsequently, the developers can flexibly build various policy business services required by the front-end apps through rapid assembly and necessary customization. In this way, it will improve the overall efficiency of the insurance app development. 

The target users of this document are mainly team members who need to be familiar with LIMO and develop insurance apps based on the platform. 

## Logic View

Logically, LIMO is a service platform where the most basic product and policy atomic services are common to all tenants. Business Services (BS) on LIMO are exclusive to each tenant. The platform provides the underlying capabilities to build BS.
* The product services, based on the platform's product configuration data, provide common product queries, premium calculations, product rule checks, and other atomic APIs.
* The policy service provides an atomic API for various policy changes. It will return changed policy data based on the input policy data, with the caller determining the access to the policy data.
* The business service layer, relying on the platform's atomic services, provides APIs for policy business operations and inquiries in different business scenarios, such as proposals, underwriting, and adding new insurance policies.

From the perspective of app building, the insurance app for each specific scenario logically contains two parts:
* User Interface (UI): user interaction interface built for different scenarios, containing business process and workflow design. 
* Backend for Frontend (BFF): the API provided directly for process operations in the foreground interface, which needs to handle the workflow logic in the scenario and integrate with the business service layer.


## Content View

LIMO provides a complete set of services, including:
* Configuration function: With InsureMO Portal as a carrier, configuration function pages provide product data (including basic product data, formulas, and rate tables), basic master data, operation data, and batch definition data for all tenants. The configuration data of different tenants are logically isolated, which means that multi-tenant design is supported.
* Atomic service: mainly includes product service and policy service, common to all tenants. 
* Sample BS: open source code, which is the tenants development BS service scaffolding. It includes common business API implementation examples, which can help tenants quickly build exclusive BS.
* Sample app: open source code, which is used to verify whether the platform's business services and atomic service can be used to build multi-scenario insurance apps in different fields. The UI interface of the app is relatively simple, often used to demonstrate the capabilities of the platform API.

## Architecture View

The overall architectural hierarchy for building insurance applications based on LIMO is simple and clear:
* The scenario app is designed based on the principle of frontend and backend separation.
* The tenant-specific BFF and BS services are built based on Spring Boot.
* The respective BFF and BS services can be built separately by business domains.
* Secure authentication mechanism for API calls between services.
  * Frontend UI calls BFF: see App Framework related documents to learn more.
  * Backend BFF calls BS: authenticated through Container API Gateway. See the related documents to learn more.
  * BS calls LIMO platform: authenticated through Container API Gateway. See the related documents to learn more.
* BS has a proprietary database, which mainly stores all business-related data of policy.
* LIMO does not store policy and business data, but has a configuration library to support multi-tenant design and related configuration services.
  * Product configuration service (Doraemo): provides API to define configuration data such as products, formulas, and rates.
  * Operational configuration service (Dorami): provides API for maintaining operation data such as fund prices, currency exchange rates, and so on. Operational data can vary in different environments for the same tenant.



