03. Referensi Environment Variables

Ringkasan

Dokumen ini menjelaskan seluruh konfigurasi variabel lingkungan (environment variables) yang didukung oleh boilerplate ini. Variabel-variabel ini digunakan untuk mengatur koneksi database, rahasia otentikasi, rate limiter, gateway pembayaran, penyimpanan cloud, dan API key asisten AI.


Cara Kerja

Environment variables didefinisikan pada file .env dan divalidasi tipenya secara ketat di src/env.js menggunakan @t3-oss/env-nextjs dan schema Zod. Hal ini menjamin jika ada variabel yang hilang atau tidak valid, aplikasi akan langsung memunculkan eror saat startup sebelum bug sempat menyebar di server produksi.

typescript
// Contoh validasi di src/env.js
export const env = createEnv({
  server: {
    DATABASE_URL: z.string().url(),
    NEXTAUTH_SECRET: z.string().min(1),
    NEXTAUTH_URL: z.string().url().optional(),
  },
  client: {
    // Variabel publik sisi client
  },
  runtimeEnv: {
    DATABASE_URL: process.env.DATABASE_URL,
    NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET,
    NEXTAUTH_URL: process.env.NEXTAUTH_URL,
  },
});

Tabel Referensi Konfigurasi

1. Database & Auth (Wajib)

VariabelWajibKeteranganContoh
DATABASE_URLYaURL koneksi basis data MySQLmysql://user:pass@host:3306/dbname
NEXTAUTH_SECRETYaKunci enkripsi token JWT NextAuthrandom-string-minimal-32-karakter
NEXTAUTH_URLOpsionalURL dasar aplikasi Anda (wajib di produksi)https://domainanda.com

2. Upstash Redis (Opsional - Rate Limiting)

Digunakan untuk koordinasi rate limiting terdistribusi di server produksi. Jika kosong, sistem otomatis menggunakan memori lokal secara gratis.

VariabelWajibKeterangan
UPSTASH_REDIS_REST_URLTidakURL Endpoint REST API Upstash Redis
UPSTASH_REDIS_REST_TOKENTidakToken Bearer REST API Upstash Redis

3. Integrasi Pihak Ketiga (Bisa dikonfigurasi via GUI Admin)

TIP

Seluruh kredensial pihak ketiga (Midtrans, Stripe, Cloudflare R2, Supabase, Cloudinary, Gemini, Groq, OpenAI, Claude, Google OAuth) juga dapat Anda atur secara dinamis dan visual langsung dari halaman panel admin dashboard /settings.

IntegrasiVariabel Lingkungan Utama
MidtransMIDTRANS_SERVER_KEY, MIDTRANS_CLIENT_KEY, MIDTRANS_IS_PRODUCTION
StripeSTRIPE_SECRET_KEY, STRIPE_PUBLISHABLE_KEY, STRIPE_WEBHOOK_SECRET
Cloudflare R2R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET_NAME, R2_PUBLIC_URL
SupabaseSUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, SUPABASE_BUCKET
CloudinaryCLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET
Google Gemini AIGEMINI_API_KEY
Groq LPUGROQ_API_KEY
OpenAI & ClaudeOPENAI_API_KEY, CLAUDE_API_KEY
Google OAuthGOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET

Berkas Terkait

  • .env.example — Template contoh environment variables
  • src/env.js — Validasi skema Zod untuk environment variables