edk12564 opened a new pull request, #72:
URL: https://github.com/apache/fineract-consumer-facing/pull/72

   Issues: https://github.com/apache/fineract-consumer-facing/issues/57, 
https://github.com/apache/fineract-consumer-facing/issues/56
   
   # Summary
   
   In response to earlier feedback 
(https://github.com/apache/fineract-consumer-facing/pull/39), we have decided 
to implement Spring Modulith to enforce strict modularity rules. Features are 
considered either closed/open. Most features except infrastructure was set as 
open, with the only exceptions being the services and data directories of each 
closed feature. This allows for dependencies but only through interfaces like 
services and ports. This prevents overreliance on implementations and specific 
modules. 
   
   Dependency Inversion was implemented for circular dependencies.
   
   Finally, ArchUnit, which came with Spring Modulith was used to write a test 
for CQRS enforcement within packages. This will help enforce CQRS principles as 
contributors grow.
   
   ## More details
   
   - added Spring Modulith dependency to handle modularity
   - added port/adapter structure for dependency inversion
   - restructured codebase to only expose data and services for each module
   - enforced open on data and services and closed on everything else for 
features with ConsumerModuleDetectionStrategy
   - enforced open on infrastructure
   - refactored liquibase migration to be module specific
   - refactored exceptions to use supplier pattern to prevent duplicated 
exceptions
   - extracted identity into its own module to conserve CQRS in authentication 
feature
   - moved enums to data instead of domain for cross module access
   - added ArchUnit to handle CQRS enforcement test with CqrsArchitectureTest
   - extract css to shared css directory in frontend


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to