Skip to main content
Environment di project ini memakai layer: satu file shared untuk secret, file override opsional kalau ada perbedaan per lingkungan.

File dan perannya

FileWajib?Fungsi
.envYaSecret shared — dipakai dev lokal dan Cloudflare
.env.development.localTidakOverride khusus laptop
.env.production.localTidakOverride khusus deploy production
apps/api/.envAutoHasil merge — jangan edit manual
apps/web/.env.development.localTidakOverride VITE_API_URL untuk Vite dev
apps/web/.envAutoHasil merge web

Aturan merge

apps/api/.env = .env + .env.development.local   (dev)
apps/api/.env = .env + .env.production.local    (prod / secrets push)
Kalau key ada di file override → nilai override menang.
Kalau tidak ada → fallback ke .env shared.
./thub env merge          # dev
./thub env merge --prod   # production layer

Apa yang masuk .env shared?

Secret dan konfigurasi yang sama di dev dan prod:
  • BETTER_AUTH_SECRET
  • DEEPSEEK_API_KEY
  • AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY (R2)
  • MUX_*
  • SCALEV_*
  • RESEND_API_KEY
  • dll.
Template: .env.example di root repo. Tutorial per layanan (cara dapat API key): Layanan eksternal.

Apa yang masuk override dev?

Hanya yang beda di laptop:
# .env.development.local
NODE_ENV=development
PORT=3739
DATABASE_URL=postgresql://trainerhub_beta:trainerhub_beta_2026@127.0.0.1:5432/trainerhub_beta_clean
BETTER_AUTH_URL=http://localhost:3739/api/auth
FRONTEND_URL=http://localhost:5757
FRONTEND_ORIGINS=http://localhost:5757,http://127.0.0.1:5757
PAYMENT_PROVIDER=manual
DOCX_RENDERER_URL=http://127.0.0.1:8787
Template: .env.development.local.example

Apa yang masuk override prod?

Biasanya hanya yang beda di Cloudflare:
# .env.production.local
DATABASE_URL=postgresql://user:pass@ep-xxx.neon.tech/dbname?sslmode=require
URL production (FRONTEND_URL, BETTER_AUTH_URL, dll.) sudah di apps/api/wrangler.jsonc vars. Template: .env.production.local.example

Contoh: hanya ubah DB lokal

1

Edit override dev

# .env.development.local
DATABASE_URL=postgresql://...@127.0.0.1:5432/my_local_db
2

Merge ulang

./thub env merge
3

Dev

./thub dev
Secret AI/R2/Mux tetap di .env — tidak perlu duplikasi.

Migrasi dari apps/api/.env lama

./thub setup
# atau
./thub env migrate
Script memisahkan:
  • Secret → .env
  • URL/DB lokal → .env.development.local
File .env harus format KEY=value. Baris catatan bebas (tanpa =) diabaikan saat merge.