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:

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