This is an automated email from the ASF dual-hosted git repository.

aleks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new e4e0082872 FINERACT-1956: Add Antora skeleton structure and 
consolidate contributor guides
e4e0082872 is described below

commit e4e00828724865bbbec49db5920fec39214ddea6
Author: airajena <[email protected]>
AuthorDate: Mon Jan 26 09:58:27 2026 +0530

    FINERACT-1956: Add Antora skeleton structure and consolidate contributor 
guides
---
 build.gradle                                       |  4 +
 fineract-doc/.asciidoctorconfig                    | 25 ++++++
 fineract-doc/antora.yml                            | 26 +++++++
 fineract-doc/modules/ROOT/nav.adoc                 |  3 +
 fineract-doc/modules/ROOT/pages/faq.adoc           | 88 ++++++++++++++++++++++
 fineract-doc/modules/ROOT/pages/index.adoc         | 41 ++++++++++
 fineract-doc/modules/committer/nav.adoc            |  2 +
 .../committer/pages/becoming-a-committer.adoc      | 58 ++++++++++++++
 fineract-doc/modules/community/nav.adoc            |  3 +
 .../modules/community/pages/governance.adoc        |  3 +
 fineract-doc/modules/community/pages/index.adoc    |  1 +
 fineract-doc/modules/contributor/nav.adoc          |  9 +++
 .../contributor/pages/checkstyle-and-spotless.adoc | 24 ++++++
 .../contributor/pages/coding-conventions.adoc      | 24 ++++++
 .../modules/contributor/pages/error-handling.adoc  | 22 ++++++
 .../contributor/pages/key-design-principles.adoc   | 54 +++++++++++++
 .../contributor/pages/logging-guidelines.adoc      | 34 +++++++++
 .../pages/submitting-a-pull-request.adoc           | 62 +++++++++++++++
 .../contributor/pages/take-your-first-steps.adoc   | 68 +++++++++++++++++
 fineract-doc/modules/development/nav.adoc          |  2 +
 .../development/pages/contributor-guide.adoc       | 15 ++++
 .../modules/development/pages/development.adoc     |  3 +
 22 files changed, 571 insertions(+)

diff --git a/build.gradle b/build.gradle
index 56ed56607d..c21075fcd6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -903,6 +903,10 @@ cyclonedxBom {
     includeLicenseText = true
 }
 
