Shomla is a cross-platform, 1-on-1 voice chat service that runs directly in the browser with minimal latency and no native app installation required. At the core of the platform is a high-performance signaling server written in Go (Golang) that manages WebSocket sessions and smart matchmaking queues, paired with a hybrid WebRTC infrastructure (P2P + a distributed pool of TURN servers) featuring dynamic authentication. The frontend is built as a Zero-Framework PWA, offloading heavy logic to Web Workers to ensure instant UI responsiveness even on budget mobile devices.
- Live Production:
shomla.com - Tech Stack: Go (Gorilla WebSockets, Fiber, Chi), PHP 8, SQLite, WebRTC, Hybrid TURN/STUN (REST API Ephemeral Auth), Vanilla JS, Web Workers, PWA.
Engineering & Product Challenges
When building a browser-based live communication platform, developers face four major challenges:
- NAT Traversal: Up to 20–25% of users on mobile networks and corporate Wi-Fi are behind symmetric NATs or strict firewalls where a direct P2P connection is impossible.
- Matchmaking Race Conditions: When thousands of users simultaneously search for a partner, switch rooms, or drop connections, the signaling server must instantly rebuild pairs without leaving dead sessions behind.
- Media Traffic Costs: Relaying audio through TURN servers without protection against scraping and key leaks quickly drains the infrastructure budget.
- Onboarding Friction: Forcing a user to download an app from the App Store or Google Play just for a quick voice call reduces initial conversion rates severalfold.
Key Architectural Decisions in Shomla
| System Component | Shomla Implementation | Business & Product Impact |
| Signaling & Session Coordination | Custom Go server built on Gorilla WebSockets and Fiber / Chi routers | Supports thousands of concurrent full-duplex connections with a minimal RAM footprint and sub-millisecond routing of SDP/ICE candidates |
| Network Connectivity & NAT Traversal | Hybrid STUN/TURN setup combining self-hosted nodes and external APIs with dynamic ephemeral token generation (TURN REST API) | Reliable audio channel establishment across complex mobile networks and full protection of TURN relays from unauthorized traffic abuse |
| Smart Matchmaking Engine | In-memory State Machine in Go with filtering by language, interests, gender, and format (1-on-1) | Instant matching with relevant partners without database locks or orphaned "ghost" rooms upon connection drops |
| Client Architecture (Frontend) | Vanilla JavaScript (Zero-Framework), PWA, and network/background processing offloaded to Web Workers | Zero third-party UI bundle overhead, a smooth interface free of main-thread (UI thread) freezes, and a native-like experience on iOS, Android, and Desktop |
| Data Storage & Moderation | Local persistence via SQLite, behavioral triggers, voice activity detection (VAD), and automated moderation tools | High-speed profile and session reads/writes without external DBMS network latency, maintaining a safe environment inside the chat |