TowitLinks¶
TowitLinks is a multi-tenant cloud phone system built on Twilio. A company signs up, gets phone numbers, and its agents answer and place calls from a browser, from the Android/iOS app, or from a SIP hardphone — with call recording, transcription, SMS threads, a shared contact book, business-hours routing, extensions and per-number Stripe billing.
This site documents the monorepo at
Nitza-Developement/VoIP: what each piece
does, how they fit together, how to run them locally and how they reach production.
The four deliverables¶
| Component | Path | What it is |
|---|---|---|
| Backend | backend/ |
Django + DRF API, Twilio webhook handler, Stripe billing, Firestore mirror |
| Web app | frontend/ |
SvelteKit SPA — the agent console and browser softphone |
| Mobile app | frontend/android, frontend/ios |
The same SPA wrapped in Capacitor, with a native call plugin |
| Landing | landing/ |
SSR marketing site at towitlinks.com |
Where things live¶
towitlinks.com— the landing pageapp.towitlinks.com— the agent console and the REST API under/api/v1staging.towitlinks.com— the staging stack, including APK downloads under/android/
Start here¶
- Getting started — run the stack on your machine
- Architecture overview — how the pieces talk
- Telephony — the Twilio call flow, end to end
- Deployment — CI, images, Portainer, scripts
- Known issues — the sharp edges, written down honestly
How to read this documentation¶
It describes the system as it is, not as it was designed to be. Where the code and the
intent disagree — dead Celery services, empty WebSocket routers, a stale .env.example —
the pages say so and point at Known issues instead of quietly
documenting the aspiration.
Every non-obvious claim carries a path:line reference. If a reference no longer matches
the code, the documentation is the thing that is wrong; fix it in the same pull request
that moved the code.