... some more: - ditch ORM layers altogether and use QueryDSL or Jooq (good bye SQL string concatenation and SQL injections) - migrate from JAX-RS to Spring Web MVC - investigate virtual threads - allow alternative API protocols (e.g. gRPC) - remove SQL JOINS as much as possible - prepare for Spring Boot 4/Spring Framework 7 - do API versioning via advanced content type header; "application/json" vs "application/vnd.fineract.loan+json;charset=UTF-8;version=1.0"
On Mon, Aug 11, 2025 at 8:53 AM sidhant goel <sidhant@freo.money.invalid> wrote: > One thing I'd like to propose is reducing code duplication by refactoring > repeated logic into reusable functions or utilities. > > As someone who's recently started working on Fineract, I've noticed that > making changes often requires modifying the same or very similar code in > multiple places. This not only increases development time but also raises > the risk of inconsistencies or errors. > > While this wouldn’t introduce any new features, it could significantly > improve maintainability and make future enhancements easier and safer. What > do you all think? > > On Sun, Aug 10, 2025 at 10:25 PM James Dailey <jamespdai...@gmail.com> > wrote: > >> Thanks Adam - I’m back in this topic. >> >> Any others ? >> >> Sent from Gmail Mobile >> >> >> On Sun, Aug 10, 2025 at 7:54 AM Ádám Sághy <adamsa...@gmail.com> wrote: >> >>> Hi James, >>> >>> *Possible Topics to Include in the Survey* >>> >>> - >>> >>> *API Endpoint & Parameter Consistency* >>> - >>> >>> Introduce common, generic naming conventions for all API >>> endpoints, commands, request parameters, and response fields to >>> improve >>> clarity and reduce ambiguity. >>> - >>> >>> *Date & Time Handling* >>> - >>> >>> Standardize date/time representation across all APIs. Options >>> include: >>> - >>> >>> Return all dates and datetimes as ISO 8601-formatted strings ( >>> date, dateTime, offsetDateTime). >>> - >>> >>> Alternatively, use the system’s provided date format. >>> - >>> >>> Avoid mixed representations (arrays, strings, etc.) for the >>> same type of data. >>> - >>> >>> *Strict DTO-based Request/Response Models* >>> - >>> >>> Remove incoming and outgoing *raw string JSON* handling. >>> - >>> >>> Map all requests and responses to DTOs with clear field-level >>> validations for incoming data. >>> - >>> >>> *Exception Handling & HTTP Status Codes* >>> - >>> >>> Enforce consistent status codes across the platform: >>> - >>> >>> 400 - Request syntax or field validation errors. >>> - >>> >>> 403 - Domain/business rule violations. >>> - >>> >>> 500 - Generic server errors. >>> - >>> >>> Standardize the error response structure for easy client-side >>> handling. >>> - >>> >>> *Common Response Structure for Write Operations* >>> - >>> >>> Example unified structure: >>> >>> json >>> CopyEdit >>> { >>> "resources": [ >>> { >>> "resourceId": "1", >>> "resourceExternalId": "87c83044-825a-48c8-989b-bbf47d43caec", >>> "resourceEntity": "LOAN", >>> "resourceClassification": "REPAYMENT" >>> } >>> ], >>> "changes": { >>> "key": "value" >>> }} >>> >>> - >>> >>> *Alternative Approach* >>> - >>> - >>> >>> Move away from a common, generic response format and allow each API >>> to define its own dedicated response object tailored to its >>> functionality. >>> >>> >>> *Modularization & Dependency Hygiene* >>> - >>> >>> Finish modularization and remove circular/unnecessary >>> dependencies between modules. >>> - >>> >>> Define clear, stable module boundaries (public API vs. internal). >>> >>> >>> 7. >>> >>> *Security & SQL Safety* >>> >>> Avoid native SQL; use JPQL/Criteria/repositories by default. >>> >>> If native is needed, require prepared statements—no string >>> concatenation. >>> >>> >>> My opening thoughts on Fineract 2.0. >>> >>> Regards, >>> Adam >>> >>> >>> On 2025. May 12., at 22:53, James Dailey <jdai...@apache.org> wrote: >>> >>> Community - >>> >>> It is probably past time to have a discussion about the future of >>> Fineract and what we want to see going forward. >>> >>> I would like to get your ideas for a Survey of users and developers. >>> >>> In that survey, which we would push to as many users and developers of >>> Fineract as possible, we would ask things about developer experience, user >>> interfaces, API documentation, connecting to payments, enabling connections >>> to third party systems, security, code quality, and in general a number of >>> topics that relate to the roadmap ideas that have surfaced in the past two >>> years. >>> >>> I will also include a few of the previously asked questions from our >>> community surveys in 2019, 2021, and 2022 so that we can have a time >>> series, e.g. around questions of "how did you learn about the project?" and >>> "how are you using it?" >>> >>> https://cwiki.apache.org/confluence/display/FINERACT/Survey+Results+2022+November >>> >>> >>> Please respond here with questions and topics to cover. If there is no >>> objection I will formulate the questions and send out the survey using >>> Google Survey by the end of next week with responses due by June 4th. >>> I'll ask for the community to promote the survey as much as possible to >>> relevant people. >>> >>> Thanks, >>> >>> >>>