4fc0fb4084bd939a7200be6be039a3051cc2d83b
/api/blocked-numbers stores numbers normalized (any input format) and mirrors them to AstDB SP/BLOCK/<number>, which every trunk entry checks (Hangup 21); the AstDB resync on connect includes them. Blocked numbers page: add with a note, unblock. e2e m6-check runs the M6 milestone scenario with real calls into a trunk entry: DID → office hours (closed → voicemail; *31N from an admin's phone forces open) → menu (1 → ring group ringing two phones together, 2 → a user), and a caller blocked in the UI is rejected while others get through. Task: M6-T8
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.
- Start here if you are writing code (human or AI):
AGENTS.md - The full spec:
docs/spec/ - Build order:
docs/spec/09-roadmap.md
License: AGPL-3.0-or-later.
Description
Open source, self hosted alternative for 3cx
https://github.com/iamdoubz/selfphoneng
9.2 MiB
0 Stars
1 Watchers
0 Forks
Languages
TypeScript
83.9%
JavaScript
15%
Shell
0.7%
Dockerfile
0.3%