# plugnowplay/aibill-radius architecture

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

- Interactive diagram: https://gitdiagram.com/plugnowplay/aibill-radius
- Repository: https://github.com/plugnowplay/aibill-radius

## Overview

AIBILL RADIUS is an ISP billing and operations system. Admins manage subscriber accounts, access profiles, vouchers, invoices, payments, network resources, and finances; agents sell vouchers, while customers can access invoices and purchase e-vouchers. Payment creation delegates to gateway clients, and webhook handling updates billing state and triggers RADIUS synchronization and notifications. The graph also includes documented operational capabilities; several UI/API connections and unsampled integrations are inferred from the routes and README, so uncertain links are omitted.

Main entry points: [`src/lib/prisma.ts`](https://github.com/plugnowplay/aibill-radius/blob/main/src/lib/prisma.ts) (MySQL Data), [`src/app/admin/page.tsx`](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/admin/page.tsx) (Admin Console), [`src/app/api/invoices/route.ts`](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/invoices/route.ts) (Invoice Management), [`src/app/api/pppoe/users/route.ts`](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/pppoe/users/route.ts) (PPPoE Accounts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access Management"]
  node_adminui["Admin Console<br/>[page.tsx]"]
  node_pppoe["PPPoE Accounts<br/>[route.ts]"]
  node_pppprofiles["PPPoE Profiles<br/>[route.ts]"]
  node_hotspot["Hotspot Vouchers<br/>[route.ts]"]
end

subgraph group_billing["Billing And Sales"]
  node_agentui["Agent Portal<br/>[page.tsx]"]
  node_customerui["Customer Portal<br/>[page.tsx]"]
  node_agents["Agent Accounts<br/>[route.ts]"]
  node_invoices["Invoice Management<br/>[route.ts]"]
  node_evoucher["E-voucher Orders<br/>[route.ts]"]
  node_payment["Payment Creation<br/>[route.ts]"]
  node_webhook["Payment Settlement<br/>[route.ts]"]
  node_ledger["Financial Transactions<br/>[route.ts]"]
end

subgraph group_operations["Network Operations"]
  node_sessions["Session Monitoring<br/>[route.ts]"]
  node_network["Network Management<br/>[route.ts]"]
  node_dashboard["Dashboard Stats<br/>[route.ts]"]
end

subgraph group_messaging["Messaging And Automation"]
  node_cron["Scheduled Operations<br/>[route.ts]"]
  node_whatsapp["WhatsApp Notifications"]
end

subgraph group_platform["Platform Services"]
  node_backup["Backup Management<br/>[backup.ts]"]
  node_auth["Authentication<br/>[auth.ts]"]
  node_database[("MySQL Data<br/>[prisma.ts]")]
end

node_admin(("Admin"))
node_agent(("Agent"))
node_customer(("Customer"))
node_radius["FreeRADIUS"]
node_gateways["Payment Gateways"]
node_whatsappservice["WhatsApp Service"]
node_telegram["Telegram"]
node_genieacs["GenieACS"]

node_admin -->|"uses"| node_adminui
node_agent -->|"uses"| node_agentui
node_customer -->|"uses"| node_customerui
node_adminui -->|"manages"| node_pppoe
node_adminui -->|"manages"| node_pppprofiles
node_adminui -->|"manages"| node_hotspot
node_adminui -->|"manages"| node_agents
node_adminui -->|"manages"| node_invoices
node_adminui -->|"manages"| node_ledger
node_adminui -->|"monitors"| node_sessions
node_adminui -->|"configures"| node_network
node_adminui -->|"views"| node_dashboard
node_adminui -->|"triggers"| node_cron
node_agentui -->|"uses"| node_agents
node_agentui -->|"sells vouchers"| node_hotspot
node_customerui -->|"views invoices"| node_invoices
node_customerui -->|"purchases"| node_evoucher
node_evoucher -->|"requests payment"| node_payment
node_invoices -->|"requests payment"| node_payment
node_payment -->|"reads and writes"| node_database
node_payment -->|"creates payment"| node_gateways
node_gateways -->|"sends status"| node_webhook
node_webhook -->|"updates billing"| node_database
node_webhook -->|"syncs vouchers"| node_radius
node_webhook -->|"sends receipts"| node_whatsapp
node_pppoe -->|"reads and writes"| node_database
node_pppoe -->|"sends notice"| node_whatsapp
node_pppoe -->|"updates RADIUS data"| node_radius
node_pppprofiles -->|"reads and writes"| node_database
node_pppprofiles -->|"updates RADIUS groups"| node_radius
node_hotspot -->|"reads and writes"| node_database
node_hotspot -->|"syncs vouchers"| node_radius
node_agents -->|"reads and writes"| node_database
node_agents -->|"sends message"| node_whatsappservice
node_invoices -->|"reads and writes"| node_database
node_invoices -->|"sends payment notice"| node_whatsapp
node_ledger -->|"reads and writes"| node_database
node_sessions -->|"reads accounting"| node_database
node_dashboard -->|"reads metrics"| node_database
node_dashboard -->|"checks session"| node_auth
node_network -->|"reads and writes"| node_database
node_cron -->|"runs scheduled jobs"| node_database
node_cron -->|"sends reminders"| node_whatsapp
node_cron -->|"sends backup and health"| node_telegram
node_backup -->|"backs up data"| node_database
node_network -.->|"manages devices"| node_genieacs

click node_adminui "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/admin/page.tsx"
click node_agentui "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/agent/page.tsx"
click node_customerui "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/customer/page.tsx"
click node_pppoe "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/pppoe/users/route.ts"
click node_pppprofiles "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/pppoe/profiles/route.ts"
click node_hotspot "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/hotspot/voucher/route.ts"
click node_agents "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/hotspot/agents/route.ts"
click node_invoices "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/invoices/route.ts"
click node_evoucher "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/evoucher/purchase/route.ts"
click node_payment "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/payment/create/route.ts"
click node_webhook "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/payment/webhook/route.ts"
click node_ledger "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/keuangan/transactions/route.ts"
click node_sessions "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/sessions/route.ts"
click node_network "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/network/routers/route.ts"
click node_dashboard "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/dashboard/stats/route.ts"
click node_cron "https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/cron/route.ts"
click node_whatsapp "https://github.com/plugnowplay/aibill-radius/blob/main/src/lib/whatsapp-notifications.ts"
click node_backup "https://github.com/plugnowplay/aibill-radius/blob/main/src/lib/backup.ts"
click node_auth "https://github.com/plugnowplay/aibill-radius/blob/main/src/lib/auth.ts"
click node_database "https://github.com/plugnowplay/aibill-radius/blob/main/src/lib/prisma.ts"

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_adminui,node_pppoe,node_pppprofiles,node_hotspot toneBlue
class node_agentui,node_customerui,node_agents,node_invoices,node_evoucher,node_payment,node_webhook,node_ledger toneAmber
class node_sessions,node_network,node_dashboard toneMint
class node_cron,node_whatsapp toneRose
class node_backup,node_auth,node_database,node_admin,node_agent,node_customer,node_radius,node_gateways,node_whatsappservice,node_telegram,node_genieacs toneIndigo
```

## Components

### Access Management

- [Admin Console](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/admin/page.tsx): `src/app/admin/page.tsx`
- [PPPoE Accounts](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/pppoe/users/route.ts): `src/app/api/pppoe/users/route.ts`
- [PPPoE Profiles](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/pppoe/profiles/route.ts): `src/app/api/pppoe/profiles/route.ts`
- [Hotspot Vouchers](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/hotspot/voucher/route.ts): `src/app/api/hotspot/voucher/route.ts`

### Billing And Sales

- [Agent Portal](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/agent/page.tsx): `src/app/agent/page.tsx`
- [Customer Portal](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/customer/page.tsx): `src/app/customer/page.tsx`
- [Agent Accounts](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/hotspot/agents/route.ts): `src/app/api/hotspot/agents/route.ts`
- [Invoice Management](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/invoices/route.ts): `src/app/api/invoices/route.ts`
- [E-voucher Orders](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/evoucher/purchase/route.ts): `src/app/api/evoucher/purchase/route.ts`
- [Payment Creation](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/payment/create/route.ts): `src/app/api/payment/create/route.ts`
- [Payment Settlement](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/payment/webhook/route.ts): `src/app/api/payment/webhook/route.ts`
- [Financial Transactions](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/keuangan/transactions/route.ts): `src/app/api/keuangan/transactions/route.ts`

### Network Operations

- [Session Monitoring](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/sessions/route.ts): `src/app/api/sessions/route.ts`
- [Network Management](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/network/routers/route.ts): `src/app/api/network/routers/route.ts`
- [Dashboard Stats](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/dashboard/stats/route.ts): `src/app/api/dashboard/stats/route.ts`

### Messaging And Automation

- [Scheduled Operations](https://github.com/plugnowplay/aibill-radius/blob/main/src/app/api/cron/route.ts): `src/app/api/cron/route.ts`
- [WhatsApp Notifications](https://github.com/plugnowplay/aibill-radius/blob/main/src/lib/whatsapp-notifications.ts): `src/lib/whatsapp-notifications.ts`

### Platform Services

- [Backup Management](https://github.com/plugnowplay/aibill-radius/blob/main/src/lib/backup.ts): `src/lib/backup.ts`
- [Authentication](https://github.com/plugnowplay/aibill-radius/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [MySQL Data](https://github.com/plugnowplay/aibill-radius/blob/main/src/lib/prisma.ts): `src/lib/prisma.ts`

### Other components

- **Admin**
- **Agent**
- **Customer**
- **FreeRADIUS**
- **Payment Gateways**
- **WhatsApp Service**
- **Telegram**
- **GenieACS**

## Connections

- Admin → Admin Console: uses
- Agent → Agent Portal: uses
- Customer → Customer Portal: uses
- Admin Console → PPPoE Accounts: manages
- Admin Console → PPPoE Profiles: manages
- Admin Console → Hotspot Vouchers: manages
- Admin Console → Agent Accounts: manages
- Admin Console → Invoice Management: manages
- Admin Console → Financial Transactions: manages
- Admin Console → Session Monitoring: monitors
- Admin Console → Network Management: configures
- Admin Console → Dashboard Stats: views
- Admin Console → Scheduled Operations: triggers
- Agent Portal → Agent Accounts: uses
- Agent Portal → Hotspot Vouchers: sells vouchers
- Customer Portal → Invoice Management: views invoices
- Customer Portal → E-voucher Orders: purchases
- E-voucher Orders → Payment Creation: requests payment
- Invoice Management → Payment Creation: requests payment
- Payment Creation → MySQL Data: reads and writes
- Payment Creation → Payment Gateways: creates payment
- Payment Gateways → Payment Settlement: sends status
- Payment Settlement → MySQL Data: updates billing
- Payment Settlement → FreeRADIUS: syncs vouchers
- Payment Settlement → WhatsApp Notifications: sends receipts
- PPPoE Accounts → MySQL Data: reads and writes
- PPPoE Accounts → WhatsApp Notifications: sends notice
- PPPoE Accounts → FreeRADIUS: updates RADIUS data
- PPPoE Profiles → MySQL Data: reads and writes
- PPPoE Profiles → FreeRADIUS: updates RADIUS groups
- Hotspot Vouchers → MySQL Data: reads and writes
- Hotspot Vouchers → FreeRADIUS: syncs vouchers
- Agent Accounts → MySQL Data: reads and writes
- Agent Accounts → WhatsApp Service: sends message
- Invoice Management → MySQL Data: reads and writes
- Invoice Management → WhatsApp Notifications: sends payment notice
- Financial Transactions → MySQL Data: reads and writes
- Session Monitoring → MySQL Data: reads accounting
- Dashboard Stats → MySQL Data: reads metrics
- Dashboard Stats → Authentication: checks session
- Network Management → MySQL Data: reads and writes
- Scheduled Operations → MySQL Data: runs scheduled jobs
- Scheduled Operations → WhatsApp Notifications: sends reminders
- Scheduled Operations → Telegram: sends backup and health
- Backup Management → MySQL Data: backs up data
- Network Management → GenieACS: manages devices
