# hamisi-mtamba/network-monitoring-system architecture

> Architecture diagram of the GitHub repository hamisi-mtamba/network-monitoring-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hamisi-mtamba/network-monitoring-system
- Repository: https://github.com/hamisi-mtamba/network-monitoring-system

## Overview

This is a multi-tenant ISP management platform: customers discover a company’s packages, submit payment, and receive network access when payment is confirmed; administrators manage company operations and platform-wide tenants. The README documents the end-to-end workflow, while sampled controllers show payment persistence/provisioning, reconnect behavior, and company management. Several frontend services and backend route/controller connections were not sampled, so those links are represented only where documented or evidenced.

Main entry points: [`backend/app.js`](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/app.js) (Backend API), [`backend/src/database/database.js`](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/database/database.js) (PostgreSQL), [`admin-app/src/app/app.routes.ts`](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/admin-app/src/app/app.routes.ts) (Admin application), [`backend/src/controllers/public/payment.controller.js`](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/controllers/public/payment.controller.js) (Public payment)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer portal"]
  node_portal["Customer portal<br/>[app.routes.ts]"]
  node_wifi["Wi-Fi context"]
  node_purchase["Package and payment<br/>[packages.ts]"]
  node_sessionstatus["Session status<br/>[session-status.ts]"]
end

subgraph group_admin["Administration"]
  node_adminapp["Admin application<br/>[app.routes.ts]"]
  node_adminauth["Admin authentication<br/>[auth.service.ts]"]
  node_companyops["Company operations"]
  node_platformops["Platform operations"]
end

subgraph group_backend["Backend services"]
  node_api["Backend API<br/>[app.js]"]
  node_publicpayment["Public payment"]
  node_adminpayment["Admin payment"]
  node_companymgmt["Company management"]
  node_platformroutes["Platform routes<br/>[company.routes.js]"]
  node_sms["SMS verification"]
  node_reconnect["Session reconnect"]
  node_references["Payment references"]
  node_verification["Payment verification"]
end

subgraph group_state["Data and network"]
  node_db[("PostgreSQL<br/>[database.js]")]
  node_mikrotik["MikroTik router"]
end

node_customer(("Customer"))
node_adminuser(("Administrator"))
node_paymentprovider["Payment services"]

node_customer -->|"uses"| node_portal
node_portal -->|"captures context"| node_wifi
node_portal -->|"selects package"| node_purchase
node_purchase -->|"submits payment"| node_api
node_api -->|"dispatches"| node_publicpayment
node_publicpayment -->|"creates reference"| node_references
node_publicpayment -->|"queries and writes"| node_db
node_publicpayment -.->|"requests payment"| node_paymentprovider
node_paymentprovider -.->|"sends event"| node_sms
node_sms -->|"processes SMS"| node_verification
node_verification -->|"updates payment"| node_db
node_adminuser -->|"uses"| node_adminapp
node_adminapp -->|"authenticates"| node_adminauth
node_adminapp -->|"manages operations"| node_companyops
node_adminapp -->|"manages platform"| node_platformops
node_companyops -->|"calls API"| node_api
node_platformops -->|"calls API"| node_api
node_api -->|"routes requests"| node_platformroutes
node_platformroutes -->|"dispatches"| node_companymgmt
node_companymgmt -->|"reads and writes"| node_db
node_adminpayment -->|"reads and writes"| node_db
node_adminpayment -->|"provisions access"| node_mikrotik
node_api -->|"handles reconnect"| node_reconnect
node_reconnect -->|"checks sessions"| node_db
node_reconnect -->|"restores access"| node_mikrotik
node_mikrotik -->|"grants connectivity"| node_sessionstatus

