-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwrangler.toml
More file actions
149 lines (138 loc) · 6.6 KB
/
Copy pathwrangler.toml
File metadata and controls
149 lines (138 loc) · 6.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Cloudflare Workers - konfigurasi deploy (pasangan main.ts untuk Node)
#
# Setup awal (sekali):
# 1. npx wrangler login
# 2. Secrets (JANGAN di file ini):
# npx wrangler secret put DATABASE_URL # libsql://…
# npx wrangler secret put DATABASE_AUTH_TOKEN # token Turso
# npx wrangler secret put JWT_PRIVATE_KEY # PEM
# npx wrangler secret put JWT_PUBLIC_KEY # PEM
# npx wrangler secret put RESEND_API_KEY # opsional
# npx wrangler secret put PIXABAY_API_KEY # latar share
# npx wrangler secret put UNSPLASH_ACCESS_KEY # latar share (Access Key, bukan Secret Key)
# npx wrangler secret put PRONUNCIACION_GITHUB_TOKEN
# npx wrangler secret put PUBLIC_IMAGE_GITHUB_TOKEN
# npx wrangler secret put SUPABASE_ANON_KEY
# …
# 3. npx wrangler deploy
#
# Migration TIDAK lewat Workers - tetap `pnpm drizzle-kit migrate` dari CI
# Node dengan TURSO_* URL + auth token.
#
# Dev lokal: `pnpm dev` (Node + file:./local.db). `npx wrangler dev` untuk
# uji paritas runtime; DATABASE_URL dari .env / .dev.vars.
name = "sambasku-api"
main = "src/worker.ts"
compatibility_date = "2025-09-01"
compatibility_flags = ["nodejs_compat"]
[vars]
NODE_ENV = "production"
# Basis link reset password / deep link (host API produksi) - legacy.
APP_URL = "https://api.sambasku.com"
# Domain web publik untuk email + Universal Links (bukan host API).
WEB_APP_URL = "https://sambasku.com"
# Hanya origin browser produksi (mobile tidak kena CORS).
CORS_ALLOWED_ORIGINS = "https://sambasku.com,https://console.sambasku.com"
# Cookie refresh_token berlaku untuk SEMUA tier API (api./deno./render.) supaya
# sesi console tidak putus saat circuit breaker pindah tier. WAJIB identik di
# deployment Deno dan Render.
REFRESH_COOKIE_DOMAIN = ".sambasku.com"
JWT_ACCESS_TOKEN_TTL = "900"
JWT_REFRESH_TOKEN_TTL = "2592000"
MAIL_FROM = "SambasKu <no-reply@sambasku.com>"
KBBI_PROVIDER = "raf555"
RAF555_BASE_URL = "https://kbbi.raf555.dev"
LEMMA_DEFINITION_CACHE_TTL_SECONDS = "3600"
SHARE_BACKGROUNDS_CACHE_TTL_SECONDS = "86400"
GOOGLE_CLIENT_ID = "497143924506-embip2d0er5te84t6cind855tlmsm0i1.apps.googleusercontent.com"
FIREBASE_PROJECT_ID = "sambasku-production"
FIREBASE_CLIENT_EMAIL = "firebase-adminsdk-fbsvc@sambasku-production.iam.gserviceaccount.com"
# Gambar publik (kata/avatar) + audio - TOKEN via wrangler secret.
PUBLIC_IMAGE_PROVIDER = "github"
PUBLIC_IMAGE_GITHUB_URL = "https://github.com/sambasku/images"
PRONUNCIACION_PROVIDER = "github"
PRONUNCIACION_GITHUB_URL = "https://github.com/sambasku/audios"
# Target backup repo (token = PUBLIC_IMAGE / PRONUNCIACION yang sudah ada).
SQLITE_BACKUP_GITHUB_URL = "https://github.com/sambasku/sqlite"
# Gate JWT azp pada write (true = ketat: token tanpa azp -> CLIENT_REQUIRED).
# Issue #31: grace dimatikan. Sesi legacy di-refresh -> 401 SESSION_STALE
# -> client paksa re-login. Cutover lewat redeploy.
OAUTH_REQUIRE_AZP = "true"
GOOGLE_ANALYTICS_SA_EMAIL="sambasku-analytics-reader@router-501815.iam.gserviceaccount.com"
GA4_PROPERTY_ID="556164988"
SEARCH_CONSOLE_SITE_URL="sc-domain:sambasku.com"
# Statistik Play Console (export CSV GCS). Isi PLAY_STATS_GCS_BUCKET via
# `npx wrangler secret put PLAY_STATS_GCS_BUCKET` ATAU langsung di sini.
PLAY_STATS_GCS_PREFIX = ""
SUPABASE_URL="https://qqlksojwaqrydxhqpyqd.supabase.co"
MOBILE_GA4_PROPERTY_ID="555160494"
KAPSO_BASE_URL="https://api.kapso.ai/meta/whatsapp"
KAPSO_PHONE_NUMBER_ID="647015955153740"
[observability]
enabled = true
# Lanjutkan campaign chunk + kirim yang terjadwal.
[triggers]
crons = ["* * * * *"]
# Custom domain API produksi (pola sama staging: host penuh, bukan path).
[[routes]]
pattern = "api.sambasku.com"
custom_domain = true
# ============================================================
# STAGING - deploy: pnpm deploy:staging
# ============================================================
[env.staging]
name = "sambasku-api-staging"
[[env.staging.routes]]
pattern = "sambasku-staging.iamutaki.com"
custom_domain = true
[env.staging.vars]
NODE_ENV = "staging"
APP_URL = "https://sambasku-staging.iamutaki.com"
WEB_APP_URL = "https://sambasku-web-staging.iamutaki.com"
CORS_ALLOWED_ORIGINS = "http://localhost:5173,http://localhost:5174,https://console-sambasku-staging.iamutaki.com,https://sambasku-web-staging.iamutaki.com,https://sambasku-web-staging.ibnuul.workers.dev"
# Staging belum punya tier cadangan - biarkan host-only (kosong = tidak di-set).
REFRESH_COOKIE_DOMAIN = ""
JWT_ACCESS_TOKEN_TTL = "900"
JWT_REFRESH_TOKEN_TTL = "2592000"
MAIL_FROM = "SambasKu <no-reply@sambasku.com>"
KBBI_PROVIDER = "raf555"
RAF555_BASE_URL = "https://kbbi.raf555.dev"
LEMMA_DEFINITION_CACHE_TTL_SECONDS = "3600"
SHARE_BACKGROUNDS_CACHE_TTL_SECONDS = "86400"
GOOGLE_CLIENT_ID = "497143924506-rs7qao9as5jf95r5m1mgp51boc6rdrv7.apps.googleusercontent.com"
FIREBASE_PROJECT_ID = "sambasku-staging"
FIREBASE_CLIENT_EMAIL = "firebase-adminsdk-fbsvc@sambasku-staging.iam.gserviceaccount.com"
# Gambar publik + audio (GitHub Contents API) - TOKEN via wrangler secret.
PUBLIC_IMAGE_PROVIDER = "github"
PUBLIC_IMAGE_GITHUB_URL = "https://github.com/coem/staging-images"
PRONUNCIACION_PROVIDER = "github"
PRONUNCIACION_GITHUB_URL = "https://github.com/coem/staging-audios"
# Target backup repo (token = PUBLIC_IMAGE / PRONUNCIACION yang sudah ada).
SQLITE_BACKUP_GITHUB_URL = "https://github.com/sambasku/sqlite"
# Gate JWT azp pada write (true = ketat: token tanpa azp -> CLIENT_REQUIRED).
# Issue #31: grace dimatikan. Sesi legacy di-refresh -> 401 SESSION_STALE
# -> client paksa re-login. Cutover lewat redeploy.
OAUTH_REQUIRE_AZP = "true"
GOOGLE_ANALYTICS_SA_EMAIL="sambasku-analytics-reader@router-501815.iam.gserviceaccount.com"
GA4_PROPERTY_ID="556164988"
SEARCH_CONSOLE_SITE_URL="sc-domain:sambasku.com"
PLAY_STATS_GCS_PREFIX = ""
SUPABASE_URL="https://wkhlcrxlncflcztptrmg.supabase.co"
MOBILE_GA4_PROPERTY_ID="555160494"
KAPSO_BASE_URL="https://api.kapso.ai/meta/whatsapp"
KAPSO_PHONE_NUMBER_ID="647015955153740"
[env.staging.observability]
enabled = true
[env.staging.triggers]
crons = ["* * * * *"]
# Secrets staging:
# npx wrangler secret put DATABASE_URL --env staging
# npx wrangler secret put DATABASE_AUTH_TOKEN --env staging
# npx wrangler secret put JWT_PRIVATE_KEY --env staging
# npx wrangler secret put JWT_PUBLIC_KEY --env staging
# npx wrangler secret put PUBLIC_IMAGE_GITHUB_TOKEN --env staging
# npx wrangler secret put PRONUNCIACION_GITHUB_TOKEN --env staging
# npx wrangler secret put PIXABAY_API_KEY --env staging
# npx wrangler secret put UNSPLASH_ACCESS_KEY --env staging
# npx wrangler secret put SUPABASE_ANON_KEY --env staging
# … (Resend, ImageKit, OAuth, FCM - sama seperti sebelumnya)