Deploy

Save the source. Point it at your database.

Safari on iPhone cannot take a large zip in one shot. Tap Load, wait until it says Ready, then Save to Files. Chunks assemble on the device.

Do not use the old zip link. It arrives as 53 bytes of JSON. This button builds the real archive in the phone, then opens the share sheet.

Vercel, from your phone

  1. AirDrop or Files the zip to a laptop, or unzip in Files if you have a toolchain later.
  2. Open vercel.com → Add New → Project → import the repo (or the unzipped folder via GitHub).
  3. Framework: Vite. Build command: npm run build. Output: the Vite default.
  4. Settings → Environment Variables → add DATABASE_URL with your Postgres URI. Redeploy.

Your own database

This app speaks standard Postgres. Neon, ShaktiDB (IITM Pravartak — Postgres-compatible), RDS, Cloud SQL, and a box you run yourself all work. The live preview uses an in-memory Postgres until you set the URL.

Connection string shape:

postgresql://USER:PASSWORD@HOST:5432/DATABASE?sslmode=require

ShaktiDB

  1. Open shaktidb.iitmpravartak.net and create an instance.
  2. Copy the Postgres URI they give you (JDBC/ODBC tools work because it is Postgres).
  3. Paste it as DATABASE_URL on Vercel. Save. Redeploy.
  4. On first boot the app creates plane_gate, plane_door, plane_object, plane_event, plane_room.

Neon (also fine)

neon.tech → New project → copy the pooled connection string → same DATABASE_URL step. Use the pooled endpoint for serverless.

Do not put DATABASE_URL in the browser. It is a server secret. Guest Ozeo rooms, doors, and wrapped objects persist only when this URL is set on the host.