Angular back-office UI for Apache Fineract, the open-source core banking platform

Clone this repo:
  1. 981dd7f Merge pull request #535 from Hashim1999164/fix/audit-trails-redirect by Aman-Mittal · 13 hours ago main
  2. e26ba6e Merge pull request #537 from subhranshudash13-dotcom/fix/534-entity-client-search by Aman-Mittal · 13 hours ago
  3. d5d8f6c Add playwright test for leftover audit trails path by Hashim Khan · 20 hours ago
  4. ad9533c test(e2e): move entity client search test to backend suite by subhranshudash13-dotcom · 31 hours ago
  5. c3ebede Merge pull request #525 from zhangxinyao88/codex/docs-contributor-agent-guide by Aman-Mittal · 2 days ago

Fineract Backoffice UI

A modern Angular-based backoffice interface for Apache Fineract—the open-source core banking platform for fintechs and community banks. This UI connects to Fineract's REST APIs and is designed to be deployed alongside Fineract, enabling users to understand and operate core banking functionality through role-specific experiences.


Overview

The Fineract Backoffice UI provides a user-friendly way to interact with Fineract’s core features. It is built to mirror the capabilities of the Fineract platform and expose them through workflows tailored to key user profiles, so each role can focus on the tasks most relevant to them.


Key User Profiles & Core Functionality

1. Admin User

Admins manage the organizational setup, products, and staff. The UI supports:

CapabilityDescription
Organization & StructureManage offices, hierarchy, and organizational units
Product SetupConfigure loan products, savings products, and charges with interest rules, grace periods, and fees
Staff & User ManagementCreate and manage staff, assign roles, set permissions
Customer ManagementCreate and manage customers, profiles, and organizational structure
Code ManagementManage custom codes and lookups used across the system
Currency & ConfigurationConfigure currencies, interest rates, and organization-level settings

2. Loan Officer

Loan officers focus on customer relationships and loan lifecycle. The UI supports:

CapabilityDescription
Customer PortfolioView assigned customers, their profiles, financial history, and identification
Loan ApplicationsCreate and submit loan applications for customers
DisbursementsProcess single or multi-stage disbursements based on milestones
RepaymentsRecord repayments and track collection status
Loan TrackingView loan status, amortization schedules, delinquency, and arrears
CollectionsMonitor overdue loans and apply penalties where configured

3. System Admin

System admins handle security, audit, and infrastructure. The UI supports:

CapabilityDescription
User Roles & PermissionsDefine roles and assign granular permissions to staff
Audit & ReportingAccess audit logs, activity history, and system reports
Security ConfigurationManage authentication, passwords, and security settings
System HealthMonitor API status, integrations, and system health
Batch JobsView and manage scheduled batch jobs (e.g., interest posting, delinquency)
Data ManagementExport data and manage system backups where applicable

Technology Stack

  • Framework: Angular (standalone components, signals)
  • UI Components: Ionic (@ionic/angular v8, Material Design mode)
  • Backend Integration: Fineract REST API (e.g. /fineract-provider/api/v1/)
  • Authentication: Fineract-based auth (basic auth or token-based)
  • Testing: Vitest (unit), Playwright (e2e)
  • Deployment: Designed to run alongside Fineract (e.g. Docker, reverse proxy)

Architecture

┌─────────────────────┐         REST API          ┌─────────────────────┐
│  Fineract Backoffice │ ─────────────────────────▶│   Apache Fineract   │
│  UI (Angular SPA)   │  HTTPS (e.g. :8443)       │   (Core Platform)   │
└─────────────────────┘                            └─────────────────────┘
                                                              │
                                                              ▼
                                                    ┌─────────────────────┐
                                                    │   Database          │
                                                    │   (PostgreSQL /     │
                                                    │   MariaDB)          │
                                                    └─────────────────────┘

