903 sign-ups for a 3D campus in ten days, July 2026

A to-scale 3D copy of IBA Karachi's main campus in the browser, built by an alumnus. 903 people signed up in its first ten days, July 2026, and 97% walked in. 903 people signed up in the first ten days public, and 97% of them walked into the 3D campus (as of July 28, 2026).

Virtual Campus, my own product, public since July 2026

of the 903 sign-ups walked into the 3D campus, first ten days, July 2026
97%
from the 3D rebuild decision to launch, on a platform begun in March
16 days
tests passing and 0 failing, September 8, 2026
2,288
Virtual Campus, recorded in the live 3D world. Built by an IBA alumnus. Walk the live campus

The problem

After I graduated from IBA Karachi, the people I saw every day for four years turned into names in a quiet group chat. I wanted a place anyone could reach from a link, free and with no install, that felt like the real campus.

It had to run on ordinary laptops and phones, and I was building it alone.

What I built

virtual-campus

  1. Any browser desktop or phone, no install
  2. 3D campus React Three Fiber and Rapier
  3. Realtime gateway WebSockets, zone-sharded rooms
  4. Proximity voice self-hosted LiveKit
  5. Database and logins self-hosted Supabase

Served from my own Oracle server

  1. The real campus, traced from OpenStreetMap footprints, walkable as an avatar in any browser tab with no install.
  2. Realtime presence, proximity voice, messages and watch parties run in the same world, with voice and screenings on servers I run.
  3. One AI writes the code, a second AI audits it, and I decide what ships: 15 of 48 changes were sent back.

How it runs

The campus is served from my own Oracle server, Docker behind Caddy, and one script builds, ships and health-checks every deploy. Nothing deploys until the client build, the full test suite, a 3D render and movement probe and a mobile touch smoke test pass, and GitHub Actions runs the unit tests and browser smokes too. Since September 8, 2026 the database, logins and storage run on a self-hosted Supabase on the same server, with a nightly backup that checks its own contents.

Proof and limits

From the product's own records: the sign-up and session snapshot of July 28, 2026, the decision log, and the review of the database move on September 8, 2026.

What I do not claim

  • No community or retention claim.
  • 903 and 97% cover the first ten days public, as of July 28, 2026, and include current students as well as alumni.
  • The 60 fps target on an ordinary laptop is a budget, not a result: the reference-hardware run is still open, and earlier recorded runs fell short of it.

The same for you

The same build fits any shared place people should reach from a link: a campus, an office, an event. Realtime presence, voice and a backend on your own server are the hard parts, and all three already run here.

Custom work is scoped and priced in writing within 24 hours of a call. Fixed-price packages for a full-stack web app start at $499.

See the packages

Engineering notes

The real campus, traced from OpenStreetMap footprints, walkable as an avatar in any browser tab with no install.

The main campus is generated from OpenStreetMap footprints, 20 buildings, 32 paths and 5 pitches, and published as a versioned world config.

The world runs on React Three Fiber with Rapier physics and a custom character controller, with rigged and animated avatars, an avatar studio and a PixiJS 2D fallback.

On phones it has touch controls, it installs as an app, and it sends web push and email notifications.

Realtime presence, proximity voice, messages and watch parties run in the same world, with voice and screenings on servers I run.

A WebSocket gateway with zone-sharded rooms carries movement and presence. Spatial voice runs on a self-hosted LiveKit server, and screenings stream through a self-hosted MediaMTX server.

Direct messages, a searchable directory, cricket, football, watch parties, screenings and events were live on launch day, and campus cats you can pet and feed followed a week later.

One AI writes the code, a second AI audits it, and I decide what ships: 15 of 48 changes were sent back.

Claude is the lead engineer and writes a change record for every change. Codex reviews each one on its own and returns a ship or don't-ship verdict. I read the verdict and decide which findings are applied; nothing is applied automatically.

48 changes went through that review between July 21 and September 8, 2026. 15 were sent back.

The roles can swap: when Codex writes the change, Claude audits it.

What happens when it fails?

  • A nightly backup checks its own contents and was proven to fail on a bad dump, and a restore drill rebuilt the live data in a scratch database.
  • 16 of 16 live checks passed when the database moved to my own server, and logins saved before the move kept working.
  • After the move, login took 0.44 s, against about 0.70 s on the cloud database.
  • Row-level security is mandatory for user data, and production metrics stay closed behind a token.

Project facts

Client
My own product
Industry
Education (3D social world)
Region
Pakistan, open to anyone online
Timeline
Since March 2026, public since July 18, 2026
Role
Built and run end to end: 3D world, realtime backend and servers

Stack

  • React
  • Vite
  • three.js
  • React Three Fiber
  • Rapier
  • PixiJS
  • Node.js
  • WebSockets
  • Supabase (self-hosted)
  • LiveKit
  • MediaMTX
  • Docker
  • Caddy
  • Playwright
  • GitHub Actions
  • OpenStreetMap

Updated