Desarrollo VoIP+Backend para FreeSWITCH Multi-Cliente

Job ID: 40001858

Budget: $30 – $250 USD

Busco desarrollador VoIP + backend para montar una arquitectura con FreeSWITCH multi-cliente integrada a mi backend en NestJS y frontend ReactJS.

Objetivo general

Tener una PBX en FreeSWITCH multi-tenant donde:

Cada cliente (tenant) tenga su propio domain (ej: cliente1.midominio.com).

Desde el backend pueda definir cuántas llamadas simultáneas permite cada cliente (ej: 3, 5, 10 canales).

Todos los usuarios del cliente puedan llamar, pero respetando ese límite de canales.

El frontend ReactJS se conecte vía WebRTC/SIP al servidor usando credenciales efímeras (no fijas).

Stack tecnológico deseado

FreeSWITCH (Ubuntu) configurado para:

Multi-tenant (un dominio por cliente).

Directorio dinámico vía mod_xml_curl (usuarios generados desde el backend).

Registro de usuarios SIP efímeros.

Manejo de límites de canales por tenant.

Backend en NestJS con arquitectura limpia/hexagonal:

API REST y WebSocket/Socket.io para comunicación en tiempo real con el frontend.

Integración con FreeSWITCH (event socket / mod_xml_curl) para crear/borrar usuarios y controlar llamadas.

Gestión de tokens (JWT) para autenticar sesiones de los usuarios.

Uso de MongoDB para almacenar tenants, usuarios, permisos y límites de llamadas.

Frontend de ejemplo en ReactJS:

Un pequeño softphone web de ejemplo (login, marcar número, colgar, ver estado de llamada).

Consumo de la API NestJS (login → recibe token → obtiene credenciales SIP efímeras).

Conexión SIP/WebRTC al FreeSWITCH usando esas credenciales.

Mostrar de forma básica el número de llamadas activas y bloqueo cuando se supera el límite.

Requerimientos del profesional

Experiencia demostrable con FreeSWITCH (idealmente proyectos multi-tenant).

Buen dominio de NestJS, MongoDB, JWT y WebSocket/Socket.io.

Experiencia con ReactJS y softphones WebRTC/SIP es un plus muy importante.

Capacidad de documentar la instalación (Ubuntu) y dejar scripts/configuración reproducibles.

Entregables

Configuración de FreeSWITCH lista en mi VPS (con certificados SSL básicos).

Proyecto NestJS con:

Módulo de tenants, usuarios, límites de llamadas y emisión de tokens.

Integración con FreeSWITCH (mod_xml_curl / event socket) para crear usuarios efímeros.

Ejemplo funcional en ReactJS (softphone simple) usando token + socket.

Documentación corta de instalación y uso (README).

Por favor envía:

Proyectos similares realizados (FreeSWITCH/Asterisk + backend).

Tiempo estimado y propuesta económica.
Related categories: Linux VoIP Node.js React.js MongoDB API Development SIP WebRTC