{ "$schema": "node_modules/wrangler/config-schema.json", "name": "api", "main": "src/api.app.ts", "compatibility_date": "2026-06-16", "compatibility_flags": ["nodejs_compat"], // Shared `recflare` DB. Created manually with `wrangler d1 create recflare`; its // id lives in RECFLARE_D1 (see .env) and the "local" placeholder below is // spliced out at deploy time. The `api` worker owns the `relationships` table // (schema/migration here); its own migrations_table keeps history separate from // the other workers' migrations on the shared database. "d1_databases": [ { "binding": "DB", "database_name": "recflare", "database_id": "local", "migrations_dir": "migrations", "migrations_table": "d1_migrations_api" } ], // Image bucket shared with the `img` worker (which serves objects back by key). // Saved-image uploads are written here. The `recflare-cdn` bucket (owned by the // `cdn` worker, written by `storage`) is bound read-only alongside it, to hash an // invention's uploaded data blob for its `BlobHash`. "r2_buckets": [ { "binding": "IMAGES", "bucket_name": "recflare-img" }, { "binding": "CDN_ASSETS", "bucket_name": "recflare-cdn" } ], // Per-player settings KV, owned by the `playersettings` worker. Read AND written here, // for the photo-tagging preference (`/api/players/v1/playerPhotoTaggingSetting`), which // is one key in that same bag rather than storage of its own. The "local" id placeholder // is replaced with the real id from RECFLARE_KV at deploy time. "kv_namespaces": [ { "binding": "RECFLARE_PLAYER_SETTINGS", "id": "local" } ], // Cross-worker binding to the SignalR notifications hub DO (owned/migrated by // the `notify` worker). We only invoke its RPC methods; no migration here. "durable_objects": { "bindings": [ { "name": "RECFLARE_NOTIFICATIONS_HUB", "class_name": "NotificationsHub", "script_name": "notify" } ] }, "logpush": false, // Shared Secrets Store holding the HS256 JWT signing key. Every worker binds the // same store as JWT_SECRET so tokens signed by `auth` verify here. The "local" // store_id placeholder is replaced with RECFLARE_SECRETS_STORE at deploy time. "secrets_store_secrets": [ { "binding": "JWT_SECRET", "store_id": "local", "secret_name": "JWT_SECRET" } ], "upload_source_maps": true, "observability": { "logs": { "enabled": true, "head_sampling_rate": 1 // 100% } }, "vars": { "ENVIRONMENT": "development", // overridden during deployment "SENTRY_RELEASE": "unknown", // overridden during deployment "DOMAIN": "rec.example.com" // base domain; overridden during deployment } }