# joanjazj/onet-manager architecture

> Architecture diagram of the GitHub repository joanjazj/onet-manager, 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/joanjazj/onet-manager
- Repository: https://github.com/joanjazj/onet-manager

## Overview

This is an ISP provisioning and subscriber-management API with a static web panel. The main workflow discovers unconfigured Huawei ONTs, accepts provisioning details, and applies configuration to the OLT; registered-ONT inventory is obtained separately from Zabbix. The panel also supports ONT administration and MikroTik suspension management, including bulk file-based cuts, reactivation, suspended-client listing, and connectivity checks. The API is the orchestration layer for these operations. The README is empty, and frontend source was not sampled, so page-to-endpoint wiring is shown only where supported by the API evidence.

Main entry points: [`backend/main.py`](https://github.com/joanjazj/onet-manager/blob/main/backend/main.py) (FastAPI application), [`backend/olt_service.py`](https://github.com/joanjazj/onet-manager/blob/main/backend/olt_service.py) (Huawei OLT service), [`backend/mikrotik_service.py`](https://github.com/joanjazj/onet-manager/blob/main/backend/mikrotik_service.py) (MikroTik service), [`backend/config.py`](https://github.com/joanjazj/onet-manager/blob/main/backend/config.py) (Network settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_panel["Web panel"]
  node_panel_files["Panel pages"]
  node_provision_page["Provisioning page<br/>[aprovisionar.html]"]
  node_onts_page["ONT inventory page<br/>[onts.html]"]
  node_suspension_page["Suspension page<br/>[corte.html]"]
end

subgraph group_api["API workflows"]
  node_api_app["FastAPI application<br/>[main.py]"]
  node_provisioning["ONT provisioning<br/>[main.py]"]
  node_ont_admin["ONT administration<br/>[main.py]"]
  node_bulk_cut["Bulk suspension import<br/>[main.py]"]
  node_mikrotik_ops["Subscriber suspension<br/>[main.py]"]
end

subgraph group_network["Network services"]
  node_olt_service["Huawei OLT service<br/>[olt_service.py]"]
  node_zabbix_service["Zabbix inventory service<br/>[zabbix_service.py]"]
  node_mikrotik_service["MikroTik service"]
end

subgraph group_settings["Configuration"]
  node_config["Network settings<br/>[config.py]"]
end

node_operator(("ISP operator"))
node_browser(("Web browser"))
node_olt_device{{"Huawei OLT"}}
node_zabbix{{"Zabbix"}}
node_mikrotik{{"MikroTik router"}}

node_operator -->|"uses"| node_browser
node_browser -->|"requests pages and APIs"| node_api_app
node_api_app -->|"serves"| node_panel_files
node_provision_page -->|"requests provisioning"| node_api_app
node_onts_page -->|"requests ONT data"| node_api_app
node_suspension_page -->|"requests suspension actions"| node_api_app
node_api_app -->|"dispatches"| node_provisioning
node_api_app -->|"dispatches"| node_ont_admin
node_api_app -->|"dispatches upload"| node_bulk_cut
node_api_app -->|"dispatches"| node_mikrotik_ops
node_provisioning -->|"provisions ONT"| node_olt_service
node_api_app -->|"gets unconfigured ONTs"| node_olt_service
node_ont_admin -->|"changes ONT settings"| node_olt_service
node_api_app -->|"gets registered ONTs"| node_zabbix_service
node_bulk_cut -->|"applies bulk cuts"| node_mikrotik_service
node_mikrotik_ops -->|"tests, lists, reactivates"| node_mikrotik_service
node_olt_service -->|"configures via Telnet"| node_olt_device
node_zabbix_service -->|"queries API"| node_zabbix
node_mikrotik_service -->|"manages address list"| node_mikrotik
node_api_app -->|"reads settings"| node_config
node_olt_service -->|"reads settings"| node_config
node_mikrotik_service -->|"reads settings"| node_config

click node_panel_files "https://github.com/joanjazj/onet-manager/tree/main/backend/static"
click node_provision_page "https://github.com/joanjazj/onet-manager/blob/main/backend/static/aprovisionar.html"
click node_onts_page "https://github.com/joanjazj/onet-manager/blob/main/backend/static/onts.html"
click node_suspension_page "https://github.com/joanjazj/onet-manager/blob/main/backend/static/corte.html"
click node_api_app "https://github.com/joanjazj/onet-manager/blob/main/backend/main.py"
click node_provisioning "https://github.com/joanjazj/onet-manager/blob/main/backend/main.py"
click node_ont_admin "https://github.com/joanjazj/onet-manager/blob/main/backend/main.py"
click node_bulk_cut "https://github.com/joanjazj/onet-manager/blob/main/backend/main.py"
click node_mikrotik_ops "https://github.com/joanjazj/onet-manager/blob/main/backend/main.py"
click node_olt_service "https://github.com/joanjazj/onet-manager/blob/main/backend/olt_service.py"
click node_zabbix_service "https://github.com/joanjazj/onet-manager/blob/main/backend/zabbix_service.py"
click node_mikrotik_service "https://github.com/joanjazj/onet-manager/blob/main/backend/mikrotik_service.py"
click node_config "https://github.com/joanjazj/onet-manager/blob/main/backend/config.py"

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_panel_files,node_provision_page,node_onts_page,node_suspension_page,node_browser toneBlue
class node_api_app,node_provisioning,node_ont_admin,node_bulk_cut,node_mikrotik_ops toneAmber
class node_olt_service,node_zabbix_service,node_mikrotik_service,node_mikrotik toneMint
class node_config toneRose
class node_operator,node_olt_device,node_zabbix toneIndigo
```

## Components

### Web panel

- [Panel pages](https://github.com/joanjazj/onet-manager/tree/main/backend/static): `backend/static`
- [Provisioning page](https://github.com/joanjazj/onet-manager/blob/main/backend/static/aprovisionar.html): `backend/static/aprovisionar.html`
- [ONT inventory page](https://github.com/joanjazj/onet-manager/blob/main/backend/static/onts.html): `backend/static/onts.html`
- [Suspension page](https://github.com/joanjazj/onet-manager/blob/main/backend/static/corte.html): `backend/static/corte.html`

### API workflows

- [FastAPI application](https://github.com/joanjazj/onet-manager/blob/main/backend/main.py): `backend/main.py`
- [ONT provisioning](https://github.com/joanjazj/onet-manager/blob/main/backend/main.py): `backend/main.py`
- [ONT administration](https://github.com/joanjazj/onet-manager/blob/main/backend/main.py): `backend/main.py`
- [Bulk suspension import](https://github.com/joanjazj/onet-manager/blob/main/backend/main.py): `backend/main.py`
- [Subscriber suspension](https://github.com/joanjazj/onet-manager/blob/main/backend/main.py): `backend/main.py`

### Network services

- [Huawei OLT service](https://github.com/joanjazj/onet-manager/blob/main/backend/olt_service.py): `backend/olt_service.py`
- [Zabbix inventory service](https://github.com/joanjazj/onet-manager/blob/main/backend/zabbix_service.py): `backend/zabbix_service.py`
- [MikroTik service](https://github.com/joanjazj/onet-manager/blob/main/backend/mikrotik_service.py): `backend/mikrotik_service.py`

### Configuration

- [Network settings](https://github.com/joanjazj/onet-manager/blob/main/backend/config.py): `backend/config.py`

### Other components

- **ISP operator**
- **Web browser**
- **Huawei OLT**
- **Zabbix**
- **MikroTik router**

## Connections

- ISP operator → Web browser: uses
- Web browser → FastAPI application: requests pages and APIs
- FastAPI application → Panel pages: serves
- Provisioning page → FastAPI application: requests provisioning
- ONT inventory page → FastAPI application: requests ONT data
- Suspension page → FastAPI application: requests suspension actions
- FastAPI application → ONT provisioning: dispatches
- FastAPI application → ONT administration: dispatches
- FastAPI application → Bulk suspension import: dispatches upload
- FastAPI application → Subscriber suspension: dispatches
- ONT provisioning → Huawei OLT service: provisions ONT
- FastAPI application → Huawei OLT service: gets unconfigured ONTs
- ONT administration → Huawei OLT service: changes ONT settings
- FastAPI application → Zabbix inventory service: gets registered ONTs
- Bulk suspension import → MikroTik service: applies bulk cuts
- Subscriber suspension → MikroTik service: tests, lists, reactivates
- Huawei OLT service → Huawei OLT: configures via Telnet
- Zabbix inventory service → Zabbix: queries API
- MikroTik service → MikroTik router: manages address list
- FastAPI application → Network settings: reads settings
- Huawei OLT service → Network settings: reads settings
- MikroTik service → Network settings: reads settings
