1{ 2 "name": "jevstrudel", 3 "main": "src/index.ts", 4 "compatibility_date": "2026-09-10", 5 "compatibility_flags": ["global_fetch_strictly_public"], 6 "workers_dev": true, 7 "observability": { "enabled": true, "logs": { "enabled": true, "invocation_logs": false }, "traces": { "enabled": false } }, 8 "assets": { "binding": "ASSETS" }, 9 "ratelimits": [ 10 { "name": "JEV_LIMIT", "namespace_id": "1001", "simple": { "limit": 60, "period": 60 } }, 11 { "name": "VOTE_LIMIT", "namespace_id": "1002", "simple": { "limit": 20, "period": 60 } }, 12 { "name": "AUTH_LIMIT", "namespace_id": "1003", "simple": { "limit": 30, "period": 60 } }, 13 { "name": "LISTEN_LIMIT", "namespace_id": "1004", "simple": { "limit": 60, "period": 60 } }, 14 { "name": "RECORD_LIMIT", "namespace_id": "1005", "simple": { "limit": 6, "period": 60 } }, 15 { "name": "PARTY_LIMIT", "namespace_id": "1006", "simple": { "limit": 20, "period": 60 } }, 16 { "name": "CONTENT_LIMIT", "namespace_id": "1007", "simple": { "limit": 10, "period": 60 } }, 17 { "name": "COVER_LIMIT", "namespace_id": "1008", "simple": { "limit": 3, "period": 60 } }, 18 { "name": "BROWSE_LIMIT", "namespace_id": "1009", "simple": { "limit": 240, "period": 60 } }, 19 { "name": "MCP_LIMIT", "namespace_id": "1010", "simple": { "limit": 120, "period": 60 } }, 20 { "name": "LOBBY_LIMIT", "namespace_id": "1011", "simple": { "limit": 20, "period": 60 } }, 21 { "name": "DATA_LIMIT", "namespace_id": "1012", "simple": { "limit": 120, "period": 60 } } 22 ], 23 "d1_databases": [{ "binding": "DB", "database_name": "jevstrudel", "migrations_dir": "migrations" }], 24 "analytics_engine_datasets": [{ "binding": "EVENTS", "dataset": "jevstrudel_events" }], 25 "kv_namespaces": [{ "binding": "CACHE" }, { "binding": "OAUTH_KV" }], 26 "r2_buckets": [{ "binding": "COVERS", "bucket_name": "jevstrudel-covers" }], 27 "durable_objects": { 28 "bindings": [ 29 { "name": "BUDGET", "class_name": "JevBudget" }, 30 { "name": "PARTY", "class_name": "Party" }, 31 { "name": "TAB_HUB", "class_name": "TabHub" }, 32 { "name": "LOBBY", "class_name": "LobbyRoom" }, 33 { "name": "PARTY_DIRECTORY", "class_name": "PartyDirectory" } 34 ] 35 }, 36 "vars": { "JEV_DAILY_PER_USER": 1000 }, 37 "triggers": { "crons": ["* * * * *"] }, 38 "migrations": [ 39 { "tag": "v1", "new_sqlite_classes": ["Hub"] }, 40 { "tag": "v2", "new_sqlite_classes": ["JevBudget"] }, 41 { "tag": "v3", "new_sqlite_classes": ["Party"] }, 42 { "tag": "v4", "new_sqlite_classes": ["TabHub"] }, 43 { "tag": "v5", "new_sqlite_classes": ["LobbyRoom"] }, 44 { "tag": "v6", "new_sqlite_classes": ["PartyDirectory"] } 45 ], 46 "dev": { "port": 4323 }, 47 "env": { 48 "dev": { 49 "ratelimits": [ 50 { "name": "JEV_LIMIT", "namespace_id": "1001", "simple": { "limit": 60, "period": 60 } }, 51 { "name": "VOTE_LIMIT", "namespace_id": "1002", "simple": { "limit": 20, "period": 60 } }, 52 { "name": "AUTH_LIMIT", "namespace_id": "1003", "simple": { "limit": 30, "period": 60 } }, 53 { "name": "LISTEN_LIMIT", "namespace_id": "1004", "simple": { "limit": 60, "period": 60 } }, 54 { "name": "RECORD_LIMIT", "namespace_id": "1005", "simple": { "limit": 6, "period": 60 } }, 55 { "name": "PARTY_LIMIT", "namespace_id": "1006", "simple": { "limit": 20, "period": 60 } }, 56 { "name": "CONTENT_LIMIT", "namespace_id": "1007", "simple": { "limit": 10, "period": 60 } }, 57 { "name": "COVER_LIMIT", "namespace_id": "1008", "simple": { "limit": 3, "period": 60 } }, 58 { "name": "BROWSE_LIMIT", "namespace_id": "1009", "simple": { "limit": 240, "period": 60 } }, 59 { "name": "MCP_LIMIT", "namespace_id": "1010", "simple": { "limit": 120, "period": 60 } }, 60 { "name": "LOBBY_LIMIT", "namespace_id": "1011", "simple": { "limit": 20, "period": 60 } }, 61 { "name": "DATA_LIMIT", "namespace_id": "1012", "simple": { "limit": 120, "period": 60 } } 62 ], 63 "d1_databases": [{ "binding": "DB", "database_name": "jevstrudel", "migrations_dir": "migrations" }], 64 "analytics_engine_datasets": [{ "binding": "EVENTS", "dataset": "jevstrudel_events" }], 65 "kv_namespaces": [{ "binding": "CACHE" }, { "binding": "OAUTH_KV" }], 66 "r2_buckets": [{ "binding": "COVERS", "bucket_name": "jevstrudel-covers" }], 67 "durable_objects": { 68 "bindings": [ 69 { "name": "HUB", "class_name": "Hub" }, 70 { "name": "BUDGET", "class_name": "JevBudget" }, 71 { "name": "PARTY", "class_name": "Party" }, 72 { "name": "TAB_HUB", "class_name": "TabHub" }, 73 { "name": "LOBBY", "class_name": "LobbyRoom" }, 74 { "name": "PARTY_DIRECTORY", "class_name": "PartyDirectory" } 75 ] 76 }, 77 "vars": { "SONGS_URL": "http://localhost:4322/jev/songs.json", "JEV_DAILY_PER_USER": 1000 } 78 } 79 } 80}