White-label business texting platform with an opaque multi-provider backend. Customers use the SignalMint dialer UI only — Vonage, Twilio, Telnyx, Bandwidth, Zoom, Google Voice (browser automation), RingoX, and 3CX run behind the scenes under Super Admin control.
Test the full platform online — no local Postgres or Docker needed.
| Service | URL |
|---|---|
| App (login here) | https://client-app-alpha-livid.vercel.app |
| API | https://signalmint-api.vercel.app |
| Health | https://signalmint-api.vercel.app/api/health |
| API root | https://signalmint-api.vercel.app/ |
Open the frontend URL to sign in. The API URL is for health checks and integrations only (visiting / in a browser shows JSON, not the app).
| Role | Password | What you can do | |
|---|---|---|---|
| Super Admin | super_admin@signalmint.local |
password123 |
All orgs, providers, impersonation, approvals |
| Admin (FT Solutions) | admin@ftsolutions.local |
password123 |
Manage own users, branding, API keys |
| Admin (Acme) | admin@acme.local |
password123 |
Separate org — cannot see FT users |
| User (FT) | user1@demo.local |
password123 |
Inbox, dialpad, contacts |
| User (Acme) | user2@demo.local |
password123 |
Inbox in Acme org only |
- OTP signup — email + SMS verification codes, then admin approval before account activates
- Role hierarchy — Super Admin → Admin (per org) → User with strict data isolation
- Super Admin powers — create/suspend/delete admins & users, approve signups, Login as any user
- Admin powers — create/delete users in own org only; cannot see other admins' teams
- JWT sessions — server-side revocation on suspend; logout endpoint
- Per-org delivery mode — Super Admin toggles sandbox/live per organization
- API root —
GET /returns service info (fixes confusing "Cannot GET /" error)
- Inbox polling — conversations refresh every 12s without manual reload
- TONY AI Agent moved to standalone repo:
D:\TONY AI AGENT
React dialer UI → Node API (PostgreSQL) → Provider router
├─ Vonage / Twilio / Mock (API lane)
└─ automation-worker (browser lane)
- Create account — name, email, phone (E.164), password; optional org invite code
- Verify email — 6-digit OTP (in production: email; dev: server console when
OTP_LOG_TO_CONSOLE=true) - Verify phone — SMS OTP
- Pending approval — Admin or Super Admin approves in Team admin / Platform console
- Sign in — account becomes
active
Admins can also create users directly (skips OTP) from Team admin → Users.
- Log in as
super_admin@signalmint.local - Open Platform in the sidebar
- Pending approvals — approve new signups
- Create admin — provisions a new organization automatically
- Organizations — toggle per-org sandbox/live delivery
- Login as — impersonate any active user to see their inbox
- Log in as
admin@ftsolutions.local - Open Team admin
- Create user — adds a user to your org (you are their manager)
- Pending approvals — approve signups assigned to your org
- Branding — white-label name and colors for your org
Authorization: Bearer smk_…
GET /api/v1/contacts
POST /api/v1/messages/send { "to", "from", "message" }Create keys in Team admin → API keys.
If you have Docker and disk space:
docker compose up -d # Postgres :5434, Redis :6380, worker :5055
cd server
Copy-Item .env.example .env
npm install && npm run devcd client-app
npm install && npm startWithout Docker, use the live URLs above for testing.
See server/.env.example. Key production vars:
| Variable | Purpose |
|---|---|
DATABASE_URL |
Neon / Postgres connection |
JWT_SECRET |
Auth tokens |
MASTER_ENCRYPTION_KEY |
Encrypt provider credentials |
AUTO_SEED=true |
Demo users on first boot |
OTP_LOG_TO_CONSOLE=true |
Log OTP codes to Vercel logs (for testing without email SMTP) |
REQUIRE_ADMIN_APPROVAL=true |
Signups need admin approval (default) |
SMS_SANDBOX_MODE=true |
Mock SMS delivery (safe for testing) |
PUBLIC_BACKEND_URL |
Webhook base URL |
cd server
vercel link
vercel deploy --prodSet env vars in Vercel dashboard for signalmint-api. Migrations run automatically on boot.
cd client-app
vercel link
vercel deploy --prodSet REACT_APP_API_URL=https://signalmint-api.vercel.app
cd server
npm run test:all
npm run smokeCI runs on push to main.
| Role | Can see providers? | Capabilities |
|---|---|---|
| User | No | Inbox, dialpad, contacts, assigned numbers |
| Admin | No | Manage org users, numbers, reports, branding |
| Super Admin | Yes | All providers, all orgs, impersonation, approvals |
- TESTING.md — manual + automated tests
- PRD.md — full product spec
- .planning/SECRETS-RUNBOOK.md — credential rotation