# amira352/tuition-fees-collection architecture

> Architecture diagram of the GitHub repository amira352/tuition-fees-collection, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/amira352/tuition-fees-collection
- Repository: https://github.com/amira352/tuition-fees-collection

## Overview

This is a tuition-fee management and payment platform with bank back-office, administrator, and institution portals. Bank staff look up parents by national ID, inspect children and fees, select a customer account, collect payment, and issue or review receipts; institutions manage students, fees, uploads, plans, and reports, while administrators manage users and institutions. The graph preserves these product areas and the sampled search and upload flow. Many controller, service, and frontend API links are not shown because their wiring was not available in the sampled source.

Main entry points: [`front-end/src/App.jsx`](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/App.jsx) (Frontend router), [`backend/src/config/supabase.js`](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/config/supabase.js) (Supabase data store), [`backend/src/app.js`](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/app.js) (HTTP API), [`backend/src/services/searchById.service.js`](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/searchById.service.js) (National ID lookup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portals["User portals"]
  node_app["Frontend router<br/>[App.jsx]"]
  node_backoffice_ui["Back-office portal<br/>[Dashboard.jsx]"]
  node_search_ui["Parent lookup<br/>[SearchPage.jsx]"]
  node_payment_ui["Fee payment<br/>[Feepaymentpage.jsx]"]
  node_receipts_ui["Receipts and history<br/>[Receiptpage.jsx]"]
  node_admin_ui["Administration<br/>[Admin.jsx]"]
  node_institution_ui["Institution portal"]
  node_institution_fees_ui["Fee management<br/>[FeesManagement.jsx]"]
  node_institution_upload_ui["Dues upload<br/>[UploadDues.jsx]"]
  node_institution_reports_ui["Institution reports<br/>[ReportsPage.jsx]"]
end

subgraph group_operations["Bank operations"]
  node_api_app["HTTP API<br/>[app.js]"]
  node_search_routes["Bank routes"]
  node_search_controller["Parent search"]
  node_search_service["National ID lookup"]
  node_parent_repo["Parent records"]
  node_audit_repo["Lookup audit"]
  node_payment_routes["Payment routes<br/>[payment.routes.js]"]
  node_payment_service["Payment processing<br/>[payment.service.js]"]
  node_receipt_routes["Receipt routes<br/>[receipt.routes.js]"]
  node_receipt_service["Receipt service<br/>[receipt.service.js]"]
  node_history_service["Payment history"]
  node_admin_routes["Admin routes<br/>[admin.routes.js]"]
  node_admin_service["Admin management<br/>[admin.service.js]"]
end

subgraph group_institutions["Institution services"]
  node_institution_routes["Institution routes"]
  node_upload_controller["Upload controller"]
  node_upload_service["Fee upload processing"]
  node_fee_service["Fee management"]
  node_epp_service["Payment plans<br/>[epp.service.js]"]
  node_institution_reports["Reporting<br/>[report.service.js]"]
end

subgraph group_platform["Platform services"]
  node_auth_service["Authentication<br/>[auth.service.js]"]
  node_supabase[("Supabase data store<br/>[supabase.js]")]
  node_moi(("MOI verification"))
end

node_bank_staff(("Bank staff"))
node_institution_user(("Institution user"))

node_bank_staff -->|"uses"| node_app
node_institution_user -->|"uses"| node_app
node_app -->|"routes to"| node_search_ui
node_app -->|"routes to"| node_payment_ui
node_app -->|"routes to"| node_receipts_ui
node_app -->|"routes to"| node_admin_ui
node_app -->|"routes to"| node_institution_ui
node_app -->|"routes to"| node_institution_fees_ui
node_app -->|"routes to"| node_institution_upload_ui
node_app -->|"routes to"| node_institution_reports_ui
node_api_app -->|"mounts"| node_search_routes
node_api_app -->|"mounts"| node_payment_routes
node_api_app -->|"mounts"| node_receipt_routes
node_api_app -->|"mounts"| node_admin_routes
node_api_app -->|"mounts"| node_institution_routes
node_search_routes -->|"dispatches"| node_search_controller
node_search_controller -->|"calls"| node_search_service
node_search_service -->|"validates ID"| node_moi
node_search_service -->|"looks up records"| node_parent_repo
node_search_service -->|"writes audit"| node_audit_repo
node_institution_routes -->|"dispatches upload"| node_upload_controller
node_upload_controller -->|"processes file"| node_upload_service
node_auth_service -->|"reads and updates"| node_supabase
node_payment_service -->|"uses data store"| node_supabase
node_fee_service -->|"uses data store"| node_supabase
node_admin_service -->|"uses data store"| node_supabase
node_receipt_service -->|"uses data store"| node_supabase
node_history_service -->|"uses data store"| node_supabase
node_institution_reports -->|"uses data store"| node_supabase

click node_app "https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/App.jsx"
click node_backoffice_ui "https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/Dashboard.jsx"
click node_search_ui "https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/SearchPage.jsx"
click node_payment_ui "https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/Feepaymentpage.jsx"
click node_receipts_ui "https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/Receiptpage.jsx"
click node_admin_ui "https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/Admin.jsx"
click node_institution_ui "https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/institution/InstitutionDashboard.jsx"
click node_institution_fees_ui "https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/institution/FeesManagement.jsx"
click node_institution_upload_ui "https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/UploadDues.jsx"
click node_institution_reports_ui "https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/institution/ReportsPage.jsx"
click node_api_app "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/app.js"
click node_search_routes "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/routes/searchById.routes.js"
click node_search_controller "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/controllers/searchById.controller.js"
click node_search_service "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/searchById.service.js"
click node_parent_repo "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/repositories/parent.repository.js"
click node_audit_repo "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/repositories/nationalIdAudit.repository.js"
click node_payment_routes "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/routes/payment.routes.js"
click node_payment_service "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/payment.service.js"
click node_receipt_routes "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/routes/receipt.routes.js"
click node_receipt_service "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/receipt.service.js"
click node_history_service "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/paymentHistory.service.js"
click node_admin_routes "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/routes/admin.routes.js"
click node_admin_service "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/admin.service.js"
click node_institution_routes "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/routes/institution.routes.js"
click node_upload_controller "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/controllers/institutionFeeUpload.controller.js"
click node_upload_service "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/institutionFeeUpload.service.js"
click node_fee_service "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/institutionFees.service.js"
click node_epp_service "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/epp.service.js"
click node_institution_reports "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/report.service.js"
click node_auth_service "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/auth.service.js"
click node_supabase "https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/config/supabase.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_backoffice_ui,node_search_ui,node_payment_ui,node_receipts_ui,node_admin_ui,node_institution_ui,node_institution_fees_ui,node_institution_upload_ui,node_institution_reports_ui,node_institution_user toneBlue
class node_api_app,node_search_routes,node_search_controller,node_search_service,node_parent_repo,node_audit_repo,node_payment_routes,node_payment_service,node_receipt_routes,node_receipt_service,node_history_service,node_admin_routes,node_admin_service toneAmber
class node_institution_routes,node_upload_controller,node_upload_service,node_fee_service,node_epp_service,node_institution_reports toneMint
class node_auth_service,node_supabase,node_moi toneRose
class node_bank_staff toneIndigo
```

## Components

### User portals

- [Frontend router](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/App.jsx): `front-end/src/App.jsx`
- [Back-office portal](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/Dashboard.jsx): `front-end/src/pages/Dashboard.jsx`
- [Parent lookup](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/SearchPage.jsx): `front-end/src/pages/SearchPage.jsx`
- [Fee payment](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/Feepaymentpage.jsx): `front-end/src/pages/Feepaymentpage.jsx`
- [Receipts and history](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/Receiptpage.jsx): `front-end/src/pages/Receiptpage.jsx`
- [Administration](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/Admin.jsx): `front-end/src/pages/Admin.jsx`
- [Institution portal](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/institution/InstitutionDashboard.jsx): `front-end/src/pages/institution/InstitutionDashboard.jsx`
- [Fee management](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/institution/FeesManagement.jsx): `front-end/src/pages/institution/FeesManagement.jsx`
- [Dues upload](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/UploadDues.jsx): `front-end/src/pages/UploadDues.jsx`
- [Institution reports](https://github.com/amira352/tuition-fees-collection/blob/main/front-end/src/pages/institution/ReportsPage.jsx): `front-end/src/pages/institution/ReportsPage.jsx`

### Bank operations

- [HTTP API](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/app.js): `backend/src/app.js`
- [Bank routes](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/routes/searchById.routes.js): `backend/src/routes/searchById.routes.js`
- [Parent search](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/controllers/searchById.controller.js): `backend/src/controllers/searchById.controller.js`
- [National ID lookup](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/searchById.service.js): `backend/src/services/searchById.service.js`
- [Parent records](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/repositories/parent.repository.js): `backend/src/repositories/parent.repository.js`
- [Lookup audit](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/repositories/nationalIdAudit.repository.js): `backend/src/repositories/nationalIdAudit.repository.js`
- [Payment routes](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/routes/payment.routes.js): `backend/src/routes/payment.routes.js`
- [Payment processing](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/payment.service.js): `backend/src/services/payment.service.js`
- [Receipt routes](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/routes/receipt.routes.js): `backend/src/routes/receipt.routes.js`
- [Receipt service](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/receipt.service.js): `backend/src/services/receipt.service.js`
- [Payment history](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/paymentHistory.service.js): `backend/src/services/paymentHistory.service.js`
- [Admin routes](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/routes/admin.routes.js): `backend/src/routes/admin.routes.js`
- [Admin management](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/admin.service.js): `backend/src/services/admin.service.js`

### Institution services

- [Institution routes](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/routes/institution.routes.js): `backend/src/routes/institution.routes.js`
- [Upload controller](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/controllers/institutionFeeUpload.controller.js): `backend/src/controllers/institutionFeeUpload.controller.js`
- [Fee upload processing](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/institutionFeeUpload.service.js): `backend/src/services/institutionFeeUpload.service.js`
- [Fee management](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/institutionFees.service.js): `backend/src/services/institutionFees.service.js`
- [Payment plans](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/epp.service.js): `backend/src/services/epp.service.js`
- [Reporting](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/report.service.js): `backend/src/services/report.service.js`

### Platform services

- [Authentication](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/services/auth.service.js): `backend/src/services/auth.service.js`
- [Supabase data store](https://github.com/amira352/tuition-fees-collection/blob/main/backend/src/config/supabase.js): `backend/src/config/supabase.js`
- **MOI verification**

### Other components

- **Bank staff**
- **Institution user**

## Connections

- Bank staff → Frontend router: uses
- Institution user → Frontend router: uses
- Frontend router → Parent lookup: routes to
- Frontend router → Fee payment: routes to
- Frontend router → Receipts and history: routes to
- Frontend router → Administration: routes to
- Frontend router → Institution portal: routes to
- Frontend router → Fee management: routes to
- Frontend router → Dues upload: routes to
- Frontend router → Institution reports: routes to
- HTTP API → Bank routes: mounts
- HTTP API → Payment routes: mounts
- HTTP API → Receipt routes: mounts
- HTTP API → Admin routes: mounts
- HTTP API → Institution routes: mounts
- Bank routes → Parent search: dispatches
- Parent search → National ID lookup: calls
- National ID lookup → MOI verification: validates ID
- National ID lookup → Parent records: looks up records
- National ID lookup → Lookup audit: writes audit
- Institution routes → Upload controller: dispatches upload
- Upload controller → Fee upload processing: processes file
- Authentication → Supabase data store: reads and updates
- Payment processing → Supabase data store: uses data store
- Fee management → Supabase data store: uses data store
- Admin management → Supabase data store: uses data store
- Receipt service → Supabase data store: uses data store
- Payment history → Supabase data store: uses data store
- Reporting → Supabase data store: uses data store
