Cloudflare Workers & Pages
Edge üzerinde çalışma, wrangler.toml konfigürasyonu ve Worker mimarisi.
Coursio, Cloudflare Workers üzerinde çalışan bir edge uygulamasıdır. Bu sayfa, uygulamanın Edge üzerinde nasıl çalıştığını ve wrangler.toml konfigürasyonunu açıklar.
Edge Computing ve Workers
Section titled “Edge Computing ve Workers”Cloudflare Workers, V8 izolasyonu ile çalışan, 0ms cold-start performansı sunan bir edge runtime’dır. Coursio’nun tüm backend kodu (API route’ları, loader/action, GraphQL) bu runtime içinde çalışır.
Avantajlar
Section titled “Avantajlar”- Global dağıtım: İstekler kullanıcıya en yakın edge lokasyonundan yanıtlanır.
- Cold-start yok: Worker’lar her zaman hazır; ilk istekte bile gecikme yok.
- Otomatik ölçekleme: Trafiğe göre otomatik olarak ölçeklenir.
- Düşük maliyet: Kullanım bazlı fiyatlandırma.
Worker Entry Point: workers/app.ts
Section titled “Worker Entry Point: workers/app.ts”Ana Worker dosyası workers/app.ts içinde:
export default { async fetch(request: Request, env: any, ctx: ExecutionContext): Promise<Response> { // WebSocket chat endpoint'i if (url.pathname === "/api/chat") { // ChatRoom Durable Object'e yönlendirme }
// React Router request handler return await requestHandler({ request, env, ... }); },};React Router Cloudflare adapter’ı (@react-router/cloudflare) ile tüm route’lar (app/routes/*.tsx) Worker içinde çalışır.
wrangler.toml Konfigürasyonu
Section titled “wrangler.toml Konfigürasyonu”Temel Ayarlar
Section titled “Temel Ayarlar”name = "coursio"compatibility_date = "2026-01-03"compatibility_flags = ["nodejs_compat"]
main = "./workers/app.ts"- name: Cloudflare’daki Worker adı.
- compatibility_date: API uyumluluk tarihi.
- nodejs_compat: Node.js API’lerini kullanmak için (ör.
process.env).
Assets (Statik Dosyalar)
Section titled “Assets (Statik Dosyalar)”[assets]directory = "./build/client"React Router build çıktısı (build/client) statik dosyalar olarak serve edilir.
Hyperdrive (Connection Pooling)
Section titled “Hyperdrive (Connection Pooling)”[[hyperdrive]]binding = "HYPERDRIVE"id = "59c4a12da58e45d3993436576a163c85"localConnectionString = "postgresql://..."Hyperdrive, PostgreSQL bağlantılarını optimize eder. Detay için Hyperdrive Entegrasyonu sayfasına bakın.
Environment Variables
Section titled “Environment Variables”Public vars ([vars]):
BASE_URL,BETTER_AUTH_URLSTRIPE_PUBLIC_KEY,STRIPE_PRICE_ID_*BUNNY_LIBRARY_ID,BUNNY_STORAGE_ZONEEMAIL_FROM,GOOGLE_CLIENT_ID
Secrets (CLI ile):
wrangler secret put DATABASE_URLwrangler secret put STRIPE_SECRET_KEYwrangler secret put STRIPE_WEBHOOK_SECRETDurable Objects (Chat)
Section titled “Durable Objects (Chat)”[[durable_objects.bindings]]name = "CHAT_ROOM"class_name = "ChatRoom"Gerçek zamanlı sohbet için Durable Objects kullanılır. workers/chat.ts içinde ChatRoom sınıfı tanımlıdır.
Development
Section titled “Development”[dev]port = 8787local_protocol = "http"Yerel geliştirme: npm run start veya npx wrangler dev → http://localhost:8787.
Deployment
Section titled “Deployment”npm run buildnpm run deployBuild çıktısı (build/client, build/server) Cloudflare Workers’a deploy edilir. Production’da wrangler.toml içindeki name ve config kullanılır.
İlgili Dosyalar
Section titled “İlgili Dosyalar”- workers/ — Cloudflare Worker giriş noktası.
- wrangler.toml — Worker adı, vars, secrets, Hyperdrive binding.
- app/root.tsx — Uygulama kök bileşeni; Cloudflare adapter ile context.
- vite.config.ts — React Router ve build yapılandırması.