Working with Code
Source Code Directory Structure
Mifos X Financial Service Engine
Only main folders are covered here. All other folders are obsolete or containing out-dated information.
mifosx
Project root containing license, readme, and changlog files. In addition some build scripts to run the build on Jenkins are included.
api-docs
Source file and styles for the online API documentation.
On this page:
- 1 Source Code Directory Structure
- 1.1 Mifos X Financial Service Engine
- 1.1.1 mifosx
- 1.1.2 api-docs
- 1.1.3 fineract-provider
- 1.2 Mifos X Community App
- 1.2.1 community-app
- 1.2.2 app
- 1.2.3 test
- 1.1 Mifos X Financial Service Engine
- 2 Package Structure
- 2.1 Some examples
fineract-provider
The main folder for the Mifos X Financial Service Engine. Gradle build scripts and project files are located here.
All sources can be found below src and the sub-folder structure follows the recommended gradle/maven approach:
main/java
contains all Java source files
main/resources
contains the log configuration
main/resources/META-INF
contains all configuration files for Hibernate and Spring
main/resources/sql/migrations
contains all SQL scripts used by Flyway and some additional scripts to populate sample data
test/java
contains all JUnit source files
test/resource/META-INF
contains unit test specific Spring configurations
integrationTest/java
contains all Java source files for automated test scenarios
Mifos X Community App
community-app
Project root containing license, readme, and changlog files. In addition some configuration for build and run time dependencies are located here.
app
All source files, e.g. templates, styles and scripts, can be found here.
test
All source files for Jasmine tests can be found here.
Package Structure
The package structure follows the domain.module.layer approach. Where domain is org.mifosplatform, module is a functional area of the software and can contain sub-modules, and layer is the technical function of this module.
All sections of a package name are in singular.
A layer can be:
annotation
All annotations for this module
api
All RESTful resources for this module
data
POJOs that are transmitted to the API consumer
domain
Entities and data access classes
exception
All module specific exceptions
handler
All module specific command handlers
provider
Factory classes
service
All service classes enclosing the business logic for this module
util
Helper and utility classes
Some examples
org.mifosplatform.command.api // valid
org.mifosplatform.organisation.office.domain // valid using a sub-module
org.mifosplatform.service.batch // invalid; module must be before the layer