Architecture Overview
ICTPBX is composed of four layers that work together:
┌─────────────────────────────────────┐
│ Angular 13 Frontend (ngx-admin) │ Browser → http:///
├─────────────────────────────────────┤
│ ICTCore REST API (PHP 8.3) │ http:///api
├─────────────────────────────────────┤
│ ICTCore PBX Engine (DB + Config) │ PostgreSQL (ictcore pbx)
├─────────────────────────────────────┤
│ FreeSWITCH 1.10.12 (PBX Engine) │ SIP :5060, WSS :7443, ESL :8021
└─────────────────────────────────────┘
Component Roles
| Component |
Role |
Path |
| Angular Frontend |
Web UI served by Apache |
/usr/ictpbxx |
| ICTCore |
REST API, auth, billing, users, PBX config |
/usr/ictcore |
| FreeSWITCH |
SIP server, media handling |
/etc/freeswitch |
| MariaDB |
ICTCore data (users, tenants, CDR) |
Port 3306 |
| PostgreSQL |
ICTCore PBX config data |
Port 5432 |
Call Flow
Inbound Call (PSTN)
└── FreeSWITCH (SIP :5060)
└── Reads dialplan from ICTCore PostgreSQL
└── Routes to Extension / IVR / Queue
└── Media: RTP audio streams
Data Flow (Admin Actions)
Browser (Angular)
└── POST /api/extensions → ICTCore
└── Writes to ICTCore PostgreSQL (v_extensions)
└── ICTCore reloads FreeSWITCH XML
Ports Summary
| Port |
Protocol |
Service |
| 80/443 |
HTTP/HTTPS |
Apache (Frontend + API) |
| 5060 |
UDP/TCP |
FreeSWITCH SIP |
| 7443 |
WSS |
FreeSWITCH WebRTC |
| 8021 |
TCP |
FreeSWITCH ESL (localhost only) |
| 3306 |
TCP |
MariaDB (localhost only) |
| 5432 |
TCP |
PostgreSQL (localhost only) |