Resource Screens¶
The admin dashboard provides 48 registered resources across 42 resource directories, each following a consistent file structure.
Resource File Convention¶
admin/{resource}/
├── index.ts # Barrel export + MUI icon
├── {Resource}List.tsx # List view with filters, sorting, pagination
├── {Resource}Show.tsx # Detail view (SimpleShowLayout or TabbedShowLayout)
├── {Resource}Create.tsx # Create form (optional)
├── {Resource}Edit.tsx # Edit form (optional)
├── {Resource}Actions.tsx # Action buttons (optional)
├── *Dialog.tsx # Custom dialogs for complex actions (optional)
├── Nested*.tsx # Nested resource tables (optional)
└── __tests__/ # Vitest tests
Index File Pattern¶
Each resource directory exports its views and an icon:
// borrowers/index.ts
import PeopleIcon from "@mui/icons-material/People";
export { default as BorrowerList } from "./BorrowerList";
export { default as BorrowerCreate } from "./BorrowerCreate";
export { default as BorrowerEdit } from "./BorrowerEdit";
export { default as BorrowerShow } from "./BorrowerShow";
export const borrowerIcon = PeopleIcon;
Resource Inventory¶
Origination¶
| Resource | Views | Description |
|---|---|---|
borrowers |
List, Show, Create, Edit | Borrower profiles with nested contacts, identities, instruments |
loans |
List, Show, Create, Edit | Loan records with lifecycle actions and nested resources |
programs |
List, Show, Create, Edit | Lending programs (installment, lease, LOC) |
products |
List, Show, Create, Edit | Loan products under programs |
promotional-programs |
List, Show, Create, Edit | Promotional rate/payment programs |
Servicing¶
| Resource | Views | Description |
|---|---|---|
payments |
List, Show | Payment records with reversal/refund actions |
fees |
List, Show | Assessed fees with waive action |
fee-schedules |
List, Show, Create, Edit | Fee schedule configuration |
disbursements |
List, Show | Disbursement records with process/complete actions |
collateral |
List, Show, Create, Edit | Collateral items with nested liens and valuations |
modifications |
List, Show | Loan modifications with approve/reject/apply workflow |
forbearances |
List, Show | Forbearance agreements with complete/cancel actions |
deferments |
List, Show | Payment deferments with complete/cancel actions |
payoff-quotes |
List, Show | Payoff quote generation and expiry |
suspense |
List, Show | Suspense entries with apply/refund actions |
Collections¶
| Resource | Views | Description |
|---|---|---|
delinquency |
List, Show | Delinquency records (read-only, system-managed) |
collection-queues |
List, Show, Create, Edit | Collection queue configuration with dashboard |
dunning-schedules |
List, Show, Create, Edit | Automated dunning sequence configuration |
collection-agencies |
List, Show, Create, Edit | External collection agency management |
Case Management¶
| Resource | Views | Description |
|---|---|---|
cases |
List, Show, Create | Support cases with escalate/close/reopen/snooze actions |
supercases |
List, Show, Create | Bulk case grouping with populations |
campaigns |
List, Show, Create, Edit | Mass outreach campaigns with launch/pause |
interactions |
List, Show | Borrower interaction records |
pre-delinquency-rules |
List, Show, Create, Edit | Early warning rule configuration |
Portfolio & Compliance¶
| Resource | Views | Description |
|---|---|---|
portfolios |
List, Show, Create, Edit | Portfolio management with auto-assign and sell actions |
investors |
List, Show, Create, Edit | Investor profiles with settlement instruments |
loan-tape-configs |
List, Show, Create, Edit | Loan tape generation configuration |
compliance-rules |
List, Show, Create, Edit | Regulatory compliance rule definitions |
compliance-monitors |
List, Show | Ongoing compliance monitoring results |
credit-reporting |
List, Show | Credit bureau reporting records |
credit-disputes |
List, Show, Create | Credit dispute investigation and resolution |
Communications¶
| Resource | Views | Description |
|---|---|---|
communication-templates |
List, Show, Create, Edit | Jinja2 message templates |
communication-logs |
List, Show | Communication delivery logs |
Accounting¶
| Resource | Views | Description |
|---|---|---|
gl-accounts |
List, Show, Create | General ledger accounts |
journal-entries |
List, Show | Journal entries with post/reverse actions |
Administration¶
| Resource | Views | Description |
|---|---|---|
users |
List, Show, Edit | Tenant user management with role assignment |
webhooks |
List, Show, Create, Edit | Webhook subscription management |
index-rates |
List, Show, Create | Interest rate index management |
provider-configs |
List, Show, Create, Edit | Provider credential configuration |
program-provider-assignments |
List, Create | Provider-to-program mapping |
reports |
List, Show | Report generation and viewing |
documents |
List, Show | Document management |
View Patterns¶
List Views¶
All list views use react-admin's <List> with:
- Filters:
<SelectInput>with static choice arrays for enum fields,<TextInput>for search - Sorting: Clickable column headers
- Pagination: Bottom pagination controls
- Datagrid: Columns with field components (
TextField,DateField,ReferenceField,MoneyField,StatusField)
Show Views¶
Two patterns based on complexity:
Simple resources use <SimpleShowLayout>:
<Show>
<SimpleShowLayout>
<TextField source="name" />
<StatusField source="status" />
<MoneyField source="amount" />
</SimpleShowLayout>
</Show>
Complex resources (Borrowers, Loans) use <TabbedShowLayout> with tabs for nested resources:
<Show>
<TabbedShowLayout>
<TabbedShowLayout.Tab label="Summary">
<TextField source="loan_number" />
...
</TabbedShowLayout.Tab>
<TabbedShowLayout.Tab label="Payments">
<ReferenceManyField reference="payments" target="loan_id">
<Datagrid>...</Datagrid>
</ReferenceManyField>
</TabbedShowLayout.Tab>
</TabbedShowLayout>
</Show>
Nested Resources¶
Two approaches for child resources:
-
<ReferenceManyField>--- For child resources with flat endpoints (payments, fees, disbursements). react-admin handles fetching automatically. -
Custom MUI tables --- For child resources with only nested endpoints (liens, valuations). Uses
dataProvider.getNestedList()directly.
Action Buttons¶
Business actions use the shared <ActionButton> component with optional confirmation dialogs. For actions requiring form input, standalone MUI <Dialog> components collect data before calling dataProvider.action().
See Also¶
- Shared Components --- MoneyField, StatusField, ActionButton
- Data Provider --- Custom methods for actions and nested resources
- Permissions --- Permission-gated UI elements