Evaluando propuestas

Desarrollador Voip y Backend para Arquitectura Multi-cliente con Freeswitch, Nestjs y Reactjs

Publicado el 22 Noviembre, 2025 en Programación y Tecnología

Sobre este proyecto

Abierto

Se busca un desarrollador experimentado para diseñar e implementar una arquitectura VoIP multi-cliente robusta. El proyecto implica la configuración de un servidor FreeSWITCH multi-tenant, la creación de un backend en NestJS para la gestión de clientes y llamadas, y el desarrollo de un frontend en ReactJS que funcione como softphone web.

Objetivo General:
Establecer una PBX multi-tenant utilizando FreeSWITCH, donde cada cliente (tenant) opere bajo su propio subdominio lógico (ej: cliente1.midominio.com). El sistema debe permitir definir y controlar el número de llamadas simultáneas por cliente desde el backend, asegurando que todos los usuarios de un cliente puedan realizar llamadas respetando dicho límite. El frontend en ReactJS se conectará al servidor FreeSWITCH mediante WebRTC/SIP, utilizando credenciales efímeras para mayor seguridad.

Stack Tecnológico Deseado:

FreeSWITCH (sobre Ubuntu):
Configuración para operar en un entorno multi-tenant, asignando un dominio específico a cada cliente.
Implementación de un directorio dinámico a través de mod_xml_curl, permitiendo la gestión de usuarios desde el backend.
Soporte para el registro de usuarios SIP efímeros.
Capacidad para gestionar y aplicar límites de canales por cada tenant.

Backend en NestJS:
Desarrollo de una api rest y una comunicación en tiempo real vía websocket/socket.io para interactuar con el frontend.
Integración profunda con FreeSWITCH utilizando event socket y mod_xml_curl para la creación, eliminación de usuarios y el control de llamadas.
Implementación de un sistema de gestión de tokens (JWT) para la autenticación segura de sesiones de usuario.
Uso de MongoDB como base de datos para almacenar información de tenants, usuarios, permisos y límites de llamadas.

Frontend de Ejemplo en ReactJS:
Creación de un softphone web básico que incluya funcionalidades de login, marcación de números, colgar llamadas y visualización del estado de la llamada.
Consumo de la API de NestJS para el proceso de login, recepción de tokens y obtención de credenciales SIP efímeras.
Establecimiento de la conexión SIP/WebRTC con FreeSWITCH utilizando las credenciales proporcionadas.
Visualización básica del número de llamadas activas y un mecanismo de bloqueo cuando se excede el límite de canales del tenant.

Requerimientos del Profesional:
Experiencia comprobable en proyectos con FreeSWITCH, preferiblemente en configuraciones multi-tenant.
Capacidad para desarrollar un proyecto NestJS que incluya:
Un módulo completo para la gestión de tenants, usuarios, límites de llamadas y emisión de tokens.
Integración efectiva con FreeSWITCH (mod_xml_curl / event socket) para la creación de usuarios efímeros.
Entrega de un ejemplo funcional en ReactJS (softphone simple) que demuestre el uso de tokens y sockets para la comunicación.
Provisión de documentación concisa para la instalación y uso del sistema (archivo README).

Categoría Programación y Tecnología
Subcategoría Programación Web
¿Cuál es el alcance del proyecto? Crear un nuevo sitio personalizado

Plazo de Entrega: No definido

Habilidades necesarias