Skip to main content

BUSINESS.md: Bank8:eBank — Business Requirements & Functionality

Audience: product owners, business analysts, and anyone evaluating what Bank8:eBank does for the business. For architecture read README.md; for wire-level detail read DESIGN.md.

1. Business Purpose​

  • Give retail customers a complete self-service digital banking channel: onboarding, account opening, balances, transactions, transfers, statements, and notifications.
  • Serve as the customer-facing side of open banking: the customer grants and revokes FDX data-sharing consent for external fintech providers from inside their own bank app.
  • Keep every credential, token, and byte of tenant data under platform control — the app itself carries nothing sensitive.

2. Business Scope (What the Service Provides)​

CapabilityDelivered through
Customer sign-up / sign-in via hosted identity UISentin8:Auth (BFF-brokered)
Product catalog browsing (13 ledger products)Bank8:Ledger
Account opening (current, savings, US checking/savings, Shariah savings, time deposit, loan, credit card, mortgage, line of credit, wallet, BNPL, home-loan redraw)Bank8:Ledger
Balances and transaction history (paged)Bank8:Ledger
Internal transfers between own accountsBank8:Ledger postings
External payments & payee history viewBank8:Payments
Statement list and secure downloadBank8:Ledger + storage signed URLs
In-app notification inbox with unread indicatorpost + SSE
FDX consent review and revocation (customer side)Bank8:FDX
Instance admin overview (staff)runtime context
Product activation & parameter overrides (staff)Bank8:Ledger
FDX provider profile, recipient registry, consent monitoring (staff)Bank8:FDX

What eBank does NOT own (business boundary):

ConcernOwning service
Identity, consent issuance, hosted sign-inSentin8:Auth
Financial truth (balances, postings, products)Bank8:Ledger
Payment orchestration, limits, riskBank8:Payments
FDX provider gateway, consent enforcement, data minimizationBank8:FDX
Session/token custodySentin8:BFF
Structured persistenceSentin8:DB
Statement/document bytesstorage
Notifications fan-outpost

3. Business Capabilities​

AreaCapabilityBusiness rule
OnboardingCustomer provisioningA signed-in subject is linked to exactly one ledger customer per environment; replays never duplicate it.
DepositsAccount openingA customer may open any catalog product they are eligible for; the account appears immediately in the dashboard.
ServicingBalances & transactionsA customer sees only their own accounts; internal bank plumbing accounts are invisible.
TransfersMoney movementEvery transfer is idempotent — a retried submission can never double-post.
PaymentsExternal payment visibilityCustomers see payments and payees recorded by the payment engine; they cannot corrupt payment state.
StatementsDocument accessStatements download through short-lived signed URLs only.
Open banking (customer)Consent controlThe customer can list every active data-sharing consent and revoke any of them instantly.
Open banking (staff)Provider administrationStaff manage the provider profile, review registered external recipients, and monitor consent activity.
AdminProduct lifecycleStaff activate/deactivate ledger products and override default parameters per environment; every change is audited upstream.

4. Business Events (Outbound)​

eBank emits no domain events of its own (it is a pure presentation layer). Business events the app triggers upstream by performing operations:

Operation in appUpstream event fired by the owning service
Transfer / account opening / customer provisioningLedger posting & account events (Bank8:Ledger)
Consent revocationFDX consent lifecycle event (Bank8:FDX)
Product activation / override (staff)Ledger product event (Bank8:Ledger)

Inbound (consumed): notification events delivered over SSE (sentin8:notification.received, sentin8:notification.read) — used to keep the inbox unread badge live.

5. Business Rules & Invariants​

  1. No credential, token, or refresh token ever reaches the customer client.
  2. A customer sees only their own accounts (internal bank accounts are never exposed to the customer surface).
  3. Every money movement is idempotent — retries cannot double-post.
  4. A customer can always see and revoke every consent sharing their data.
  5. Admin pages are staff-only; customers cannot reach them (enforced by the BFF, not just hidden in the UI).
  6. Statement bytes leave storage only through signed, short-lived URLs.
  7. The app fails closed: without a verified instance identity no page loads.

6. Target-User Roles & Use Cases​

PersonaWhat they do
Retail customerSigns up, opens products, checks balances, transfers, downloads statements, manages notification inbox, grants/revokes FDX consents.
Bank staff (admin surface)Monitors instance status, activates ledger products and overrides parameters, oversees FDX provider profile and registered recipients.
Product ownerMeasures adoption of self-service banking and consent-management flows.

7. KPIs / Success Criteria​

  • Reliability: fail-closed bootstrap with zero cross-tenant incidents; transfer success rate on first submission.
  • Latency: dashboard and account-detail loads perceived as instant under normal network conditions (proxy round-trip only, no extra hops).
  • Security: zero token exposure incidents; 100% of admin mutations audited upstream.
  • UX quality: uniform loading/error frames across all pages; live unread badge without page refresh.
  • Open banking: consent revocation is instant and always discoverable by the customer.

8. Dependencies & Reliance on Other Services​

DependencyWhy
Sentin8:AuthAll sign-in/sign-up; consent UI for provider flows
Sentin8:BFFSession custody, token attach, scope gating, proxy
Bank8:LedgerProducts, accounts, balances, postings, statements, customers
Bank8:PaymentsPayments and payee history
Bank8:FDXConsent surfaces, provider profile, recipients
Sentin8:AppInstance provisioning, runtime context, listing
Sentin8:Bus + postNotification fan-out to the SSE stream
Sentin8:TLSHostname → instance resolution, TLS termination

9. Acceptance Criteria​

  1. A new customer can sign up through the hosted identity UI and land in a working dashboard without any manual backend step.
  2. Customer can open any catalog product and see it immediately.
  3. Customer can transfer between own accounts; a retried transfer never double-posts.
  4. Customer can download statements securely (signed URL, no cached file).
  5. Customer can view and revoke FDX consents; revocation takes effect immediately for the recipient.
  6. Staff can act on the admin surface and their actions are gated by staff authorization upstream.
  7. No page ever loads without verified instance context (fail closed).
  8. E2E journeys (sign-up → account opening → transfer → statements → consent) run through the browser only, exactly like a real user.

10. Open Business Questions​

  • Should customers be able to initiate external (cross-bank) payments from eBank, or remain read-only on payment history today?
  • Should statement delivery also be push-based (notification with deep link) in addition to in-app listing?

Design attribution: bank8:ebank and its underlying concepts were designed by Hamid Jahanzad Hamid@Jahanzad.com.