iamdoubz a5de247948 generator: core apply loop, sanitizers, system config routes
render() is pure and gives every file the header (bodies arrive per task).
apply() runs one at a time, debounces requestApply, writes changed files
atomically (mode 0640), keeps .prev, sends each needed reload once, skips
pjsip reload and sets restartRequired when transports change, and records
generator_runs. AMI connects on startup and every reconnect forces a full
apply. Admin routes: config apply/rollback and a masked generated-files view.

Task: M2-T2
2026-10-17 16:17:13 -05:00
2026-10-17 14:11:09 -05:00
2026-10-17 14:11:09 -05:00
2026-10-17 14:11:09 -05:00

SelfPhoneNG

A fully open source, self-hosted business phone system: extensions, desk phones and a browser softphone, voicemail to email, IVRs, ring groups, queues, office hours, call recording, live dashboard, SMS and phone provisioning. Bring your own SIP trunk and numbers (reference provider: voip.ms). Built on Asterisk 24 LTS + TypeScript + PostgreSQL 18.

Status: specification stage. Nothing is built yet.

License: AGPL-3.0-or-later.

S
Description
Open source, self hosted alternative for 3cx
https://github.com/iamdoubz/selfphoneng
Readme AGPL-3.0
9.2 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 83.9%
JavaScript 15%
Shell 0.7%
Dockerfile 0.3%