+tasks.withType(org.cyclonedx.gradle.CyclonedxDirectTask).configureEach {
+    includeMetadataResolution.set(false)
+}
+
 tasks.register('printSourceSetInformation') {
     doLast {
         sourceSets.each { srcSet ->
diff --git a/fineract-doc/.asciidoctorconfig b/fineract-doc/.asciidoctorconfig
new file mode 100644
index 0000000000..db9562053e
--- /dev/null
+++ b/fineract-doc/.asciidoctorconfig
@@ -0,0 +1,25 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+:years: 2015-2026
+:revnumber: 1.14.0
+:draft: true
+:rootdir: {asciidoctorconfigdir}/..
+:generated: {asciidoctorconfigdir}/build/generated/asciidoc
+:diagramsdir: {asciidoctorconfigdir}/src/docs/en/diagrams
+:imagesdir: {asciidoctorconfigdir}/src/docs/en/images
+:icons: font
diff --git a/fineract-doc/antora.yml b/fineract-doc/antora.yml
new file mode 100644
index 0000000000..62ad0c85c1
--- /dev/null
+++ b/fineract-doc/antora.yml
@@ -0,0 +1,26 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+name: modules
+title: Fineract Docs
+version: '~'
+#display_version: ''
+nav:
+- modules/ROOT/nav.adoc
+- modules/contributor/nav.adoc
+- modules/committer/nav.adoc
+- modules/community/nav.adoc
diff --git a/fineract-doc/modules/ROOT/nav.adoc 
b/fineract-doc/modules/ROOT/nav.adoc
new file mode 100644
index 0000000000..d859761356
--- /dev/null
+++ b/fineract-doc/modules/ROOT/nav.adoc
@@ -0,0 +1,3 @@
+.Project Overview
+* xref:index.adoc[Introduction]
+* xref:faq.adoc[FAQs]
diff --git a/fineract-doc/modules/ROOT/pages/faq.adoc 
b/fineract-doc/modules/ROOT/pages/faq.adoc
new file mode 100644
index 0000000000..781822b355
--- /dev/null
+++ b/fineract-doc/modules/ROOT/pages/faq.adoc
@@ -0,0 +1,88 @@
+== What is this project about? 
+At Apache Fineract, our mission is to build, maintain and enhance a 
cloud-ready core banking system for robust, scalable, and secure operations of 
financial institutions.  We believe in financial services for everyone, 
including the unbanked and underbanked.
+
+The domain of fineract includes accounts, held by customers, with transactions 
made to those accounts. The types of accounts include credit accounts (e.g. 
loans to customers) and debit accounts (current accounts and savings accounts), 
and for credit accounts there are different kinds of interest rate schemes or 
shared profit schemes.  There is other functionality that supports use cases 
for teller operations, basic treasury management, accounting, portfolio 
management, authentication, ac [...]
+
+Initially aimed at Microfinance Institutions (MFIs), Savings Cooperatives, and 
Credit Unions, the fineract solution is not limited to those specific 
institutions.  A number of finTech innovators have used fineract as their 
backend solution for offering "Direct Banking" or "Neo-Banking" solutions as 
well as for "Agent Management" in some contexts. The backend account 
transaction system is a common requirement in many systems in financial 
services. 
+
+Fineract was donated by Mifos.org, a US based charity with a financial 
inclusion mission which had developed the fully featured MifosX and released as 
open source in 2010 (which was generation 2 of the Mifos software). While many 
members of the PMC trace their involvement to the project to financial 
inclusion, the intent of the project is to attract a range of innovators 
involved in offering account services to consumers everywhere. Financial 
services should be available to all. 
+
+Open source allows for the project to build the needed building blocks that 
all kinds of financial institutions can use but we anticipate an ecosystem of 
providers taking this code and building solutions on top of it.  We encourage 
that and fully expect those builders to send their development priorities and 
in-house dev teams to the project.  We require that virtuous cycle. 
+
+We imagine a world where financial services are offered by a wide range of 
providers using commodity open source software utilizing the most modern 
approaches.  
+
+== Who is using fineract?
+
+(For clarity, those using the mifos.org released solutions, prior to 
incubation at apache foundation, are not counted in this project.) Fineract is 
used by many small to medium sized financial institutions in dozens of 
countries.  Larger institutions are considering the use of fineract 
side-by-side with their existing core banking solution (CBS). The side-by-side 
strategy allows for innovative offerings to be done without the licensing costs 
usually associated with commercial CBS. Finera [...]
+
+With proper hosting and front end dev, Fineract is suitable to Credit Unions, 
Microfinance Institutions, Agent Banking solutions, Savings Associations, 
Building Societies, Cooperatives, small Commercial Banks, NeoBanks, and Direct 
Banking solutions.  Our vision is that these institutions may download and use 
directly, but perhaps more likely, to hire a provider or integrator to provide 
the complete solution to them. Our users are thus both the institutions where 
fineract is in place and  [...]
+
+Check out our  powered-by Fineract page. 
+
+== Is this Mifos? 
+The Mifos Initiative, a 501c3 US Charity, contributed the code that forms the 
basis of fineract (this was developed by a community of mifos developers over 
several years), and the Mifos Initiative remains involved with a number of 
front end implementations (project wrapper in apache parlance) and other 
systems that run "on top of" fineract, including a payment hub and API 
management.  Many of the developers are on both listservs. However, if you are 
looking for information on the latest  [...]
+
+== Is there a front end? Where are the reports? 
+Fineract just contains the back-end platform and APIs. Front end development 
is intentionally left out of the fineract1.x project to encourage the use of 
software integrators to develop their own front end solutions.  Mifos has a 
number of open source front end User Interfaces (UIs) projects for reference 
that sit on top of fineract1.x including MifosX Community app (AngularJS 
project), reporting through Pentaho and there are also client and staff-facing 
mobile apps.  Note that demo serv [...]
+
+== What is the difference between Fineract and Fineract-CN? 
+Fineract CN was a separate codebase and is now deprecated/archived.
+Current Apache Fineract development is focused on Fineract 1.x in this 
repository.
+Fineract1.x, prior to its donation to Apache, was called mifosX and by design 
consists of a "headless" solution focused on APIs.
+
+== Do I have to get the code to use the solution? 
+If all you want is to use the solution, or to demo it, we recommend you use 
one of the available builds rather than setting up a development environment 
yourself.  The builds, found at http://fineract.apache.org/ (Downloads) are 
provided for convenience and should not be used in a production environment 
without fully working out details of operations (e.g. data backup) and 
security.  Also, Mifos volunteers continue to post builds for specific hosting 
solutions at https://en.wikipedia.org [...]
+
+== What is the process for getting the code and setting up a development 
environment? 
+Please see Contributor's Zone, essentially you need to get your environment 
ready, then download from the github source and use one of the common IDEs.  
+
+In general we ask that you take the time to read the instructions and 
familiarize yourself with the listserv before posting questions about building 
the solution.  You can search the listserv archives at 
https://lists.apache.org/list.html?fineract.apache.org .  If you find something 
missing from the instructions, we welcome contributions of that sort as well.  
Note that the listserv search is timebound, so that for example this search 
gets 24 months: https://lists.apache.org/list.html?de [...]
+
+== How do I get up to speed on development tasks? 
+Please see Contributor's Zone 
+
+Issue tracker:
+
+fineract1.x at https://issues.apache.org/jira/projects/FINERACT/summary 
+A good thing to do is to review an open ticket, especially one with back and 
forth between devs on the listserv or one that is scheduled for an upcoming 
release. It is also useful to review existing pull requests (PRs). Pull 
Requests (PRs) are found here → https://github.com/apache/fineract/pulls 
+
+== What is our Consensus approach?  
+Every open source project has to adopt some way to come to agreement on new 
features, new code enhancements, new project directions and fineract now uses a 
lazy consensus approach.  In this approach, the changes and issues are raised 
and people are given time to reject or discuss the changes, and we rely on 
contributors to fully vett changes in an appropriate way and have their code 
reviewed.  
+
+This is documented at Committer's Zone and Changing Processes .  Please note 
that we expect discussion on the listserv to be the primary mode of 
communication.  "If it didn't happen on the list, it didn't happen." 
+
+== I'm new to Open Source, what is this all about? 
+Welcome.  You may want to first read something about how open source projects 
function (like this) and in particular how the Apache Foundation works. 
https://www.apache.org/foundation/how-it-works.html.  If you are interested in 
contributing to the project, a good way to get started is to subscribe to the 
listserv, review the functional specs on this wiki, browse the issue tickets, 
and start to play around with a build of the software.  Open source can be a 
great way to find your communi [...]
+
+== Where do I find .... 
+We get a lot of questions about where to find documentation or the answer to a 
specific thing.  We do appreciate when people take the time to try to find the 
answer before asking.  Once you have new content to propose, a ticket or an 
improvement to documentation, we encourage you to get involved on that. Not all 
contributions are code, take, for example, this FAQ.  
+
+== Where do I get the Pentaho Reports? 
+Fineract does not ship Pentaho reports or the related libraries, due to 
compliance issues with Apache licence.  Please head over to the Mifos community 
who maintains distributions of Fineract that include pentaho.  
+
+== How do I set this up on my machine? 
+First, are you a developer?  If you are not, then you may not want to run 
fineract on your local machine.  Instead you may want to find one of the demo 
environments already established or make use of one of the existing cloud 
deployments.  Also, fineract does not come with a native front end UX.  The UX 
is part of the distributions that are provided by third parties, including the 
aforementioned Mifos Community. 
+
+If you are a developer, then please see how to set up sections on the wiki. 
+
+Fineract User Zone
+
+
+== How do I get something changed in the code?  How do I get a feature added? 
+The project is always interested in ideas about features. That said, we notice 
some people expect that a feature requested is automatically developed and 
incorporated. That is not the case. If you have code to suggest, first discuss 
on the list, add an issue to the issue tracker, and then find someone to help 
you contribute that feature.  You are still not guaranteed that your feature 
will make it in, because it must also be accepted by the community. 
+
+== I have a great idea for a collaboration tool for the community, how do I 
make that happen?
+We know there are lots of great collaboration tools.  To keep things 
consistent across Apache, there is a philosophy of using current tools rather 
than cutting edge, while acknowledging there's always something new and cool. 
We use email listservs for their backwards compatibility, searchability, and 
simplicity. This wiki has hooks to the issue tracker (JIRA) and github commit 
entries hook to the same JIRA tickets for all Pull Requests (PRs).  A good flow 
is:  
+
+email discourse >> wiki entry |or| issue (JIRA)
+
+development sprint >> Pull Request >> email list for review and confirmation 
+
+== I represent a Company and want to contribute, how do I do that? 
+As stated on  http://www.apache.org/foundation/how-it-works.html, "companies 
and individuals can donate resources and be assured that those resources will 
be used for the public benefit".  If you have developers working at your 
company, you may encourage them to work on the project, but note that "All of 
the ASF including the board, the other officers, the committers, and the 
members, are participating as individuals."  and further "the ASF does not 
allow corporations to participate dire [...]
+
+== I found a security flaw, where do I report that? 
+Security is a mandatory feature in Apache projects. Please report your bug to 
security AT fineract.apache.org. 
+
+== How do I raise a difficult or sensitive topic? 
+In general, you are invited to discuss problems you see with the Fineract 
project openly, on the [email protected] list.  In some limited cases, 
please send an email to private @ fineract.apache.org.  Addressing problems 
early and openly will keep most problems from becoming too large to handle. A 
good rule of thumb is to compose and then wait overnight before firing off that 
flame.  
diff --git a/fineract-doc/modules/ROOT/pages/index.adoc 
b/fineract-doc/modules/ROOT/pages/index.adoc
new file mode 100644
index 0000000000..ac12e5499b
--- /dev/null
+++ b/fineract-doc/modules/ROOT/pages/index.adoc
@@ -0,0 +1,41 @@
+= Introduction
+
+== Platform for Digital Financial Services
+
+Apache Fineract (\’fīn-,ә-,rakt\) is open source software for financial 
services.
+
+At Apache Fineract, our mission is to build, maintain and enhance a 
cloud-ready core banking system for robust, scalable, and secure operations of 
financial institutions.  
+
+We believe in financial services for everyone, including and especially for 
the unbanked and underbanked. 
+
+We primarily build the backend system, the headless application.  
+
+== About
+
+Apache Fineract can be deployed in any environment: cloud or on-premise. It 
can support front end interfaces on or offline, mobile or PC. It’s extensible 
enough to support any organizational type or delivery channel, and flexible 
enough to support any product, service, or lending methodology. For any 
organization, big or small, it provides the client data management, loan and 
savings portfolio management, integrated real time accounting, and social and 
financial reporting needed to bring [...]
+
+Fineract 1.x compares well to other core banking systems and draws from 
requirements in credit unions, microfinance institutions, and small non-banking 
financial institutions. Features include flexible product configuration, KYC 
documentation support, business rule sets, payment transactions, and portfolio 
management. It includes an open API that dates to 2011 and is deployed in 
relatively high transaction volume environments.
+
+Fineract CN operates on the principle that financial services are an 
innovative space and so each fineract microservice encapsulates a domain that 
can be combined with other microservices to create new platform offerings. 
Fineract CN microservices can be combined to create new software platforms for 
digital financial service providers. Fineract CN is still in its early days, 
but preliminary tests have shown that a simple single-instance laptop 
deployment of Fineract CN can process over 1 [...]
+
+Fineract 1.x began incubation at Apache in December 2015 and is used by an 
active community of companies who build solutions for both financial inclusion 
and fintech innovation.
+
+== Contribute
+
+The Apache Fineract community welcomes contributors who want to support the 
Fineract technology. Our community builds everything from this website, to the 
Fineract code to documentation and best practices information.
+
+We especially welcome additions and corrections to the documentation, wiki, 
and website to improve the user experience. Bug reports and fixes and additions 
to the Apache Fineract code are welcome. Helping users learn best practices 
also earns good karma in our community.
+
+== Mailing Lists
+
+Users & Developers
+
+If you use, build on top of, deploy or are building contributions and 
modifications to Apache Fineract, this is the list for you.
+To subscribe, send a blank email to [email protected].
+To unsubscribe later, just send a blank email to 
[email protected].
+You can also read the archives on lists.apache.org or on MarkMail.org.
+Commits
+
+This list receives an email whenever new code is contributed to Apache 
Fineract.
+To subscribe, send a blank email to [email protected].
+You can also read the archives.
diff --git a/fineract-doc/modules/committer/nav.adoc 
b/fineract-doc/modules/committer/nav.adoc
new file mode 100644
index 0000000000..8c7e6da614
--- /dev/null
+++ b/fineract-doc/modules/committer/nav.adoc
@@ -0,0 +1,2 @@
+.Committer Zone
+* xref:becoming-a-committer.adoc[Becoming a Committer]
diff --git a/fineract-doc/modules/committer/pages/becoming-a-committer.adoc 
b/fineract-doc/modules/committer/pages/becoming-a-committer.adoc
new file mode 100644
index 0000000000..c41ae3aba8
--- /dev/null
+++ b/fineract-doc/modules/committer/pages/becoming-a-committer.adoc
@@ -0,0 +1,58 @@
+Being a committer in FINERACT is a responsibility that we wish to encourage as 
many good contributors as possible to share with us.  It is also an honor which 
is earned by good behavior.
+
+Apache explains what values underlie Apache community work here: 
https://community.apache.org/contributors/
+
+FINERACT will designate contributors to committers via the following process.
+
+* A current PMC member will decide to sponsor a contributor.
+* The sponsor will propose via the private mailing list, that a contributor be 
made a committer. The sponsor should explain why he or she believes the 
contributor should be made a committer.  At this point it would be unkind to 
inform the contributor in case the proposal fails the vote.
+* If within 72 hours of the proposal, no committers have vetoed the proposal, 
the proposal is accepted.
+* The sponsor will ask the contributor if he or she wishes to become a 
committer.
+* If contributor so desires, the sponsor will set in motion the processes 
necessary to add a new committer to FINERACT.
+* If a contributor is vetoed there is no need to inform him or her that a vote 
occurred.  Depending on the reason for a veto, the question may be raised again 
at a later date.
+
+Because committers determine who will become committers, they need to be able 
to recognize good committers.  A good committer also has other qualities.
+
+== Developer committer qualities
+
+To be made a developer committer, a contributor should have developed 
experience with FINERACT by
+
+* creating bug fixes or programming features,
+* producing multiple high quality code changes as determined by an existing 
committer using the Code Review Guide,
+* owning and fixing their own mistakes, and
+* mentoring other contributors.
+
+== Community Liaison Committer qualities
+
+To be made a community liaison committer, a contributor should have developed 
experience with FINERACT by
+
+* helping other users learn to use FINERACT, or
+* helping programmers learn what users need by providing detailed business 
requirements and use cases required for functional specifications, or
+* testing FINERACT for correctness, robustness, scaleability, security, or 
usability, and reporting bugs and issues found, or
+* connecting users with complementary needs with each other on the list, or
+* supporting implementers and users of FINERACT with best practices and 
lessons learned from practical implementation, or
+* writing documentation and tutorials for usage of FINERACT and design of 
financial services,
+* owning and fixing their mistakes, and
+* mentoring other contributors.
+
+== Developer committer rights and responsibilities
+
+* Everything listed in http://www.apache.org/dev/new-committers-guide.html
+* Reviewing code before it is committed using the Code Review Guide.
+* Reviewing code for other committers after it is committed.
+* Taking part in conversations on the dev mailing list when he or she has 
something to contribute.
+* Keeping all decision-making processes transparent for all project 
participants.
+* Community Liaison Committer rights and responsibilities
+* Everything listed in http://www.apache.org/dev/new-committers-guide.html
+* Prioritizing and refining user stories and tickets on JIRA. 
+* Moderating and maintaining functional documentation on FINERACT.
+* Taking part in conversations on the dev mailing list when he or she has 
something to contribute.
+* Keeping all decision-making processes transparent for all project 
participants.
+
+== PMC member rights and responsibilities
+
+* Taking part in conversations on the private mailing list and keeping those 
conversations private.
+* Proposing new committers and new PMC members.
+* Representing Apache Fineract to the ASF Board.
+* Protecting the Apache Fineract brand from misuse
+* Keeping all decision-making processes transparent for all project 
participants.
diff --git a/fineract-doc/modules/community/nav.adoc 
b/fineract-doc/modules/community/nav.adoc
new file mode 100644
index 0000000000..32395874c6
--- /dev/null
+++ b/fineract-doc/modules/community/nav.adoc
@@ -0,0 +1,3 @@
+.Community
+* xref:index.adoc[Introduction]
+* xref:governance.adoc[Governance]
diff --git a/fineract-doc/modules/community/pages/governance.adoc 
b/fineract-doc/modules/community/pages/governance.adoc
new file mode 100644
index 0000000000..28f81ace14
--- /dev/null
+++ b/fineract-doc/modules/community/pages/governance.adoc
@@ -0,0 +1,3 @@
+== PMC
+
+== How decisions are made
diff --git a/fineract-doc/modules/community/pages/index.adoc 
b/fineract-doc/modules/community/pages/index.adoc
new file mode 100644
index 0000000000..66293ff525
--- /dev/null
+++ b/fineract-doc/modules/community/pages/index.adoc
@@ -0,0 +1 @@
+== About the project
diff --git a/fineract-doc/modules/contributor/nav.adoc 
b/fineract-doc/modules/contributor/nav.adoc
new file mode 100644
index 0000000000..a5cf959022
--- /dev/null
+++ b/fineract-doc/modules/contributor/nav.adoc
@@ -0,0 +1,9 @@
+.Contributors Zone
+* xref:take-your-first-steps.adoc[Getting started]
+* xref:submitting-a-pull-request.adoc[Guidelines for submitting a PR]
+* xref:key-design-principles.adoc[Key Design principles]
+* xref:coding-conventions.adoc[Coding Conventions]
+* xref:checkstyle-and-spotless.adoc[Checkstyle and Spotless]
+* xref:error-handling.adoc[Error handling]
+* xref:logging-guidelines.adoc[Logging guidelines]
+
diff --git 
a/fineract-doc/modules/contributor/pages/checkstyle-and-spotless.adoc 
b/fineract-doc/modules/contributor/pages/checkstyle-and-spotless.adoc
new file mode 100644
index 0000000000..165bb9b095
--- /dev/null
+++ b/fineract-doc/modules/contributor/pages/checkstyle-and-spotless.adoc
@@ -0,0 +1,24 @@
+= Checkstyle and Spotless
+
+The project enforces code conventions using **Checkstyle** and **Spotless**.
+
+== Configuration Files
+* **Checkstyle**: `config/checkstyle/checkstyle.xml`
+* **Spotless**: `config/fineractdev-formatter.xml`
+
+These tools run automatically during the Gradle build and will fail the build 
if violations are detected.
+
+== Fixing Violations
+To automatically fix most formatting issues (Spotless and some Checkstyle), 
run:
+
+[source,bash]
+----
+./gradlew spotlessApply
+----
+
+To check for Spotless violations only:
+
+[source,bash]
+----
+./gradlew spotlessCheck
+----
\ No newline at end of file
diff --git a/fineract-doc/modules/contributor/pages/coding-conventions.adoc 
b/fineract-doc/modules/contributor/pages/coding-conventions.adoc
new file mode 100644
index 0000000000..ea70d37604
--- /dev/null
+++ b/fineract-doc/modules/contributor/pages/coding-conventions.adoc
@@ -0,0 +1,24 @@
+= Coding Conventions
+
+== How We Code
+
+We recommend that you configure your favourite Java IDE to match the project 
conventions.
+
+=== Eclipse IDE
+For Eclipse, you can go to `Window > Java > Code Style` and import:
+* `config/fineractdev-formatter.xml` under the formatter section.
+* `config/fineractdev-cleanup.xml` under the cleanup section.
+
+=== IntelliJ IDEA
+For IntelliJ, the project settings for code style should be automatically 
imported from the Gradle configuration.
+
+== Formatting
+
+We use Spotless to enforce code formatting. You can run the following command 
to automatically fix formatting violations:
+
+[source,bash]
+----
+./gradlew spotlessApply
+----
+
+This ensures consistent code style across the entire codebase.
\ No newline at end of file
diff --git a/fineract-doc/modules/contributor/pages/error-handling.adoc 
b/fineract-doc/modules/contributor/pages/error-handling.adoc
new file mode 100644
index 0000000000..d0343c675b
--- /dev/null
+++ b/fineract-doc/modules/contributor/pages/error-handling.adoc
@@ -0,0 +1,22 @@
+= Error Handling Guidelines
+
+== Exception Handling
+
+* **Log or Rethrow**: When catching exceptions, either rethrow them or log 
them. Include the root cause.
++
+[source,java]
+----
+catch (SomeException e) {
+    throw new AnotherException("..details..", e);
+    // OR
+    LOG.error("...context...", e);
+}
+----
+
+* **No Empty Catch Blocks**: Completely empty catch blocks are VERY 
suspicious. Do not "swallow" exceptions unless you are absolutely sure.
+    * Such "normal exceptions" are often indications of using the wrong API 
(e.g., throwing an exception for an expected condition instead of returning 
empty/optional).
+
+* **Tests**: In tests, typically propagate exceptions (`throws SomeException`) 
so the test fails if it occurs.
+    * To test for an exception, use `Assert.assertThrows()`.
+
+* **NullPointer**: Never catch `NullPointerException`. Fix the code instead.
\ No newline at end of file
diff --git a/fineract-doc/modules/contributor/pages/key-design-principles.adoc 
b/fineract-doc/modules/contributor/pages/key-design-principles.adoc
new file mode 100644
index 0000000000..0c393b4e29
--- /dev/null
+++ b/fineract-doc/modules/contributor/pages/key-design-principles.adoc
@@ -0,0 +1,54 @@
+= Key Design Principles
+
+== RESTful API
+
+The platform exposes all its functionality via a *practically-RESTful API*, 
that communicates using JSON.
+
+We use the term *practically-RESTful* in order to make it clear we are not 
trying to be fully REST compliant but still maintain important RESTful 
attributes like:
+
+* **Stateless**: The platform maintains no conversational or session-based 
state. This allows for horizontal scaling.
+* **Resource-oriented**: The API is focused around a set of resources using 
HTTP vocabulary and conventions (GET, PUT, POST, DELETE, HTTP status codes). 
This results in a simple and consistent API for clients.
+
+See the online API Documentation for more details.
+
+== Multi-tenanted
+
+The Fineract platform has been developed with support for multi-tenancy at the 
core of its design. This means that it is just as easy to use the platform for 
Software-as-a-Service (SaaS) type offerings as it is for local installations.
+
+The platform uses an approach that isolates an FI's data per database/schema.
+
+== Extensible
+
+While each tenant will have a set of core tables, the platform tables can be 
extended in different ways for each tenant through the use of Data tables 
functionality.
+
+== Package Structure
+
+The intention is for platform code to be packaged in a "vertical slice" way 
(as opposed to technical layers like controller/service/dao).
+
+Source code location: `fineract-provider/src/main/java/org/apache/fineract`
+
+Major modules include:
+* accounting
+* useradministration
+* infrastructure
+* portfolio
+** charge
+** client
+** fund
+** loanaccount
+
+Within each vertical slice, there is a common packaging structure:
+* `api` - `XXXApiResource.java` (REST API implementation)
+* `handler` - `XXXCommandHandler.java` (Specific handlers)
+* `service` - Read + Write services for the functional area
+* `domain` - Object-Oriented concepts (Entities)
+* `data` - Data Transfer Objects (DTOs)
+* `serialization` - JSON conversion logic
+
+== Maker-Checker (Four-Eyes Principle)
+
+Enables applications to support a maker-checker style workflow process. 
Commands that pass validation will be persisted. Maker-checker can be 
enabled/disabled at a fine-grained level for any state-changing API.
+
+== Fine-Grained Access Control
+
+A fine-grained permission is associated with each API. Administrators have 
granular control over what roles or users have access to specific functions.
\ No newline at end of file
diff --git a/fineract-doc/modules/contributor/pages/logging-guidelines.adoc 
b/fineract-doc/modules/contributor/pages/logging-guidelines.adoc
new file mode 100644
index 0000000000..ffab08fc2a
--- /dev/null
+++ b/fineract-doc/modules/contributor/pages/logging-guidelines.adoc
@@ -0,0 +1,34 @@
+= Logging Guidelines
+
+== Library
+We use http://www.slf4j.org[SLF4J] as our logging API.
+
+* **Never use System.out/err**: Always use `LOG.info()` or `LOG.error()`.
+* **Use Placeholders**: Use parameterized logging instead of string 
concatenation.
++
+[source,java]
+----
+// GOOD
+LOG.error("Could not... details: {}", something, exception);
+
+// BAD
+LOG.error("Could not... details: " + something, exception);
+----
+
+== Log Levels
+
+* **`LOG.error()`**: Use for unexpected conditions that need operator 
attention.
+    * Includes technical problems (database unreachable) and bugs.
+    * Does NOT include validation errors (which should be user responses).
+    * _Note_: SLF4J has no `FATAL` level; use `ERROR`.
+
+* **`LOG.warn()`**: Use sparingly. Decide if it's an error or not.
+
+* **`LOG.info()`**: Use for one-time actions (e.g., startup).
+    * Do NOT use for regular application usage info (use Metrics instead).
+    * Can be used freely in tests.
+
+* **`LOG.debug()`**: Use for investigation data.
+    * Not shown in default configuration but can be enabled for 
troubleshooting.
+
+* **`LOG.trace()`**: Not used in Fineract.
\ No newline at end of file
diff --git 
a/fineract-doc/modules/contributor/pages/submitting-a-pull-request.adoc 
b/fineract-doc/modules/contributor/pages/submitting-a-pull-request.adoc
new file mode 100644
index 0000000000..0a523105bb
--- /dev/null
+++ b/fineract-doc/modules/contributor/pages/submitting-a-pull-request.adoc
@@ -0,0 +1,62 @@
+== Submitting a Pull Request
+
+We encourage all community members to contribute actively to the upstream 
Fineract codebase. All contributions come in the form of a pull request 
referencing a JIRA ticket outlining the intent of the contribution.
+
+We request that your commit message include a FINERACT JIRA issue, recommended 
to be put in parentheses at the end of the first line. Start with an upper case 
imperative verb (not past form), and a short but concise clear description. 
(E.g. Add enforced HideUtilityClassConstructor checkstyle (FINERACT-821) or Fix 
inability to reschedule when interest accrued larger than EMI (FINERACT-1109) 
etc.).
+
+If your PR is failing to pass our CI build due to a test failure, then:
+
+** Understand if the failure is due to your PR or an unrelated unstable test.
+
+** If you suspect it is because of a "flaky" test, and not due to a change in 
your PR, then please do not simply wait for an active maintainer to come and 
help you, but instead be a proactive contributor to the project - see next 
steps. Do understand that we may not review PRs that are not green - it is the 
contributor's (that's you!) responsability to get a proposed PR to pass the 
build, not primarily the maintainers.
+
+** Search for the name of the failed test on https://issues.apache.org/jira/, 
e.g. for AccountingScenarioIntegrationTest you would find FINERACT-899.
+
+** If you happen to read in such bugs that tests were just recently fixed, or 
ignored, then rebase your PR to pick up that change.
+
+** If you find previous comments "proving" that the same test has arbitrarily 
failed in at least 3 past PRs, then please do yourself raise a small separate 
new PR proposing to add an @Disabled // TODO FINERACT-123 to the respective 
unstable test (e.g. #774) with the commit message mentioning said JIRA, as 
always. (Please do NOT just @Disabled any existing tests mixed in as part of 
your larger PR.)
+
+** If there is no existing JIRA for the test, then first please evaluate 
whether the failure couldn't be a (perhaps strange) impact of the change you 
are proposing after all. If it's not, then please raise a new JIRA to document 
the suspected Flaky Test, and link it to FINERACT-850. This will allow the next 
person coming along hitting the same test failure to easily find it, and 
eventually propose to ignore the unstable test.
+
+** Then (only) Close and Reopen your PR, which will cause a new build, to see 
if it passes.
+Of course, we very much appreciate you then jumping onto any such bugs and 
helping us figure out how to fix all ignored tests!
+
+** Pull Request Size Limit documents that we cannot accept huge "code dump" 
Pull Requests, with some related suggestions.
+
+Guideline for new Feature commits involving Refactoring: 
+
+[attributes]
+....
+If you are submitting PR for a new Feature, and it involves refactoring, try 
to differentiate "new Feature code" with "Refactored" by placing them in 
different commits. This helps review to review your code faster.
+....
+
+
+We have an automated Bot which marks pull requests as "stale" after a while, 
and ultimately automatically closes them.
+
+
+The steps below are part of our Github pull request template as a checklist 
while submitting. Don't treat this as mere boxes to tick off but rather ensure 
you're following each step so your PR doesn't get rejected and it can merged in 
a timely manner:
+
+### Description
+
+Describe the changes made and why they were made.
+
+Ignore if these details are present on the associated [Apache Fineract JIRA 
ticket](https://github.com/apache/fineract/pull/1284).
+
+
+### Checklist
+
+Please make sure these boxes are checked before submitting your pull request - 
thanks!
+
+- [ ] Write the commit message as described above
+- [ ] Acknowledge that we will not review PRs that are not passing the build 
_("green")_ - it is your responsibility to get a proposed PR to pass the build, 
not primarily the project's maintainers.
+
+- [ ] Create/update unit or integration tests for verifying the changes made.
+
+- [ ] Follow coding conventions as described xref:coding-conventions.adoc[here]
+
+- [ ] Add required Swagger annotation and update API documentation at 
fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with 
details of any API changes
+
+- [ ] Submission is not a "code dump".  (Large changes can be made "in 
repository" via a branch.  Ask on the developer mailing list for guidance, if 
required.)
+
+
+
diff --git a/fineract-doc/modules/contributor/pages/take-your-first-steps.adoc 
b/fineract-doc/modules/contributor/pages/take-your-first-steps.adoc
new file mode 100644
index 0000000000..235815f8f6
--- /dev/null
+++ b/fineract-doc/modules/contributor/pages/take-your-first-steps.adoc
@@ -0,0 +1,68 @@
+== Take Your First Steps
+
+=== Understand the basics
+Not sure what a pull request is, or how to submit one? Take a look at GitHub's 
excellent help documentation first.
+
+=== Search Issues first; create an issue if necessary
+
+Is there already an issue that addresses your concern? Do a bit of searching 
in our 
https://issues.apache.org/jira/projects/FINERACT/issues/FINERACT-1221?filter=allopenissues[issue
 tracker] to see if you can find something similar. If you do not find 
something similar, please create a new issue before submitting a pull request 
unless the change is truly trivial -- for example: typo fixes, removing 
compiler warnings, etc.
+
+=== Discuss non-trivial contribution ideas with the community
+If you're considering anything more than correcting a typo or fixing a minor 
bug, please discuss it on the mailing list before submitting a pull request. 
We're happy to provide guidance, but please spend an hour or two researching 
the subject on your own.
+
+== Create a Branch
+=== Branch from develop
+Develop currently represents work toward Apache Fineract 1.0.0. Please submit 
all pull requests there, even bug fixes and minor improvements.
+
+[source]
+----
+git checkout develop
+----
+
+=== Use short branch names
+Branches used when submitting pull requests should preferably be named 
according to issues prefixed FINERACT followed by a dash and the issue number, 
e.g. 'FINERACT-1234'. This is important, because branch names show up in the 
merge commits that result from accepting pull requests and should be as 
expressive and concise as possible.
+
+[source]
+----
+git checkout -b [topic]
+----
+
+=== Pull in changes
+Keep up to date
+
+There will be development changes to both repositories almost every day for 
the foreseeable future so its important to keep your fork of the software up to 
date with the latest changes.
+
+To pull in upstream changes from repository you forked:
+
+[source]
+----
+git checkout develop
+git fetch upstream
+git merge upstream/develop
+----
+
+WARNING: You should not have any local changes on your develop branch, if you 
do, use rebase!
+
+
+Once you have pulled all latest changes and your build was successful, push 
the just merged changes to the develop branch on your fork.
+
+[source]
+----
+git push origin develop
+----
+=== Rebasing your work
+After you pulled all changes from upstream you need to rebase your topic 
branch with the latest code.
+
+[source]
+----
+git checkout [topic]
+git rebase develop
+----
+
+If you are ready push your topic branch to your GitHub account:
+[source]
+----
+git push origin [topic]
+----
+
+Now thats your changes have been pushed to your github account, follow the 
steps and guidelines found xref:submitting-a-pull-request.adoc[here] to submit 
your pull request from your git account to fineract.
\ No newline at end of file
diff --git a/fineract-doc/modules/development/nav.adoc 
b/fineract-doc/modules/development/nav.adoc
new file mode 100644
index 0000000000..dafed7c4ea
--- /dev/null
+++ b/fineract-doc/modules/development/nav.adoc
@@ -0,0 +1,2 @@
+.Contributor Zone
+* xref:development.adoc[How to Setup Project for development]
diff --git a/fineract-doc/modules/development/pages/contributor-guide.adoc 
b/fineract-doc/modules/development/pages/contributor-guide.adoc
new file mode 100644
index 0000000000..0ea30b7eae
--- /dev/null
+++ b/fineract-doc/modules/development/pages/contributor-guide.adoc
@@ -0,0 +1,15 @@
+= Welcome
+
+There are lots of ways to contribute to Apache Fineract: coding, testing, 
improving the build process and tools, or contributing to the documentation. 
This guide provides information that will not only help you get started as a 
contributor, but that you'll find handy to refer to even as an old hand.
+
+== Newcomers to Apache
+  
+== Contribution Guidelines 
+  
+== Take Your First Steps
+  
+== Key Design Principles
+
+== Coding Conventions
+  
+== Getting Started Docs
diff --git a/fineract-doc/modules/development/pages/development.adoc 
b/fineract-doc/modules/development/pages/development.adoc
new file mode 100644
index 0000000000..9b728c427a
--- /dev/null
+++ b/fineract-doc/modules/development/pages/development.adoc
@@ -0,0 +1,3 @@
+= Introduction
+
+There are lots of ways to contribute to Apache Fineract: coding, testing, 
improving the build process and tools, or contributing to the documentation. 
This guide provides information that will not only help you get started as a 
contributor, but that you'll find handy to refer to even as an old hand.


Reply via email to