PPVNX  /  How it’s built
Self-hosted · k3s · zero cloud

Seven apps, one home server, zero cloud bills

Every PPVNX app — web and mobile — runs on a Kubernetes cluster in an apartment, fronted by Cloudflare. No AWS, no GCP, no monthly cloud invoice. Here’s how the whole thing holds together, and why it’s built this way.

The premise

Most indie apps quietly rent a slice of someone else’s data center. PPVNX takes the opposite bet: the servers are a physical rack at home, and every app — TrendWatcher, HypercasualGames, Books of Infinite Answers, PBudget, ACMap and the Tile.IO game — is designed, built, shipped and hosted end to end on it. The reward is control and a $0 cloud bill; the cost is that reliability, security and uptime are entirely on you. This page is the honest tour of how that’s made to work.

The stack, top to bottom

Edge

Cloudflare

DNS, TLS and a proxy in front of everything. The home IP is never exposed directly; an origin certificate secures the hop to the cluster, and Cloudflare Access gates the private admin surfaces.

Orchestration

k3s

A lightweight Kubernetes distribution runs the web apps as deployments with horizontal autoscaling and at least two replicas each, so a single node or pod can drop without taking a service down.

Ingress

nginx

An external nginx is the single front door: it terminates TLS from Cloudflare, serves the apex showcase and static content, and routes every *.ppvnx.com host to the right service inside the cluster.

Apps

One core, three targets

Each product is one codebase that ships as a web app and as native iOS and Android builds wrapped from the same core — so a fix lands everywhere at once.

Web and native from one codebase

Every app you see is written once and delivered three ways. The web version runs in the cluster; the mobile versions are the same web core wrapped as native iOS and Android apps and submitted to the App Store and Google Play. That’s why the feature set matches across platforms and why fixes ship simultaneously — there’s no separate mobile codebase drifting out of sync.

The idea engines behind TrendWatcher and HypercasualGames run as scheduled jobs on the cluster: they pull live signals from their sources, score each candidate, and publish a refreshed feed on a cadence — so what you open is current, not a snapshot from launch day.

Staying up without a cloud SRE team

Self-hosting only counts if it stays up. Every public web app runs with horizontal pod autoscaling and a floor of two replicas, so a node reboot or a crashed pod fails over instead of failing. A monitoring stack watches the cluster, and a live control deck tracks the health of every service at a glance. Origin certificates renew themselves; the ingress reloads them live without dropping a connection.

None of this is free of tradeoffs — a home cluster has one apartment’s power and one internet line behind it. The architecture leans on Cloudflare’s edge for caching and protection so the origin does less, and on redundancy inside the cluster so routine failures are boring.

Why build it this way

Partly for the economics — seven live products with no cloud bill is a real number. But mostly because owning the whole stack, from the silicon to the CSS, is the point: nothing is a black box, every layer can be inspected and changed, and the apps aren’t hostage to a platform’s pricing or policies. PPVNX is the proof that a single person can design, build, ship and run a fleet of real apps on hardware they can touch.

Explore the apps →