TurboJet

Environment

Kunci .env di akar repo yang dipakai marketing dan docs.

Semua aplikasi memuat env dari akar repositori (.env / .env.example). Salin .env.example ke .env lalu isi nilainya. Turbo mengekspos kunci URL publik lewat globalEnv.

URL publik

KunciDefault lokalDipakai oleh
NEXT_PUBLIC_APP_URLhttp://localhost:3001CORS / origin paket sisa (arahkan ke marketing)
NEXT_PUBLIC_SAAS_URLhttp://localhost:3001Sama dengan app URL setelah dasbor dihapus
NEXT_PUBLIC_MARKETING_URLhttp://localhost:3001Landing, legal, API, checkout
NEXT_PUBLIC_DOCS_URLhttp://localhost:3002Situs docs ini

NODE_ENV di .env adalah development untuk kerja lokal. Build produksi menyetel NODE_ENV=production di skrip build aplikasi sebelum dotenv supaya Next tidak mewarisi development dari .env.

Database

KunciCatatan
DATABASE_URLPrisma (pooled)
DIRECT_URLPrisma migrate / introspect
POSTGRES_PORTPort host Docker Compose

Panduan setup: Database.

Auth

KunciCatatan
BETTER_AUTH_SECRETMinimal 32 karakter
BETTER_AUTH_URLBase URL Better Auth
GOOGLE_CLIENT_IDGoogle OAuth (wajib)
GOOGLE_CLIENT_SECRETGoogle OAuth (wajib)
GITHUB_CLIENT_IDGitHub OAuth (opsional)
GITHUB_CLIENT_SECRETGitHub OAuth (opsional)
APPLE_CLIENT_IDApple Sign In Service ID (opsional)
APPLE_TEAM_IDApple Team ID (opsional)
APPLE_KEY_IDApple Key ID (opsional)
APPLE_PRIVATE_KEYKunci privat .p8 Apple; pakai \n untuk baris baru (opsional)

Pembayaran dan email

KunciCatatan
MAYAR_API_KEYKunci API dasbor Mayar
MAYAR_WEBHOOK_SECRETSecret bersama untuk {MARKETING_URL}/api/webhooks/mayar
MAYAR_PRODUCT_ID_SOLOID produk payment link Mayar untuk Solo
MAYAR_PRODUCT_ID_PROID produk payment link Mayar untuk Pro
MAYAR_PAYMENT_LINK_SOLOURL checkout hosted untuk Solo
MAYAR_PAYMENT_LINK_PROURL checkout hosted untuk Pro
RESEND_KEYEmail transaksional — lihat Resend
RESEND_EMAIL_DOMAINAlamat pengirim (default lokal [email protected]) — lihat Email

Panduan setup: Pembayaran, Checkout storefront, dan Email.

Opsional

KunciCatatan
NEXT_PUBLIC_ENABLE_SENTRYFeature flag Sentry (false menonaktifkan) — lihat Monitoring
NEXT_PUBLIC_SENTRY_DSNDSN Sentry (kosong menonaktifkan) — lihat Sentry
SENTRY_AUTH_TOKENOpsional. Upload source map saat build — lihat Sentry
NEXT_PUBLIC_ENABLE_POSTHOGFeature flag PostHog (false menonaktifkan) — lihat Analytics
NEXT_PUBLIC_POSTHOG_PROJECT_TOKENToken proyek PostHog (kosong menonaktifkan) — lihat PostHog
NEXT_PUBLIC_POSTHOG_HOSTHost API PostHog (default https://us.i.posthog.com; EU: https://eu.i.posthog.com)
AI_GATEWAY_API_KEYKunci Vercel AI Gateway untuk chat @repo/ai — lihat AI
OPENAI_API_KEYDicadangkan untuk penggunaan OpenAI langsung
SMTP_HOST / SMTP_PORTSMTP lokal (Mailpit) — lihat Mailpit; belum dihubungkan ke sendEmail
SMTP_USER / SMTP_PASSAuth SMTP opsional untuk Nodemailer
MAILPIT_URLUI web Mailpit (default http://localhost:8025)
S3_REGIONRegion R2 (biasanya auto)
S3_BUCKETNama bucket R2
S3_ENDPOINThttps://<ACCOUNT_ID>.r2.cloudflarestorage.com
S3_ACCESS_KEY_IDAccess key token API R2
S3_SECRET_ACCESS_KEYSecret key token API R2
S3_PUBLIC_URLOpsional. Base URL publik (https://pub-….r2.dev atau domain kustom) untuk /api/storage/public

Setup Cloudflare R2

Panduan lengkap: Storage dan Cloudflare R2.

  1. Buat bucket R2 privat dan token API dengan Object Read & Write.
  2. Atur CORS bucket agar browser bisa PUT/GET dari origin marketing (NEXT_PUBLIC_MARKETING_URL), misalnya izinkan PUT, GET, HEAD, dan Content-Type.
  3. Biarkan bucket privat; gunakan signed URL berumur pendek dari /api/storage. Set S3_PUBLIC_URL hanya jika Anda sengaja mengekspos objek lewat r2.dev atau domain kustom.

Divalidasi di packages/env (envSchema di server, clientEnvSchema untuk NEXT_PUBLIC_* di browser).

Di halaman ini