# Apache Fineract CN Deposit Account Management [![Build Status](https://api.travis-ci.com/apache/fineract-cn-deposit-account-management.svg?branch=develop)](https://travis-ci.com/apache/fineract-cn-deposit-account-management) [![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/apache/fineract-cn-deposit-account-management)](https://hub.docker.com/r/apache/fineract-cn-deposit-account-management/builds) 

This project provides a services to create deposit accounts, e.g. checking, savings, and shares.
[Read more](https://cwiki.apache.org/confluence/display/FINERACT/Fineract+CN+Project+Structure#FineractCNProjectStructure-deposit-account-management).


## Abstract
Apache Fineract CN is an application framework for digital financial services, a system to support nationwide and cross-national financial transactions and help to level and speed the creation of an inclusive, interconnected digital economy for every nation in the world.

## Versioning
The version numbers follow the [Semantic Versioning](http://semver.org/) scheme.

In addition to MAJOR.MINOR.PATCH the following postfixes are used to indicate the development state.

* BUILD-SNAPSHOT - A release currently in development. 
* M - A _milestone_ release include specific sets of functions and are released as soon as the functionality is complete.
* RC - A _release candidate_ is a version with potential to be a final product, considered _code complete_.
* RELEASE - _General availability_ indicates that this release is the best available version and is recommended for all usage.

The versioning layout is {MAJOR}.{MINOR}.{PATCH}-{INDICATOR}[.{PATCH}]. Only milestones and release candidates can  have patch versions. Some examples:

1.2.3.BUILD-SNAPSHOT  
1.3.5.M.1  
1.5.7.RC.2  
2.0.0.RELEASE

## License
See [LICENSE](LICENSE) file.
