Cloudflare Pages + R2

DKPG OTA Sandbox

This repo is an isolated Cloudflare-native OTA experiment. It keeps the current updater untouched while giving us a safe place to serve Expo manifests and assets from R2.

What this app does

The frontend is a static Next.js export. The OTA API lives in Cloudflare Pages Functions at /api/manifest and /api/assets.

Storage model

Update bundles live in R2 instead of local disk. The function looks up the latest numeric timestamp folder for a runtime version and optional package name, then builds asset URLs from the active request domain.

updates/{packageName}/{runtimeVersion}/{timestamp}/
  metadata.json
  expoConfig.json
  rollback
  assets/...
  bundles/...

Expected bindings

Configure an R2 bucket binding named OTA_BUCKET and a secret named PRIVATE_KEY_PEM if you want manifest signing.

Next steps

Install dependencies, update wrangler.jsonc, upload a sample update tree to R2, and deploy to Pages.