Banking Booking System kept simple!
Simple implementation of a deposit account that supports:
- Account management
- Creating a banking deposit account
- List transactions
- Initiating and executing payments
- Single payment
- Future dated payments
- Periodic payments (scheduller pending)
- Bulk payments (batch and non batch)
- Cash deposit (Still pending)
- Statement and Balances
- Account Statement
- Trial Balances
- String Customer Authentication
- Authorizing payment initiation
- Authorizing transactions listings
- Support for multiple SCA Methods
- 1:n E-Mails
- 1:n mobile phones
This is simple implementation of the double entry accounting with some additional features like:
- Classical functionality of an accounting module
- Journaling of Transactions
- Account Balance Inquiry
- Account Statement Reporting
- Some innovative accounting functionalities
- Read only journal entries
- No down time for time based closing operations (day, month, year)
- Asynchronous balance computation for parallel processing of journal entries
- Detaching processing time and entry effective time, allowing the storage of future and/or passt transactions
- Some technical innovations
- Securing integrity of entries using hash chains
- Spring based JPA module embedding for transactional integrity
- Allowing the horizontal partitioning of the module using eventual consistency techniques
- Allowing the vertical partitioning (time based) of entries to increase the throughput of parallel write operations
The deposit account module needs a chart of account. You can find a sample chart of account at: Sample Chart Of Accounts
We provide a sample SCA and user management application no to be used in a productive environment.
This is a sort of online banking application exposes the deposit account functionality to an online environment enabling the following workflow:
- Create deposit accounts
- Create banking users
- Initiate Payments
- Check balances
- Read payment transactions
This is a sample test data file for the deposit account Sample Test Data
adorsys is a company who works ever since the very beginning of PSD2 with its requirements and implicit tasks. We help banks to be PSD2 complaint (technical and legal terms). To speed up the process we provide this open source XS2A interface, specified by Berlin Group, that can be connected to your middleware system. You can check your readiness for PSD2 Compliance and other information via our Web-site.
See below for a short technical introduction of the module. More to find in These instructions. The instruction below will surely get you a copy of the project up and running on your local machine for development and testing purposes.
Ledgers is heavily dependents on spring for now. We are still working on a more inclusive dependency management.
> git clone https://github.com/adorsys/ledgers.git
> cd ledgers
> mvn clean install
> cd ledgers-app
> mvn spring-boot:run -Dspring.profiles.active=h2
This will start the ledgers app with the embedded h2 database.
http://localhost:8088/swagger-ui.html
when started with the h2 profile, you can use the web browser to visit database tables on the url http://localhost:8088/h2-console/ . make sure you use the following connection properties:
Driver Class : org.h2.Driver JDBC URL: jdbc:h2:mem:ledgers User Name: sa Password: sa
Press Connect button and you can explore the data model.
More on this to come...
We user Spring dependencies to assemble module. Each module contains following dependency management artefact.
The ledgers application is built to be fully extensible and embeddable into other JPA applixations.
Artifact | Description |
---|---|
@EnableModuleName |
Annotation used to select an implementation module among alternatives. This will generally be dropped on a Spring Application class. |
@ModuleNameConfiguration |
Main spring configuration class for the module. Might include other modules, scan entities, initialize resources. |
@ModuleNameBasePackage |
Marker class used to document package scanning for a module. We will generally me stuff like: @ComponentScan(basePackageClasses = DepositAccountServiceBasePackage.class) . The package of this call must allow for scanning of all spring components in the module. |
You can easily use features by adding following annotations to your spring @Configuration
class:
Annotation | Description |
---|---|
@EnableDepositAccountService |
Enables the deposit account service module. |
@EnableLedgersMiddlewareRest |
Enables the the Ledger middleware rest application. |
@EnableLedgersMiddlewareService |
Enables the Ledger middleware service. |
@EnablePostingService |
Enables the postings service module. |
@EnableSCAService |
Enables The SCA service module |
@EnableUserManagementService |
Enables the a user management service |
Following JPA module are automatically included in the corresponding service modules so they generally do not need to be considered while assembling modules.
Annotation | Description |
---|---|
@EnableDepositAccountRepository |
Enables the deposit account JPA module. |
@EnablePostingsReporitory |
Enables the ledgers posting repository module. |
@EnableSCARepository |
Enables the sca repository module |
@EnableUserManagmentRepository |
Enables a user management module. |
Available in the documentation
Dockerfiles will be provided to allow to put the build artifacts into a docker images. Not available for now.
More details see in instruction
- Java, version 17 - The main language of implementation
- Maven, version 3.0 - Dependency Management
- Spring Boot - Spring boot as core Java framework
Please read CONTRIBUTING for details on our code of conduct, and the process for submitting pull requests to us.
- Roadmap - The up-to-date project's roadmap
- Francis Pouatcha - Initial work - adorsys
See also the list of contributors who participated in this project.