Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Fineract CN is spread into roughly 30 projects.  This is an overview of the various categories of projects, their generic structure, and what role each plays in the Fineract CN ecosystem.

Table of Contents

...

Integration Tests

Integration tests run multiple services together to check that their inter-dependencies work as intended.  Integration tests are named for the services they include.

https://github.com/apache/fineract-cn-integration-tests 

demo-server

demo-server is a project which uses the same methodology as the integration tests to deploy all the services together except the UI.  Demo-server provisions the services in a generic way.  This is a reasonable place to start in playing with deployment.  You will need to understand this provisioning code to be able to provision in your production environment.

It is unlikely that you will be able to build a production environment based solely on demo-server.  The services are designed for a cloud deployment in which services run in containers and scaling up is achieved by spinning up new instances.  DemoDemo-server runs one instance of each service, plus an embedded version of Eureka, MariadbPostgreSQL, Cassandra, and ActiveMQ locally.

...

Tests the interaction between the named services.  This test is currently portfolio-centric, since it is portfolio which requires all the other services.

https://github.com/apache/fineract-cn-test 


service-starter

A library which starts services, Eureka, and Apache ActiveMQ for use in the integration tests and in demo-server.

...

Deployment 

Docker scripts

https://github.com/apache/fineract-cn-docker-compose

This library contains also collection of example Postman scripts

 

(REST requests) to provision a tenant.


...


UI

fims-web-app

Based on AngularJS.  Depends on all the services (except group) to provide back office functionality.

...

https://github.com/apache/fineract-cn-mobile

 


...


Services

Services rely on libraries and sometimes each other.  They are built as spring boot deployable jars.  Some service projects include libraries intended to support other services in functionality closely related to their own.  We started off giving the services the names of egyption gods.  These names are still visible in the data structures for the services. So I've included their "code" names here.

...

This is the spring boot deployable.  When running it registers with a Eureka server, connects with a mariadb PostgreSQL and a cassandra Cassandra database, and provides a REST interface, with endpoints grouped into permittable groups.  When initialize is called for a tenant within the service, the service allocates tables and other resources specifically for that tenant. GET calls are implemented against the mariadb PostgreSQL using spring data jpa, and PUT, POST, and DELETE calls cause cassandra-persisted commands to be placed on command bus and processed asynchronously into the SQL PostgreSQL DB.

api

This is a Feign client to make it easier for java clients to communicate with the service.  The api artifact contains constants defined for listening to ActiveMQ events emitted by the service.  The api artifact also contains constants naming the permittable groups which define the permissions which the service offers.  The api artifact contains any domain object validation code, and the unit tests for that validation code.

...

https://github.com/apache/fineract-cn-stellar-bridge 


...


Libraries

Libraries are not deployable pieces of code.  They are intended to support the common functionality of the services.  Most library projects produce one build artifact and contain unit tests for their classes.

...

Support for unit tests and component tests in the services

https://github.com/apache/fineract-cn-integration-teststest 

api

Each of the services has a Feign application programming interface (api).  This project contains code intended to support the creation of a Feign API.

...

https://github.com/apache/fineract-cn-command

...

postgresqlDB and data persistence 

Most (but not all) services use an SQL persistence for querying of data via GET requests.  This library provides tenant-separation based on header contents.

https://github.com/apache/fineract-cn-mariadbpostgresql

https://github.com/apache/fineract-cn-data-jpa 

...

https://github.com/apache/fineract-cn-lang