Skip to content

Repository files navigation

Contributors Forks Stargazers Issues Apache License Go Svelte


Logo

SMSGate Web Dashboard

Web-based administrative dashboard for the SMSGate ecosystem — turn Android devices into SMS gateways.
Explore the docs »

Report Bug · Request Feature

About The Project

The SMSGate Web Dashboard is a standalone Go HTTP server with an embedded Svelte 5 single-page application. It provides a graphical user interface and REST API for managing Android devices configured as SMS gateways through the SMSGate platform.

The dashboard acts as a proxy to the SMSGate 3rd Party API, handling authentication, session management, and real-time event streaming via Server-Sent Events.

Features

  • Dashboard — aggregated statistics: devices online/active/total, messages sent/pending/failed
  • Message Management — paginated message list with filtering (by state, device, date range); send new SMS; view delivery status and timeline
  • Device Management — view registered devices with online/offline status, remove devices
  • Webhook Management — create, list, and delete webhooks for SMS events (received, sent, delivered, failed, MMS, data SMS, system ping)
  • API Token Management — generate JWT tokens with granular scope selection (15 permission levels); copy and revoke tokens
  • Device Settings — configure message intervals, SIM selection mode, processing order, ping intervals, log lifetime, webhook signing key, retry policy, gateway cloud URL, and encryption passphrase
  • Real-time Notifications — live SSE stream for incoming messages, state changes, and device status updates with toast notifications
  • OpenAPI Documentation — Swagger UI at /api/v1/docs
  • Prometheus Metrics — metrics endpoint for monitoring

Built With

  • Go
  • Fiber
  • Fx
  • Svelte
  • Vite

(back to top)

Architecture

Browser (Svelte SPA)  ──►  Go Dashboard (:3000)  ──►  SMSGate 3rd Party API (:443)
                                    │
                          ┌─────────┼─────────┐
                          │         │         │
                     Cookie     SSE      Webhook
                     Sessions   Events   Callbacks
  • Authentication: credentials are validated against the SMSGate API, then stored in cookie-backed server sessions
  • Real-time: the dashboard registers webhooks on the SMSGate server for each user session; incoming webhook callbacks are translated to SSE events and pushed to the browser
  • Frontend: Svelte 5 SPA compiled to static files, embedded in the Go binary via embed.FS

(back to top)

Getting Started

Installation

Docker (recommended)

Multi-platform Docker images are published to GitHub Container Registry:

docker pull ghcr.io/android-sms-gateway/web-dashboard:latest

Run with:

docker run -p 3000:3000 \
  -e HTTP__LISTEN=0.0.0.0:3000 \
  -e GATEWAY__URL=https://api.sms-gate.app/3rdparty/v1 \
  -e GATEWAY__WEBHOOK_URL=https://your-public-url/api/webhooks/callback \
  ghcr.io/android-sms-gateway/web-dashboard:latest

Images support linux/amd64 and linux/arm64, are based on Alpine Linux, and run as a non-root user.

GitHub Releases

Pre-built binaries for Linux, macOS, and Windows are available on the GitHub Releases page.

# Example — download and run the Linux amd64 binary
curl -LO https://github.com/android-sms-gateway/web-dashboard/releases/latest/download/web-dashboard_linux_amd64.tar.gz
tar xzf web-dashboard_linux_amd64.tar.gz
./web-dashboard

Build from source

  1. Clone the repository.
    git clone https://github.com/android-sms-gateway/web-dashboard.git
    cd web-dashboard
  2. Install Go dependencies.
    make deps
  3. Build the project (generates OpenAPI docs and compiles frontend).
    make build

Configuration

The application is configured via environment variables or an optional YAML file:

Variable Default Description
HTTP__LISTEN 127.0.0.1:3000 HTTP server bind address
GATEWAY__URL https://api.sms-gate.app/3rdparty/v1 SMSGate 3rd Party API endpoint
GATEWAY__WEBHOOK_URL http://localhost:3000/api/webhooks/callback Public callback URL for webhook events
CONFIG_PATH Path to optional YAML configuration file

Example:

export HTTP__LISTEN=0.0.0.0:8080
export GATEWAY__URL=https://api.sms-gate.app/3rdparty/v1
./web-dashboard

(back to top)

Development

Start the development server with live reload:

make air

This runs the Go server via air (hot reload on .go changes) and automatically builds the Svelte frontend. The Vite dev server proxies /api requests to the Go server.

Prerequisites

  • Go 1.25+
    go version
  • Node.js 20+
    node --version
  • golangci-lint (optional, for linting)
    golangci-lint version
  • air (optional, for live reload)
    go install github.com/air-verse/air@latest

Available Commands

Command Description
make build Full production build (gen + compile Go binary)
make test Run tests with race detection
make coverage Run tests and generate coverage report
make lint Run golangci-lint
make fmt Format code with golangci-lint
make air Start development server with live reload
make gen Generate OpenAPI docs and compile frontend assets (prerequisite for build)

(back to top)

API Endpoints

All endpoints are prefixed with /api/v1.

Method Route Auth Description
POST /auth/login No Authenticate with SMSGate credentials
POST /auth/logout No Destroy session
GET /auth/me Yes Get authenticated username
GET /stats Yes Aggregated dashboard statistics
GET /messages Yes List messages (paginated, filterable)
POST /messages Yes Send a new SMS
GET /messages/:id Yes Get message details with delivery timeline
GET /devices Yes List registered devices
DELETE /devices/:id Yes Remove a device
GET /webhooks Yes List webhooks
POST /webhooks Yes Create a webhook
DELETE /webhooks/:id Yes Delete a webhook
GET /settings Yes Get device settings
PATCH /settings Yes Update device settings
POST /tokens Yes Generate an API token
DELETE /tokens/:jti Yes Revoke an API token
GET /events Yes SSE real-time event stream
POST /api/webhooks/callback/:userId No Webhook callback receiver (called by SMSGate)

OpenAPI documentation is available at /api/v1/docs when enabled.

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the Apache 2.0 License. See LICENSE for more information.

(back to top)

Contact

Maintainer: @capcom6

Project Link: https://github.com/android-sms-gateway/web-dashboard

(back to top)

About

Web-based administrative dashboard for the SMSGate ecosystem

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages