Jasmin Web Panel
Jasmin Web Panel is a full-featured, modern web interface for the open-source Jasmin SMS Gateway. It provides complete control over your SMS infrastructure with an intuitive UI, advanced logging, and user management.
Video Overview
Watch the quick-start walkthrough to see Jasmin Web Panel in action:
Prefer a direct link? Watch on YouTube: https://youtu.be/z-BFJzWtq1M
Key Features
- User Management: Create and manage Jasmin groups and users, with every
mt_messaging_credauthorization, value filter and quota. - Routing Control: Manage MO (Mobile Originated) and MT (Mobile Terminated) routes, including round-robin and failover routes over several connectors.
- Filter Management: Create every Jasmin filter type; the panel shows which ones can be used on MO and MT routes.
- Connector Management: Configure, start, stop and monitor SMPP client connectors and HTTP client connectors.
- Real-time Logging: Track message status with the integrated Submit Log viewer and export it to CSV or Excel.
- Billing & Quota: Set per-user balance, SMS count and throughput quotas, and per-route rates for MT billing.
- REST API: Manage the gateway from scripts with the REST API.
- Modern Dashboard: Responsive interface with gateway health and message statistics.
Quick Start
Get the full stack (panel, Jasmin, PostgreSQL, Redis, RabbitMQ) running with Docker Compose:
git clone https://github.com/101t/jasmin-web-panel.git
cd jasmin-web-panel
cp sample.env .env # set SECRET_KEY, change the default passwords for production
docker compose up -d
Open http://localhost:8999 and sign in with admin / secret, then change the password.
Already running Jasmin? Run only the panel and point it at your gateway's jcli port:
docker run -d \
--name jasmin-web \
-p 8999:8000 \
--env-file .env \
tarekaec/jasmin_web_panel:3.1.0
See the Installation Guide for full setup options including Docker and Systemd & Nginx.
Architecture
flowchart LR
user(["You<br/>browser or API client"])
panel["<b>Jasmin Web Panel</b><br/>pages + REST API"]
jcli["<b>Jasmin gateway</b><br/>jcli console :8990"]
smsc(["SMSC providers<br/>and your apps"])
mq{{"RabbitMQ"}}
db[("Panel database")]
user -- "(1) use the panel" --> panel
panel -- "(2) jcli commands over telnet<br/>(add user, create route, ...)" --> jcli
jcli -- "(3) answer: OK or error message" --> panel
jcli -. "SMS traffic never passes<br/>through the panel" .- smsc
jcli -- "delivery results" --> mq
mq -- "sms_logger" --> db
panel -- "Submit Log page reads" --> db
How the panel and the gateway talk:
- You use the panel in the browser (or call its REST API).
- For every action (add a user, create a route, start a connector) the panel opens a telnet session to Jasmin's
jcli console on port
8990and types the same commands an administrator would, then runspersistso the change survives a restart. - Jasmin answers; the panel shows the result, or Jasmin's own error message if the command was refused.
The panel only manages the gateway. Your SMS traffic flows through Jasmin's SMPP server and HTTP API and never
passes through the panel. For the Submit Log, Jasmin publishes delivery results to RabbitMQ and the sms_logger
service stores them in the panel's database, which the Submit Log page reads.
- Frontend: Server-rendered Django templates with Bootstrap and jQuery
- Backend: Django (Python 3.11+) talking to jcli; the REST API uses the same code path
- Task Queue: Celery with Redis (exports run in the background)
- Database: PostgreSQL (recommended), MySQL, or SQLite for development; it holds panel accounts, the activity log and submit logs
- Gateway: Jasmin SMS Gateway (separate service). RabbitMQ is used by Jasmin and by the submit-log consumer, not by the panel itself