Skip to main content
Source snapshot: 13 October 2026. These pages describe the current implementation, including unfinished controls. See coverage and review notes.

Community reports

Host: admin.<ROOT_DOMAIN> · Route: /[tenant]/reports

Purpose and access

Choose demographic and community reports from the report hub.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

The page displays report links/cards rather than a record-entry form. It links to blood-group, expatriate, and Yatheem reports.

Fields and displayed information

This screen has no editable fields or filters in its rendered components.

Actions

Navigation and row interactions are described in the sequence below.

Interaction sequence

Choose a report → inspect its counts and table → filter the loaded records → return to the report hub to choose another view.

States and rules

This hub is separate from Finance Reports and Accountant Reports. The destination routes perform their own member-access checks.

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]/reports/page.tsx
Data and access helpers: apps/web/src/lib/session.ts, apps/web/src/lib/server-api.ts, apps/web/src/lib/tenants.ts, apps/web/src/lib/reports-summary.ts

Blood group report

Host: admin.<ROOT_DOMAIN> · Route: /[tenant]/reports/blood-groups

Purpose and access

Inspect the blood group report using member data already recorded in the directory.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

The view combines summary counts, relevant grouping controls, and a member table. Name/phone search narrows the loaded list; columns differ by report.

Fields and displayed information

Displayed table columns: Blood group, Phone.

Fields and filters: Blood group report

Displayed table columns: Member.

Fields and filters: Member report table

Actions

Navigation and row interactions are described in the sequence below.

Interaction sequence

Open the report → select available group filters → search a name or phone → inspect family/contact and report-specific values. Update source information through Members rather than entering records here.

States and rules

Denied members.view produces a permission panel. No records and No matches are separate states. These views operate on the route’s loaded subset; the UI does not provide a new record-creation workflow.

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]/reports/blood-groups/page.tsx
  • apps/web/src/features/tenants/blood-group-report.tsx
  • apps/web/src/features/tenants/member-report-table.tsx
Data and access helpers: apps/web/src/lib/session.ts, apps/web/src/lib/server-api.ts, apps/web/src/lib/tenants.ts, apps/web/src/lib/members.ts

Expatriate register

Host: admin.<ROOT_DOMAIN> · Route: /[tenant]/reports/expatriate

Purpose and access

Inspect the expatriate register using member data already recorded in the directory.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

The view combines summary counts, relevant grouping controls, and a member table. Name/phone search narrows the loaded list; columns differ by report.

Fields and displayed information

Displayed table columns: Country, Occupation abroad, Contact abroad.Displayed table columns: Member.

Fields and filters: Member report table

Actions

Navigation and row interactions are described in the sequence below.

Interaction sequence

Open the report → select available group filters → search a name or phone → inspect family/contact and report-specific values. Update source information through Members rather than entering records here.

States and rules

Denied members.view produces a permission panel. No records and No matches are separate states. These views operate on the route’s loaded subset; the UI does not provide a new record-creation workflow.

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]/reports/expatriate/page.tsx
  • apps/web/src/features/tenants/expatriate-report.tsx
  • apps/web/src/features/tenants/member-report-table.tsx
Data and access helpers: apps/web/src/lib/session.ts, apps/web/src/lib/server-api.ts, apps/web/src/lib/tenants.ts, apps/web/src/lib/members.ts

Yatheem register

Host: admin.<ROOT_DOMAIN> · Route: /[tenant]/reports/yatheem

Purpose and access

Inspect the yatheem register using member data already recorded in the directory.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

The view combines summary counts, relevant grouping controls, and a member table. Name/phone search narrows the loaded list; columns differ by report.

Fields and displayed information

Displayed table columns: Guardian, Guardian phone, Date of birth.Displayed table columns: Member.

Fields and filters: Member report table

Actions

Navigation and row interactions are described in the sequence below.

Interaction sequence

Open the report → select available group filters → search a name or phone → inspect family/contact and report-specific values. Update source information through Members rather than entering records here.

States and rules

Denied members.view produces a permission panel. No records and No matches are separate states. These views operate on the route’s loaded subset; the UI does not provide a new record-creation workflow.

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]/reports/yatheem/page.tsx
  • apps/web/src/features/tenants/yatheem-report.tsx
  • apps/web/src/features/tenants/member-report-table.tsx
Data and access helpers: apps/web/src/lib/session.ts, apps/web/src/lib/server-api.ts, apps/web/src/lib/tenants.ts, apps/web/src/lib/members.tsRelevant controller permission keys: education.view, members.view, members.create, members.update, members.delete, health.view, health.manage. 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/members/education-employment.controller.ts
  • apps/api/src/members/health-support.controller.ts
  • apps/api/src/members/members.controller.ts