Skip to content
TechEmulsion logo
TechEmulsion
Services
SolutionsPortfolioBlogCareersContact Us
BambooVPN - Cross-Platform Consumer VPN
BambooVPN

BambooVPN

One Consumer VPN Account Across Every Device

Built a complete consumer VPN product running the same account across iOS, Android, macOS, Windows, and Chrome, Edge, and Brave extensions. A single Node API treats every app store as a payment provider, while per-user dedicated IPs run on a custom WireGuard peer pool. Users sign up once and their subscription, devices, and dedicated IPs follow them everywhere.

BambooVPN on tablet
BambooVPN on mobile
01

Industry

Consumer Privacy & VPN

02

Client

Per Markus Akerlund & Jim

03

Engagement

End-to-end Product Architecture & Cross-Platform Development

04

Outcome

Five native surfaces sharing one account & subscription

05

Tech Stack

Next.js, Node, Express, MongoDB, Flutter, WireGuard, Stripe, RevenueCat, Superwall, Adjust

BambooVPN — case study gallery background
BambooVPN mobile screen 1
BambooVPN mobile screen 2
BambooVPN mobile screen 3
BambooVPN mobile screen 4
BambooVPN mobile screen 5
BambooVPN mobile screen 1
BambooVPN mobile screen 2
BambooVPN mobile screen 3
BambooVPN mobile screen 4
BambooVPN mobile screen 5

The Business Problem

The clients wanted to launch a full consumer VPN brand across every surface a user might come from. Phone. Laptop. Browser.

They had nothing. No apps. No payments. No infrastructure to actually tunnel traffic. Each platform also brings its own attribution, paywall, and billing requirements that do not translate between iOS, Android, and desktop.

"Just ship one app" would not have worked. They needed a single product that runs the same account on every platform.

01.

No apps across any platform


02.

No payment or billing infrastructure


03.

No infrastructure to tunnel traffic


04.

Per-platform attribution, paywall, and billing rules


05.

Requirements that do not translate across stores


What We Built

A complete VPN product that runs the same account everywhere: Windows, macOS, iOS, Android, and a Chrome, Edge, and Brave extension.

Users sign up once and their subscription, devices, and dedicated IPs follow them across every device. Behind it all, one Node API treats every store as a payment provider, not a separate user system.

01.

Single source of truth for auth and subscription


02.

Per-user dedicated IPs across reconnects and devices


03.

Next.js web dashboard for plans and devices


04.

Unified cross-store revenue attribution


05.

One Node API across every payment provider


The Solution: One Account, Every Surface

Single Source of Truth for Auth & Subscription: iOS uses in-app purchases plus Superwall, Android uses Play Billing plus Superwall, and desktop and the web dashboard go through Stripe. One Node API treats every store as a payment provider, not a separate user system.

Per-User Dedicated IPs: Users get IPs that stay with them across reconnects and devices, giving clean per-user accountability and predictable device limits.

Next.js Dashboard: Users manage their plan, devices, and dedicated IP from a single web interface that mirrors the native apps.

Unified Attribution: RevenueCat for store subscriptions, Superwall for in-app paywalls, and Adjust for install attribution. The client sees revenue regardless of where the user signed up.

Key Technical Decision: WireGuard Peer Pool

We built a WireGuard peer pool instead of the two common alternatives small VPNs reach for. Sharing one wg0.conf across all users is insecure with no per-user attribution. Generating WireGuard keys on the fly per connection is slow, fragile, and breaks roaming.

Instead, we pre-generate N peer slots per server with a bash script and store them in MongoDB. On connect, the API atomically leases one to the device. On disconnect, it gets released. A 10-minute cron sweeps any lease that goes stale past 24 hours.

The result: per-user accountability, clean device limits, and no latency hit from dynamic key issuance. Adding a new region is as cheap as running one script.

The Result

One codebase produces five native surfaces sharing one account and one subscription. Most VPN startups do not get this right until v3.

01.

Five native surfaces from a single codebase


02.

One account and one subscription across every device


03.

Per-user dedicated IPs with clean device limits


04.

New regions added with a single script


What We'd Do Differently

Put OAuth (Google and Apple) in on day one instead of bolting it on later. Switching auth providers after the fact means touching every client. Every single client.

Looking to Build a Cross-Platform Product?