(434) 218-3009

VoIP Phone System

RingNow

A full-stack VoIP softphone platform with SIP calling, SMS messaging, contact management, and a native Android app. Built for anyone who needs a permanent US phone number they can carry anywhere in the world.

Project Overview

RingNow is a complete VoIP phone system I built from the ground up. The backend is a FastAPI application that manages user authentication, SIP credential provisioning, contact storage, call logging, and SMS messaging via Telnyx webhooks. The web dashboard gives users a softphone-style interface directly in the browser, powered by JsSIP and WebRTC for real-time voice calls over a standard internet connection.

The Android app is built with Capacitor, wrapping the same WebRTC calling engine in a native shell. It includes a custom Java plugin for speaker/earpiece audio routing using Android 12's setCommunicationDevice API, DTMF tone generation via the Web Audio API, and a foreground service to keep calls alive when the screen is off. The SIP backend runs on Asterisk with PJSIP, connected to a Telnyx SIP trunk for real US phone numbers with full SMS capability.

The most interesting engineering challenges were around call setup speed and audio routing. Initial call setup took 10+ seconds due to ICE/STUN gathering — solved by removing STUN entirely since Asterisk handles media relay. The Android speaker toggle required three iterations: the deprecated setSpeakerphoneOn API doesn't work on Android 12+, the newer setCommunicationDevice API has inverted behavior in WebView contexts, and WebRTC's internal audio routing fights with AudioManager settings. The solution involves repeatedly forcing the earpiece after call confirmation to override WebRTC's defaults.

This project was also an exercise in building a proper Capacitor native plugin from scratch — writing Java that talks to Android's AudioManager, registering it in MainActivity, and bridging it to JavaScript through Capacitor's nativeCallback API, since the global WebView bridge doesn't expose registerPlugin like the npm package does.

Why This Matters: US Numbers for Expats & Veterans Abroad

Millions of Americans live abroad — retirees, digital nomads, military veterans, and expats working overseas. They all share a common problem: US banks, the IRS, the VA, Social Security, and countless other institutions require a US phone number for two-factor authentication, account verification, and identity confirmation. Without one, you're locked out of your own accounts.

Burner numbers from apps like Google Voice, TextNow, or prepaid SIMs don't cut it. Banks flag VoIP numbers from known consumer pools. Google Voice requires an existing US number to activate. Prepaid SIMs expire if you don't top up from abroad. And when your bank sends a verification code to a dead number, you're facing weeks of customer service calls — from a foreign country, during US business hours, on a number they don't recognize.

RingNow solves this with a permanent, carrier-grade US phone number backed by Telnyx's telecom infrastructure — the same networks banks and government agencies trust. Your number receives real SMS messages (not app notifications), supports voice calls through any internet connection worldwide, and stays active indefinitely. No SIM card, no US address, no monthly top-ups to keep the number alive.

Whether you're a veteran in the Philippines receiving VA benefit verification codes, a retiree in Costa Rica logging into your Fidelity account, or a remote worker in Portugal filing taxes through IRS.gov — RingNow gives you a real US number that works everywhere, on any device, through any internet connection. Your bank sees a legitimate US number. The IRS can reach you. Your accounts stay accessible.

Key Features

WebRTC Calling

Make and receive real phone calls from any browser or the Android app. SIP registration via WebSocket, zero plugins required on desktop.

SMS Messaging

Send and receive text messages through your US number. Inbound SMS arrives via Telnyx webhooks in real time — perfect for 2FA codes.

Native Android App

Capacitor-wrapped app with custom speaker/earpiece toggle, DTMF support for IVR menus, foreground service for background calls, and push notifications.

Carrier-Grade Numbers

Real US phone numbers from Telnyx's telecom network, not VoIP pools. Banks and government agencies treat them as legitimate landline or mobile numbers.

DTMF & IVR Support

RFC4733 DTMF tones work with automated phone systems. Navigate bank IVR menus, enter PINs, and interact with any touch-tone system.

Contact & Call History

Built-in contact management and automatic call logging with duration tracking. Your phonebook and history live on the server, accessible from any device.

Technology Stack

FastAPI Python JsSIP WebRTC Asterisk PBX PJSIP Telnyx Capacitor Android SDK Alpine.js Tailwind CSS SQLite Web Audio API

Related Projects

Mr. Botsworth

Mr. Botsworth

Hey! I'm Mr. Botsworth, Greg's search bot. Ask me about his projects, skills, or services.