
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.


Industry
Consumer Privacy & VPN
Client
Per Markus Akerlund & Jim
Engagement
End-to-end Product Architecture & Cross-Platform Development
Outcome
Five native surfaces sharing one account & subscription
Tech Stack
Next.js, Node, Express, MongoDB, Flutter, WireGuard, Stripe, RevenueCat, Superwall, Adjust











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.