Back to projects

Zenith VPN

A VPN client with a Go backend API and Android app featuring stealth mode, auto-failover, and server health probing.

Go SQLite Kotlin Jetpack Compose OpenVPN Docker

Overview

Zenith VPN is a full-stack VPN client comprising a Go REST API backend and an Android application. The backend scrapes VPN Gate's server list on a 30-minute schedule, validates each server through concurrent TCP/UDP/TLS probes with a 50-goroutine semaphore, classifies servers as residential, academic, or datacenter via reverse DNS, and runs a 2-stage VPN/proxy detection pipeline using ip-api.com and vpnapi.io. The Android client uses Jetpack Compose with a 3-tier fallback data source strategy: backend API, direct VPN Gate scrape, and local disk cache. It integrates OpenVPN through a library binding and implements kill-switch-aware auto-failover, automatically cycling through same-country servers when a connection fails or drops unexpectedly. A stealth filter mode hides servers whose IPs are detected as hosting or VPN infrastructure.

Key Challenges

  • Probing hundreds of VPN servers concurrently without overwhelming the network or database, solved with a bounded goroutine semaphore and atomic counters.
  • Detecting VPN/proxy IPs without a single reliable source, solved with a 2-stage pipeline that uses free hosting checks first and a paid API only for non-hosting IPs.
  • Maintaining VPN connectivity on Android with kill switch enabled, requiring awareness of always-on VPN settings and automatic failover on unexpected disconnects.

Outcomes

  • Built a reliable server aggregation pipeline that continuously scrapes, validates, and classifies VPN servers with stale cleanup after 4 hours of inactivity.
  • Achieved stealth connectivity by filtering to residential IPs not flagged as VPN/proxy by external detection services.
  • Delivered a resilient Android client that gracefully handles connection failures through automatic same-country server failover.

Interested in this project?

Let's discuss how we can build something similar for you.

Contact Me