click node_portal "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/customer-portal/src/app/app.routes.ts"
click node_wifi "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/customer-portal/src/app/services/wifi-context.service.ts"
click node_purchase "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/customer-portal/src/app/pages/packages/packages.ts"
click node_sessionstatus "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/customer-portal/src/app/pages/session-status/session-status.ts"
click node_adminapp "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/admin-app/src/app/app.routes.ts"
click node_adminauth "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/admin-app/src/app/services/auth.service.ts"
click node_companyops "https://github.com/hamisi-mtamba/network-monitoring-system/tree/main/admin-app/src/app/pages"
click node_platformops "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/admin-app/src/app/pages/platform-companies/platform-companies.page.ts"
click node_api "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/app.js"
click node_publicpayment "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/controllers/public/payment.controller.js"
click node_adminpayment "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/controllers/admin/payment.controller.js"
click node_companymgmt "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/controllers/platform/company.controller.js"
click node_platformroutes "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/routes/platform/company.routes.js"
click node_sms "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/controllers/integrations/httpsms.controller.js"
click node_reconnect "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/services/session-reconnect.service.js"
click node_references "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/services/transaction-reference.service.js"
click node_verification "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/services/payment-verification.service.js"
click node_db "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/database/database.js"
click node_mikrotik "https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/services/mikrotik.service.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_portal,node_wifi,node_purchase,node_sessionstatus toneBlue
class node_adminapp,node_adminauth,node_companyops,node_platformops toneAmber
class node_api,node_publicpayment,node_adminpayment,node_companymgmt,node_platformroutes,node_sms,node_reconnect,node_references,node_verification toneMint
class node_db,node_mikrotik toneRose
class node_customer,node_adminuser,node_paymentprovider toneIndigo
```

## Components

### Customer portal

- [Customer portal](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/customer-portal/src/app/app.routes.ts): `customer-portal/src/app/app.routes.ts`
- [Wi-Fi context](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/customer-portal/src/app/services/wifi-context.service.ts): `customer-portal/src/app/services/wifi-context.service.ts`
- [Package and payment](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/customer-portal/src/app/pages/packages/packages.ts): `customer-portal/src/app/pages/packages/packages.ts`
- [Session status](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/customer-portal/src/app/pages/session-status/session-status.ts): `customer-portal/src/app/pages/session-status/session-status.ts`

### Administration

- [Admin application](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/admin-app/src/app/app.routes.ts): `admin-app/src/app/app.routes.ts`
- [Admin authentication](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/admin-app/src/app/services/auth.service.ts): `admin-app/src/app/services/auth.service.ts`
- [Company operations](https://github.com/hamisi-mtamba/network-monitoring-system/tree/main/admin-app/src/app/pages): `admin-app/src/app/pages`
- [Platform operations](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/admin-app/src/app/pages/platform-companies/platform-companies.page.ts): `admin-app/src/app/pages/platform-companies/platform-companies.page.ts`

### Backend services

- [Backend API](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/app.js): `backend/app.js`
- [Public payment](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/controllers/public/payment.controller.js): `backend/src/controllers/public/payment.controller.js`
- [Admin payment](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/controllers/admin/payment.controller.js): `backend/src/controllers/admin/payment.controller.js`
- [Company management](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/controllers/platform/company.controller.js): `backend/src/controllers/platform/company.controller.js`
- [Platform routes](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/routes/platform/company.routes.js): `backend/src/routes/platform/company.routes.js`
- [SMS verification](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/controllers/integrations/httpsms.controller.js): `backend/src/controllers/integrations/httpsms.controller.js`
- [Session reconnect](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/services/session-reconnect.service.js): `backend/services/session-reconnect.service.js`
- [Payment references](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/services/transaction-reference.service.js): `backend/services/transaction-reference.service.js`
- [Payment verification](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/services/payment-verification.service.js): `backend/services/payment-verification.service.js`

### Data and network

- [PostgreSQL](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/src/database/database.js): `backend/src/database/database.js`
- [MikroTik router](https://github.com/hamisi-mtamba/network-monitoring-system/blob/main/backend/services/mikrotik.service.js): `backend/services/mikrotik.service.js`

### Other components

- **Customer**
- **Administrator**
- **Payment services**

## Connections

- Customer → Customer portal: uses
- Customer portal → Wi-Fi context: captures context
- Customer portal → Package and payment: selects package
- Package and payment → Backend API: submits payment
- Backend API → Public payment: dispatches
- Public payment → Payment references: creates reference
- Public payment → PostgreSQL: queries and writes
- Public payment → Payment services: requests payment
- Payment services → SMS verification: sends event
- SMS verification → Payment verification: processes SMS
- Payment verification → PostgreSQL: updates payment
- Administrator → Admin application: uses
- Admin application → Admin authentication: authenticates
- Admin application → Company operations: manages operations
- Admin application → Platform operations: manages platform
- Company operations → Backend API: calls API
- Platform operations → Backend API: calls API
- Backend API → Platform routes: routes requests
- Platform routes → Company management: dispatches
- Company management → PostgreSQL: reads and writes
- Admin payment → PostgreSQL: reads and writes
- Admin payment → MikroTik router: provisions access
- Backend API → Session reconnect: handles reconnect
- Session reconnect → PostgreSQL: checks sessions
- Session reconnect → MikroTik router: restores access
- MikroTik router → Session status: grants connectivity