Prerequisites

  • Node.js >=22.22.3 and npm. The repository includes the Angular CLI, so a global install is not needed.
  • For local HTTPS development, mkcert to generate the ignored ssl/localhost.* files once.
  • A Fineract instance for manual work or real-backend E2E tests. Mocked unit and Playwright tests do not need one.

Getting Started

Quick start

# Install exactly what the lockfile specifies
npm ci

# Generate local-only HTTPS certificates (first run)
./scripts/setup-ssl.sh

# Run development server
npm start

The app is available at https://localhost:4200. The development proxy keeps API traffic same-origin; see Project Setup Guide to connect a local Fineract instance or a sandbox.

Validate a change

# Run unit tests (Vitest)
npm test -- --watch=false

# Install the Chromium binary used by the next command (first run)
npx playwright install chromium

# Run the fast, mocked browser tests (no Fineract backend required)
npm run test:e2e -- --project=mocked

# Run linting
npm run lint

# Check formatting without modifying files
npm run format:check

# Production build
npm run build

For real-backend E2E, a local Docker stack, and focused Playwright runs, see E2E testing. The complete PR check list and commands for reproducing failures are in CI checks.

Configuration

  • API Base URL: Point to your Fineract instance (e.g. https://your-fineract-host:8443/fineract-provider/api/v1)
  • Authentication: Use Fineract credentials; the UI will send them according to your auth strategy.

Deployment with Fineract

The whole stack, in one command

docker compose -f deploy/docker-compose.yml up --build
# http://localhost:8080  —  mifos / password on a fresh database

This brings up PostgreSQL, Apache Fineract and the UI on one network. Fineract is deliberately not published to the host: the browser reaches it through the UI's own origin.

How the UI reaches the API

The application always calls /api/v1 on its own origin, and NGINX proxies that to Fineract. That is not a convenience — it is what lets the shipped Content-Security-Policy keep connect-src 'self'. Pointing the browser at Fineract on another host means editing two places deliberately: the CSP in deploy/nginx.conf.template, and allowedApiOrigins in config.json. They are separate so that a browser-side setting alone cannot open a new destination.

browser ──► http://ui/           ──► index.html + assets
browser ──► http://ui/api/v1/... ──► nginx ──► https://fineract:8443/fineract-provider/api/v1/...

Configuration

Every value is read at container start; nothing needs a rebuild.

VariableDefaultWhat it does
FINERACT_API_URLhttps://fineract:8443/fineract-provider/apiThe upstream Fineract, as reachable from the container. Not a browser-visible URL.
FINERACT_PROXY_SSL_VERIFYoffWhether NGINX verifies the upstream certificate. Stock Fineract images are self-signed; turn this on wherever the upstream presents a certificate the container trusts.
FINERACT_FORWARDED_PROTOhttpsThe X-Forwarded-Proto sent to Fineract. It answers 302 to every API call if this is anything else, and the NGINX-to-Fineract hop really is TLS. Set to $scheme only behind a proxy that already sets the header.
DEFAULT_TENANTdefaultTenant pre-filled on the sign-in form.
RBAC_ENABLEDtrueClient-side permission gating. Must be exactly true or false; anything else refuses to start.
INSTITUTION_TYPEuniversalWhich group-lending features are exposed.
DEVELOPER_TOOLS_ENABLEDfalseExposes screens driving Fineract's /v1/internal/** endpoints. Leave off anywhere real.

Serving the build yourself

npm ci && npm run build     # output in dist/fineract-backoffice-ui/browser

Serve that directory from any web server, and give it the two things the container provides: a config.json (see public/config.json for the shape) and a proxy from /api/ to Fineract on the same origin. deploy/nginx.conf.template is a working reference for both.


Fineract API Reference


License

Copyright 2025-2026 The Apache Software Foundation

Licensed under the Apache License, Version 2.0. See LICENSE for details.


Project Documentation

For more information on contributing, setting up the project, and our coding standards, please refer to the following documents: