# swwillbemine/silver-network-management architecture

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

- Interactive diagram: https://gitdiagram.com/swwillbemine/silver-network-management
- Repository: https://github.com/swwillbemine/silver-network-management

## Overview

SilverNet is a PHP/MySQL ISP operations system for managing network infrastructure, MikroTik routers, subscribers, and billing. The main staff workflow is to register nodes, POPs, and routers; configure service packages; enroll customers; then generate invoices and record payments. Router integration supplies live status, PPPoE sessions, and configuration management, while customer pages and external API endpoints expose connection data. The graph reflects README capabilities where their implementation was not sampled; those subsystem links are not inferred as specific calls.

Main entry points: [`config/bootstrap.php`](https://github.com/swwillbemine/silver-network-management/blob/main/config/bootstrap.php) (Application bootstrap), [`router_proxy.php`](https://github.com/swwillbemine/silver-network-management/blob/main/router_proxy.php) (Router web proxy), [`api/router_detail.php`](https://github.com/swwillbemine/silver-network-management/blob/main/api/router_detail.php) (Router live detail), [`billing.php`](https://github.com/swwillbemine/silver-network-management/blob/main/billing.php) (Invoices and payments)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_operations["ISP Operations"]
  node_dashboard["Dashboard<br/>[index.php]"]
  node_customers["Customer management<br/>[customers.php]"]
  node_customer_detail["Customer detail"]
  node_customer_form["Customer enrollment<br/>[customer_form.php]"]
  node_packages["Packages<br/>[packages.php]"]
  node_package_form["Package setup<br/>[package_form.php]"]
  node_ppp_import["PPPoE import<br/>[import_pppoe.php]"]
end

subgraph group_network["Network Management"]
  node_nodes["Nodes<br/>[nodes.php]"]
  node_pops["POPs<br/>[pops.php]"]
  node_connections["Network links<br/>[connections.php]"]
  node_routers["Router management<br/>[routers.php]"]
  node_router_detail["Router live detail<br/>[router_detail.php]"]
  node_router_config["Router configuration"]
  node_hotspot["Hotspot management<br/>[hotspot.php]"]
  node_pools["IP pools<br/>[ip_pool.php]"]
  node_pppoe["PPPoE servers<br/>[pppoe_server.php]"]
end

subgraph group_billing["Customer Billing"]
  node_billing["Invoices and payments<br/>[billing.php]"]
end

subgraph group_access["Access and APIs"]
  node_settings["ISP settings and keys<br/>[settings.php]"]
  node_users["User administration<br/>[users.php]"]
  node_external_api["External API"]
  node_router_proxy["Router web proxy<br/>[router_proxy.php]"]
end

subgraph group_runtime["Runtime Services"]
  node_bootstrap["Application bootstrap<br/>[bootstrap.php]"]
  node_security["Login and authorization<br/>[security.php]"]
  node_mikrotik_connection["MikroTik connection<br/>[connection.php]"]
  node_mysql[("MySQL database")]
end

node_staff(("ISP staff"))
node_routeros{{"MikroTik routers"}}
node_monitoring(("Monitoring system"))

node_staff -->|"views"| node_dashboard
node_staff -->|"manages"| node_nodes
node_staff -->|"manages"| node_pops
node_staff -->|"maps links"| node_connections
node_staff -->|"registers"| node_routers
node_staff -->|"manages"| node_customers
node_staff -->|"configures"| node_packages
node_staff -->|"bills customers"| node_billing
node_staff -->|"configures"| node_settings
node_staff -->|"manages users"| node_users
node_dashboard -->|"reads metrics"| node_mysql
node_routers -->|"stores router data"| node_mysql
node_routers -->|"checks status"| node_mikrotik_connection
node_router_detail -->|"reads router record"| node_mysql
node_router_detail -->|"connects"| node_mikrotik_connection
node_mikrotik_connection -->|"queries API"| node_routeros
node_router_detail -->|"updates status"| node_mysql
node_staff -->|"requests live detail"| node_router_detail
node_staff -->|"manages router services"| node_router_config
node_router_config -->|"configures"| node_routeros
node_staff -->|"manages"| node_hotspot
node_staff -->|"manages"| node_pools
node_staff -->|"configures"| node_pppoe
node_staff -->|"enrolls"| node_customer_form
node_customer_form -->|"stores customer"| node_mysql
node_staff -->|"sets up"| node_package_form
node_package_form -->|"stores package"| node_mysql
node_package_form -->|"syncs profile"| node_routeros
node_staff -->|"imports users"| node_ppp_import
node_ppp_import -->|"reads PPPoE users"| node_routeros
node_ppp_import -->|"stores imported users"| node_mysql
node_staff -->|"reviews account"| node_customer_detail
node_customer_detail -->|"reads live status"| node_routeros
node_staff -->|"generates invoices"| node_billing
node_billing -->|"records invoices and payments"| node_mysql
node_external_api -->|"reads customer data"| node_mysql
node_external_api -->|"fetches live stats"| node_routeros
node_monitoring -->|"requests status"| node_external_api
node_staff -->|"opens router UI"| node_router_proxy
node_router_proxy -->|"loads customer and router"| node_mysql
node_router_proxy -->|"gets live WAN IP"| node_mikrotik_connection
node_router_proxy -->|"proxies web traffic"| node_routeros
node_dashboard -->|"loads"| node_bootstrap
node_customers -->|"loads"| node_bootstrap
node_billing -->|"loads"| node_bootstrap
node_bootstrap -->|"provides access checks"| node_security
node_bootstrap -->|"initializes connection"| node_mysql

click node_dashboard "https://github.com/swwillbemine/silver-network-management/blob/main/index.php"
click node_nodes "https://github.com/swwillbemine/silver-network-management/blob/main/nodes.php"
click node_pops "https://github.com/swwillbemine/silver-network-management/blob/main/pops.php"
click node_connections "https://github.com/swwillbemine/silver-network-management/blob/main/connections.php"
click node_routers "https://github.com/swwillbemine/silver-network-management/blob/main/routers.php"
click node_router_detail "https://github.com/swwillbemine/silver-network-management/blob/main/api/router_detail.php"
click node_router_config "https://github.com/swwillbemine/silver-network-management/tree/main/mikrotik"
click node_hotspot "https://github.com/swwillbemine/silver-network-management/blob/main/hotspot.php"
click node_pools "https://github.com/swwillbemine/silver-network-management/blob/main/ip_pool.php"
click node_pppoe "https://github.com/swwillbemine/silver-network-management/blob/main/pppoe_server.php"
click node_customers "https://github.com/swwillbemine/silver-network-management/blob/main/customers.php"
click node_customer_detail "https://github.com/swwillbemine/silver-network-management/blob/main/customer_detail.php"
click node_customer_form "https://github.com/swwillbemine/silver-network-management/blob/main/customer_form.php"
click node_packages "https://github.com/swwillbemine/silver-network-management/blob/main/packages.php"
click node_package_form "https://github.com/swwillbemine/silver-network-management/blob/main/package_form.php"
click node_ppp_import "https://github.com/swwillbemine/silver-network-management/blob/main/import_pppoe.php"
click node_billing "https://github.com/swwillbemine/silver-network-management/blob/main/billing.php"
click node_settings "https://github.com/swwillbemine/silver-network-management/blob/main/settings.php"
click node_users "https://github.com/swwillbemine/silver-network-management/blob/main/users.php"
click node_external_api "https://github.com/swwillbemine/silver-network-management/tree/main/api/v1"
click node_router_proxy "https://github.com/swwillbemine/silver-network-management/blob/main/router_proxy.php"
click node_bootstrap "https://github.com/swwillbemine/silver-network-management/blob/main/config/bootstrap.php"
click node_security "https://github.com/swwillbemine/silver-network-management/blob/main/helpers/security.php"
click node_mikrotik_connection "https://github.com/swwillbemine/silver-network-management/blob/main/mikrotik/connection.php"

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_dashboard,node_customers,node_customer_detail,node_customer_form,node_packages,node_package_form,node_ppp_import toneBlue
class node_nodes,node_pops,node_connections,node_routers,node_router_detail,node_router_config,node_hotspot,node_pools,node_pppoe toneAmber
class node_billing,node_routeros toneMint
class node_settings,node_users,node_external_api,node_router_proxy toneRose
class node_bootstrap,node_security,node_mikrotik_connection,node_mysql,node_staff,node_monitoring toneIndigo
```

## Components

### ISP Operations

- [Dashboard](https://github.com/swwillbemine/silver-network-management/blob/main/index.php): `index.php`
- [Customer management](https://github.com/swwillbemine/silver-network-management/blob/main/customers.php): `customers.php`
- [Customer detail](https://github.com/swwillbemine/silver-network-management/blob/main/customer_detail.php): `customer_detail.php`
- [Customer enrollment](https://github.com/swwillbemine/silver-network-management/blob/main/customer_form.php): `customer_form.php`
- [Packages](https://github.com/swwillbemine/silver-network-management/blob/main/packages.php): `packages.php`
- [Package setup](https://github.com/swwillbemine/silver-network-management/blob/main/package_form.php): `package_form.php`
- [PPPoE import](https://github.com/swwillbemine/silver-network-management/blob/main/import_pppoe.php): `import_pppoe.php`

### Network Management

- [Nodes](https://github.com/swwillbemine/silver-network-management/blob/main/nodes.php): `nodes.php`
- [POPs](https://github.com/swwillbemine/silver-network-management/blob/main/pops.php): `pops.php`
- [Network links](https://github.com/swwillbemine/silver-network-management/blob/main/connections.php): `connections.php`
- [Router management](https://github.com/swwillbemine/silver-network-management/blob/main/routers.php): `routers.php`
- [Router live detail](https://github.com/swwillbemine/silver-network-management/blob/main/api/router_detail.php): `api/router_detail.php`
- [Router configuration](https://github.com/swwillbemine/silver-network-management/tree/main/mikrotik): `mikrotik`
- [Hotspot management](https://github.com/swwillbemine/silver-network-management/blob/main/hotspot.php): `hotspot.php`
- [IP pools](https://github.com/swwillbemine/silver-network-management/blob/main/ip_pool.php): `ip_pool.php`
- [PPPoE servers](https://github.com/swwillbemine/silver-network-management/blob/main/pppoe_server.php): `pppoe_server.php`

### Customer Billing

- [Invoices and payments](https://github.com/swwillbemine/silver-network-management/blob/main/billing.php): `billing.php`

### Access and APIs

- [ISP settings and keys](https://github.com/swwillbemine/silver-network-management/blob/main/settings.php): `settings.php`
- [User administration](https://github.com/swwillbemine/silver-network-management/blob/main/users.php): `users.php`
- [External API](https://github.com/swwillbemine/silver-network-management/tree/main/api/v1): `api/v1`
- [Router web proxy](https://github.com/swwillbemine/silver-network-management/blob/main/router_proxy.php): `router_proxy.php`

### Runtime Services

- [Application bootstrap](https://github.com/swwillbemine/silver-network-management/blob/main/config/bootstrap.php): `config/bootstrap.php`
- [Login and authorization](https://github.com/swwillbemine/silver-network-management/blob/main/helpers/security.php): `helpers/security.php`
- [MikroTik connection](https://github.com/swwillbemine/silver-network-management/blob/main/mikrotik/connection.php): `mikrotik/connection.php`
- **MySQL database**

### Other components

- **ISP staff**
- **MikroTik routers**
- **Monitoring system**

## Connections

- ISP staff → Dashboard: views
- ISP staff → Nodes: manages
- ISP staff → POPs: manages
- ISP staff → Network links: maps links
- ISP staff → Router management: registers
- ISP staff → Customer management: manages
- ISP staff → Packages: configures
- ISP staff → Invoices and payments: bills customers
- ISP staff → ISP settings and keys: configures
- ISP staff → User administration: manages users
- Dashboard → MySQL database: reads metrics
- Router management → MySQL database: stores router data
- Router management → MikroTik connection: checks status
- Router live detail → MySQL database: reads router record
- Router live detail → MikroTik connection: connects
- MikroTik connection → MikroTik routers: queries API
- Router live detail → MySQL database: updates status
- ISP staff → Router live detail: requests live detail
- ISP staff → Router configuration: manages router services
- Router configuration → MikroTik routers: configures
- ISP staff → Hotspot management: manages
- ISP staff → IP pools: manages
- ISP staff → PPPoE servers: configures
- ISP staff → Customer enrollment: enrolls
- Customer enrollment → MySQL database: stores customer
- ISP staff → Package setup: sets up
- Package setup → MySQL database: stores package
- Package setup → MikroTik routers: syncs profile
- ISP staff → PPPoE import: imports users
- PPPoE import → MikroTik routers: reads PPPoE users
- PPPoE import → MySQL database: stores imported users
- ISP staff → Customer detail: reviews account
- Customer detail → MikroTik routers: reads live status
- ISP staff → Invoices and payments: generates invoices
- Invoices and payments → MySQL database: records invoices and payments
- External API → MySQL database: reads customer data
- External API → MikroTik routers: fetches live stats
- Monitoring system → External API: requests status
- ISP staff → Router web proxy: opens router UI
- Router web proxy → MySQL database: loads customer and router
- Router web proxy → MikroTik connection: gets live WAN IP
- Router web proxy → MikroTik routers: proxies web traffic
- Dashboard → Application bootstrap: loads
- Customer management → Application bootstrap: loads
- Invoices and payments → Application bootstrap: loads
- Application bootstrap → Login and authorization: provides access checks
- Application bootstrap → MySQL database: initializes connection
