Source snapshot: 13 October 2026. These pages describe the current implementation, including unfinished controls. See coverage and review notes.
- English
- മലയാളം
Structure settings
Host:admin.<ROOT_DOMAIN> · Route: /[tenant]/settings/structurePurpose and access
Configure subdivisions, house numbering, and family categories.You need an account session and a resolved membership context in the selected Mahallu (including the API’s current platform elevation path). The API independently checks the requested operation’s permissions and feature availability.Screen layout
Organization contains a divisions toggle, preferred division term, numbering method, and prefix. Division rows have order/edit/activation controls. Family categories have their own toggle, term, list, and save controls.Fields and displayed information
Fields and filters: Structure settings
Fields and filters: Division form dialog
Fields and filters: Family status form dialog
Actions
Interaction sequence
Enable divisions → choose terminology and numbering → Save. Add/edit subdivision definitions separately; move rows to save their order. Enable family categories → set their term → Save → maintain category definitions.States and rules
Settings and list records save through separate API requests. With divisions disabled numbering is GLOBAL. Prefixes are normalized to uppercase. Permission-denied and no-definition states are explicit.The rendered action controls bind loading indicators to pending state. Failed API saves keep their documented error/notification path; a loading indicator alone does not establish persistence.Implementation references
Paths below are relative to the application repository. This is source-reviewed behavior, not a recorded browser test.apps/web/src/app/sites/admin/[tenant]/settings/structure/page.tsxapps/web/src/features/tenants/structure-settings.tsxapps/web/src/features/tenants/division-form-dialog.tsxapps/web/src/features/tenants/family-status-form-dialog.tsx
apps/web/src/lib/session.ts, apps/web/src/lib/server-api.ts, apps/web/src/lib/tenants.ts, apps/web/src/lib/structure.ts, apps/web/src/lib/api-client.tsRelevant controller permission keys: finance.view, finance.settings.view, finance.settings.update, accounting.accounts.manage, accounting.journal.create, accounting.view, accounting.journal.cancel, accounting.ledger.view, accounting.reports.view, collections.view, collections.create, collections.update, collections.delete, collections.cancel, receipts.view, expenses.view, expenses.create, expenses.update, expenses.approve, payments.create, expenses.cancel, expenses.delete, dues.view, dues.manage, salary.view, salary.create, salary.approve, salary.pay, salary.update, banking.view, banking.manage, taxes.view, taxes.manage, reports.view, admins.view, admins.create, admins.update, admins.delete, roles.view, roles.create, roles.update, roles.delete, structure.view, structure.update, settings.view, settings.update. Keys are operation-specific; the current guard grants OWNER/ADMIN and its platform-elevation context an operational bypass. A visible control still does not establish authorization.API behavior references
apps/api/src/tenants/admins.controller.tsapps/api/src/tenants/roles.controller.tsapps/api/src/tenants/tenants.controller.tsapps/api/src/structure/structure.controller.tsapps/api/src/notifications/notifications.controller.tsapps/api/src/finance/finance.controller.ts