rl-docs-hub

Home · Apps · rl-bank-mvp


Account detail + history realism slice

Status: Draft, intended to match the next implementation slice after card servicing/activity.

Why this slice

The fake-bank preview already has account applications, approved accounts, transfers, cards, notifications, and activity. What it still lacks is the thing customers and support staff look at constantly in day-to-day banking: a believable account detail surface.

This slice makes approved accounts feel operationally real by adding:

This is a better next step than random feature breadth because it deepens the existing core bank loop: approved account → card linked → transfer activity → account history visible.

Product / feature scope

In scope

Out of scope

Product design

Customer experience shape

UI structure

Business logic and rules

  1. Customer may only view accounts that belong to the authenticated customer.
  2. Account detail only exposes transactions belonging to the same authenticated customer.
  3. Recent transaction metrics should be derived from persisted transactions, not fabricated UI placeholders.
  4. 30-day inflow is the sum of positive customer-visible incoming transactions for the account.
  5. 30-day outflow is the sum of customer-visible outgoing transactions for the account.
  6. Recent transaction count should be a lightweight operational signal, not a separate source of truth.
  7. If available balance differs from current balance, UI should present that gap as a balance hold / pending-effect style hint without implying unsupported settlement rails.
  8. Closed accounts remain visible historically but should not be promoted as primary transfer-ready accounts.

Technical design summary

API additions / changes

App additions

Persistence approach

Technical architecture / data flow

flowchart LR
  Customer[Authenticated customer] --> App[Customer web/mobile app]
  App --> GQL[rl-bank-api GraphQL]
  GQL --> AccountSvc[Account service]
  GQL --> TxSvc[Transaction service]
  AccountSvc --> AccountDB[(accounts)]
  AccountSvc --> CardDB[(cards)]
  AccountSvc --> TxDB[(transactions)]
  TxSvc --> TxDB
  App --> View[Portfolio cards + account detail + recent transactions]

Flow: account portfolio

  1. app queries publicListMyAccounts
  2. API returns enriched accounts with balances and derived summary fields
  3. app highlights active accounts and chooses a default selected account

Flow: account detail history

  1. app queries publicListMyTransactions
  2. app filters to the selected account
  3. app shows recent entries newest-first with amount, reference, direction, and balance-after context

Permissions / access model

Customer permissions

API guard model

Least-privilege impact

Notes / exceptions