Ada satu sumber konfigurasi utama di engine-bot: config/env.js. File ini memilih environment berdasarkan field env.env dan memegang seluruh URL service, kredensial, dan JWT secret.
Prasyarat
| Kebutuhan | Versi |
|---|---|
| Node.js | mendukung ES modules + global fetch (18+) |
| MongoDB | berjalan, port 27017 |
| Redis | port 6379 (wajib jika fitur follow-up dipakai) |
| OpenAI API key | untuk orchestration, vision, transcription |
| RajaOngkir API key | untuk ongkir domestik |
| Messaging API token | untuk kirim pesan WhatsApp |
Sumber config — config/env.js
File config/env.js memuat dotenv, lalu mendefinisikan object env dengan branched nilai per environment.
Field yang dipakai
| Field | Tipe | Catatan |
|---|---|---|
env | string | Selector environment: local, development, production |
port | string | Local/development: 1313, production: 1212 |
base_url | string | URL dazoapp — contoh http://127.0.0.1:8000/ |
urlEngine | string | URL WhatsApp gateway — http://localhost:5002/api/ |
urlApi | string | URL backend-go — http://127.0.0.1:8081/v1/ |
urlAws | string | CDN base URL untuk gambar |
allowedIP | string | Comma-separated — IP yang bypass auth |
apiKey | string | OpenAI API key (production: dari process.env.OPENAI_API_KEY) |
jwtSecret | string | Wajib sinkron dengan dazoapp |
apiKey_RajaOngkirV2 | string | RajaOngkir API key |
base_url_rajaOngkir | string | https://pro.rajaongkir.com/api |
TOKEN_SEND_MESSAGE | string | Token untuk messaging API |
BASE_URL_SEND_MESSAGE | string | URL messaging API (/v1/send_message_admin) |
Branch environment
env.env | port | base_url | urlApi | urlEngine | apiKey |
|---|---|---|---|---|---|
local | 1313 | http://127.0.0.1:8000/ | http://127.0.0.1:8081/v1/ | http://localhost:5002/api/ | hardcoded |
development | 1313 | https://app.dazo.dev/ | http://127.0.0.1:9091/v1/ | https://engine.dazo.dev/api/ | hardcoded |
production | 1212 | https://app.dazo.id/ | https://api.dazo.dev/v1/ | https://engine.dazo.id/api/ | process.env.OPENAI_API_KEY |
config/db.js — koneksi MongoDB
// config/db.js — ConnectDb()
if (env.env === 'local') {
url = `mongodb://127.0.0.1:27017/dazo`;
} else {
// remote — kredensial hardcoded (redacted)
url = `mongodb://<user>:<pass>@<host>:27017/<dbname>?authSource=admin`;
}
await mongoose.connect(url);| Environment | Database | Host |
|---|---|---|
local | dazo | 127.0.0.1:27017 |
| lainnya | dazodev | remote (kredensial hardcoded, redacted) |
JWT_SECRET — kontrak lintas-service
Langkah setup
# 1. Install dependensi
npm install
# 2. Buat config/env.js (gitignored — minta dari tim)
# Set env.env, port, URL service, apiKey, jwtSecret, dll.
# 3. Pastikan MongoDB lokal berjalan di 127.0.0.1:27017
# 4. (Opsional) Redis untuk follow-up worker
# Berjalan di 127.0.0.1:6379
# 5. Jalankan
npm run devHealth check
curl http://localhost:1313/healthResponse:
{
"status": "ok",
"service": "engine-bot",
"redis": {
"healthy": true,
"message": "Redis is available - follow-up messages enabled",
"timestamp": "..."
},
"timestamp": "..."
}Worker follow-up — process terpisah
node scheduler/worker/worker.jsWorker membutuhkan Redis untuk mengonsumsi queue followUpAi. Tanpa Redis, follow-up dilewati — lihat Follow-up Scheduler.
Catatan
config/env.jstidak punya.example— berbeda dari.env. File ini harus ada persis sebelumnpm run dev.- Kredensial DB hardcoded di
config/db.jsuntuk non-local environment — konfirmasi ke tim apakah sudah dipindahkan ke secret manager. allowedIPkosong = tidak ada IP yang bypass auth. Isi hanya IP internal terpercaya.npm testbelum menjalankan test suite — script selalu gagal. Lihat Tech Debt.
Langkah berikutnya
Setup selesai? Lanjut ke Local Development untuk menjalankan project.