# B2BCall Plataforma de discagem preditiva / call center — monorepo TypeScript (Next.js + NestJS + PostgreSQL + Redis + Asterisk 22/PJSIP), construída e testada de ponta a ponta contra containers reais. ## Stack - **Frontend**: Next.js 15 (App Router), React 19, Tailwind CSS v4. - **Backend**: NestJS 11 (Fastify), Prisma ORM. - **Banco**: PostgreSQL 17 (schemas `public` + `asterisk`). - **Cache/coordenação**: Redis 7 (CPS limiter, lock distribuído, EWMA de pacing). - **Telefonia**: Asterisk 22.10.1 (PJSIP, AMI, ARI, Realtime via ODBC). - **Infra**: Docker Compose, Nginx (reverse proxy único), nftables. ## Início rápido ```bash git clone /opt/b2bcall cd /opt/b2bcall sudo ./scripts/install.sh ``` Ao final, a URL de acesso e o caminho do `FIRST_LOGIN.txt` (credenciais do primeiro acesso) são impressos no terminal. Detalhes em [`docs/INSTALL.md`](docs/INSTALL.md). ## Documentação | Documento | Conteúdo | |---|---| | [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | Decisões de arquitetura, estrutura do monorepo, rede | | [`docs/INSTALL.md`](docs/INSTALL.md) | Instalação passo a passo | | [`docs/OPERATIONS.md`](docs/OPERATIONS.md) | Operação do dia a dia, atualização, escala | | [`docs/BACKUP_RESTORE.md`](docs/BACKUP_RESTORE.md) | Backup e restore | | [`docs/SECURITY.md`](docs/SECURITY.md) | Postura de segurança e checklist de aceite | | [`docs/DATABASE.md`](docs/DATABASE.md) | Modelo de dados e decisões de schema | | [`docs/API.md`](docs/API.md) | Referência de rotas da API | | [`docs/ASTERISK.md`](docs/ASTERISK.md) | Configuração e diagnóstico do Asterisk | | [`docs/OPENSIPS.md`](docs/OPENSIPS.md) | Por que não foi implantado nesta fase | | [`docs/PREDICTIVE_DIALER.md`](docs/PREDICTIVE_DIALER.md) | Algoritmo do discador preditivo | | [`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) | Problemas reais encontrados e soluções | | [`docs/RELATORIO_FINAL.md`](docs/RELATORIO_FINAL.md) | Relatório final de aceite do projeto | | [`CHANGELOG.md`](CHANGELOG.md) | O que foi entregue em cada fase | | [`TODO.md`](TODO.md) | Checklist detalhado, item a item, com notas de teste | ## Estrutura ```text apps/ frontend Next.js — interface web completa api NestJS — REST, autenticação, RBAC, telefonia, relatórios dialer-worker Motor do discador preditivo asterisk-events Conector AMI dedicado (eventos → Postgres/Redis) packages/ database Schema Prisma + migrations shared Utilitários compartilhados (permissões, criptografia) telephony Client AMI/ARI próprio infrastructure/ asterisk Configuração do Asterisk nginx Reverse proxy postgres Scripts de inicialização (schemas public + asterisk) docker Dockerfiles nftables Regras de firewall scripts/ install.sh, update.sh, backup.sh, restore.sh, healthcheck.sh ``` ## Desenvolvimento ```bash pnpm install pnpm -r build # build de todos os pacotes/apps pnpm -r test # testes unitários (dialer-worker + api) pnpm --filter @b2bcall/api lint ``` ## Ambiente de referência Construído e validado em Debian 13 (trixie), 2 vCPU / 1.9 GiB RAM — ver `docs/ARCHITECTURE.md` §1 para as implicações dessa restrição nas decisões de arquitetura. Recomendado 4 vCPU / 8 GiB RAM para produção com volume real de discagem.