04 — Information Architecture (Payments)
- 1. Placement in app shell (00-shared/05)
- 2. Screen map
- 3. Navigation rules
- 4. Quick actions & context menus
- 5. Deep links (forward-looking)
- 6. Empty / edge surfaces
Screen hierarchy and navigation for the payments module.
1. Placement in app shell (00-shared/05)
- Phone: Fees tab contains "Payments" sub-destination; also reachable from Invoice detail action menu.
- Tablet/desktop: Fees → Payments as master-detail branch; receipt preview in right pane.
2. Screen map
Payments (list) ─ route /payments
├─ Payment detail ─ /payments/:id
│ ├─ Receipt view ─ /payments/receipts/:receiptId
│ ├─ Refund sheet (modal)
│ └─ Reconcile sheet (modal, PENDING/PROCESSING only)
├─ New payment ─ /payments/new (full-screen form)
│ └─ Success + receipt card (inline result)
└─ Receipts (list) ─ /payments/receipts
3. Navigation rules
- Lists push detail (phone) / right pane (tablet+).
- "Record payment" FAB on Payments list; contextual action on invoice detail.
- Modal hierarchy: snackbar → bottom sheet (refund/reconcile) → dialog (confirm) → full-screen (new payment form).
- Destructive/irreversible (refund) uses
AppDialogconfirm with reason field first. - Back: list → fees; sheet dismiss = cancel.
- Global search: payments searchable via global search
(planned); local filter client-side.
4. Quick actions & context menus
- Row overflow menu: View, Receipt, Refund (if COMPLETED), Reconcile (if PENDING/PROCESSING).
- FAB: New payment (hidden while scrolling down).
5. Deep links (forward-looking)
studylyon://payments/:id→ payment detailstudylyon://payments/receipts/:id→ receiptstudylyon://invoice/:invoiceId→ invoice detail (payments tab)
6. Empty / edge surfaces
- Payments list empty: icon + "No payments yet — record the first payment".
- Receipts empty similarly.
- List end-of-page indicator (paged, no infinite scroll).