Architectural Decisions & PM Responses

As the Technical Architect, here are the strategic responses to the Product Manager's concerns regarding the Fineract Backoffice UI baseline, now updated to include Community Bank specific considerations.


1. Data Privacy & Tenant Isolation

  • Dynamic Resolution: Tenant ID resolved from hostname or storage, never hardcoded.
  • Security Enforcement: Strict injection via HttpInterceptor and immutable application state.

2. Connectivity & Performance (MFI vs. Community Bank)

  • MFI (Last-Mile): PWA support with IndexedDB sync queue for offline loan applications.
  • Community Bank (Scalability): We will implement a Virtual Scrolling and Server-side Pagination pattern as the default for all data grids to ensure the UI remains performant when handling community bank-sized datasets.

3. White Labeling & Configuration-Driven UI

  • Runtime Theme Injection: CSS Variables used for branding, loaded from a tenant-specific branding.json.
  • Formly / Dynamic Forms: Entity forms (Clients, Loans) will be schema-driven to allow vendors to hide/show fields (e.g., “Social Collateral” for MFIs vs “FICO Score” for Banks) without code changes.
  • Mode-Based Layouts: The layout engine will support “MFI Mode” (Center/Group centric) vs “Bank Mode” (Individual/Branch centric) via high-level configuration.

4. Security & Compliance

  • Local HTTPS: Automated SSL scaffolding for secure development against remote sandboxes.
  • Zero Persistence for PII: Sensitive data kept in-memory (Angular Signals).
  • Encrypted Storage: Non-sensitive persistence encrypted via Web Crypto API.

5. Relationship Management & Domain Schemas

  • 360-View profile: To support Community Bank relationship banking, the client profile will be designed as a “Composite Resource,” aggregating data from Fineract's Clients, Accounts, and Loans APIs into a single dashboard view.

6. Regulatory & Audit

  • Telemetry Service: Scaffolded to log UI-side actions, meeting strict banking audit requirements.
  • RBAC: Structural directive *appHasPermission to dynamically adapt the UI based on granular Fineract permissions.