Back to projects

2026In developmentIndependent project

End-to-End Credit Management Platform

Cover the full credit lifecycle, from admission and evaluation to credits and portfolio tracking, on a modular base that grows in phases.

Role
Full-stack development
Technologies
Laravel · PHP · React · MySQL · Modular monolith
Modular business domains
9
Tests guarding the boundaries between modules
110
Access scopes: user, role and branch
3

Operational context

Nine business domains with their own rules, evaluation that differs by client type, and access scoped by user, role and branch.

Solution delivered

A modular monolith: each domain is a module with its own layers, completed module by module, and every dependency between modules is declared in a test.

System architecture

The flow shows how responsibilities are separated from the HTTP entry point through persistence. The yellow layer holds the business rules.

Architecture4 layers

Verifiable evidence

  • All 152 API routes frozen in a contract test that pins the method, URI, controller and middleware of each one.
  • 110 architecture tests: the credit-flow modules form no cycles and import no other module’s infrastructure, no raw query touches another module’s tables, and every new dependency between modules has to be declared.
  • Authorization at three levels: JWT session, granular per-action permission and branch scope.
  • Domain layer free of HTTP, DB, Auth and Eloquent; the Http layer neither persists data nor resolves services by hand.
From the repositoryContract test excerpt
// RouteContractTest.php['GET', 'api/v1/business-process',  BusinessProcessController@index,  ['jwt', 'permission:process.list']],['PATCH', 'api/v1/business-process/{id}',  BusinessProcessController@update,  ['jwt', 'permission:process.edit']],
Each row pins the method, URI, controller and middleware. If a migration changes them, the test fails before the frontend does.
From the repositoryArchitecture test excerpt
// ModuleDependencyBoundaryTest.phptest_credit_flow_module_dependency_graph_is_acyclictest_cross_module_dependency_inventory_stays_fixed// ControllerHttpBoundaryTest.phptest_http_layer_does_not_execute_unallowlisted_persistence_operationstest_http_layer_does_not_use_the_service_locator// TableOwnershipBoundaryTest.phptest_ninguna_consulta_cruda_toca_una_tabla_de_otro_ownertest_la_lista_de_excepciones_sigue_vacia
Module boundaries do not rely on discipline: 110 tests fail if an undeclared dependency between modules appears or a raw query touches another module’s tables.

Outcome

The project turns scattered operational rules into a traceable, tested, and maintainable system.

Need to solve a similar process?

Let’s discuss the workflow, rules, and architecture your system needs.

Get in touch