Ada dua blocker yang membuat project tidak bisa dijalankan langsung setelah git clone. Keduanya tidak terdokumentasi di mana pun sebelumnya.
Prasyarat
| Kebutuhan | Versi |
|---|---|
| PHP | ^8.1 dengan ekstensi mongodb dan zip |
| MongoDB | berjalan di port 27017 |
| MySQL | opsional — hanya untuk modul Aspire |
| Node.js | 18+ |
| Composer | 2 |
| Service eksternal | WhatsApp engine, Backend Go, Engine Bot — tidak wajib untuk menjalankan app, tapi fitur WA/AI/live chat mati tanpa itu |
Bloker 1 — resources/js/global.js (gitignored)
File ini di-gitignore (.gitignore:5) dan tidak punya .example, namun diimpor oleh 105 file frontend. Berisi 5 URL service dan helper format. Tanpa file ini, build gagal.
Minta file asli dari anggota tim — jangan tulis ulang dari nol. Struktur yang diharapkan:
import { format, parseISO } from 'date-fns';
import { id } from 'date-fns/locale';
export let Global = () => {
const env = 'local'; // 'local' | 'development' | 'production'
var base_url = 'http://127.0.0.1:8000/';
var url_engine = 'http://localhost:5002/'; // WhatsApp engine
var url_api = 'http://127.0.0.1:8081/v1/'; // Backend Go
var url_ai_agent = 'http://127.0.0.1:1212/'; // AI agent
var url_aws = 'https://cdn.dazo.id/dev';
if (env == 'production') {
url_engine = 'https://engine.dazo.id/';
url_api = 'https://api.dazo.id/v1/';
base_url = 'https://app.dazo.id/';
url_ai_agent = 'https://engine-bot.dazo.id/';
url_aws = 'https://cdn.dazo.id';
}
// ...helper: formatNumber, formatDate, formatDateIdn, formatDateOnly,
// formatNumberToK, timeAgo, generateSlug, findArrayName,
// getPageCardWidth, setPageCardWidth
return { env, base_url, url_engine, url_api, url_ai_agent, url_aws, /* helpers */ };
};Bloker 2 — .env wajib DB_CONNECTION=mongodb
Default di config/database.php:18 adalah mysql. .env.example juga masih mysql. Padahal 77 dari 79 model memakai MongoDB\Laravel\Eloquent\Model.
Salah set → seluruh aplikasi rusak total. Setelah cp .env.example .env, ubah wajib:
DB_CONNECTION=mongodb # WAJIB — .env.example masih 'mysql'
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=dazo_dev
DB_CRM_HOST=127.0.0.1
DB_CRM_PORT=27017
DB_CRM_DATABASE=crm_dazodev
JWT_SECRET= # isi via: php artisan jwt:secret.env.example tertinggal 87 variabel
.env.example tidak sinkron dengan kode. 87 variabel env() yang dipakai di app/, config/, dan routes/ tidak terdaftar di sana. Kelompok yang paling krusial:
| Grup | Variabel |
|---|---|
| Database CRM & covendor | DB_CRM_*, DB_COVENDOR_* |
| Database MySQL | DB_HOST_SQL, DB_PORT_SQL, DB_DATABASE_SQL, DB_USERNAME_SQL, DB_PASSWORD_SQL |
| JWT | JWT_SECRET, JWT_TTL, JWT_REFRESH_TTL, JWT_ALGO |
| Service eksternal | ENGINE_BOT_URL, ENGINE_BOT_TOKEN, TURNSTILE_SECRET, MAXMIND_LICENSE_KEY |
| Duitku | MERCHANT_CODE, API_KEY_DUITKU, URL_INQUIRY_DUITKU, URL_DUITKU_PAYMENT, URL_TRANSACTION_STATUS |
| AWS | AWS_URL, AWS_ENDPOINT, AWS_CDN_URL |
DOKU sudah ada di .env.example — cukup isi nilainya.
Langkah setup
# 1. Dependensi
composer install
npm install
# 2. Environment
cp .env.example .env
php artisan key:generate
# 3. Set DB_CONNECTION=mongodb + isi JWT_SECRET (lihat bloker 2 di atas)
# 4. Buat resources/js/global.js (lihat bloker 1 di atas)
# 5. Jalankan
php artisan serve # terminal 1
npm run dev # terminal 2Catatan
- Aplikasi bergantung pada 3 service eksternal (
url_engine,url_api,url_ai_agent). Fitur WhatsApp, device, live chat, dan AI agent tidak berfungsi tanpa service tersebut berjalan. Jangan berasumsi fitur rusak hanya karena gagal di lokal. .envmemuatFILESYSTEM_DISKdua kali (nilai terakhir menang:s3). Hapus salah satu untuk menghindari kebingungan.FORGOT_OTP_DEBUG_BYPASS— pastikan tidak aktif di produksi.
Langkah berikutnya
Setup selesai? Lanjut ke Local Development untuk menjalankan project.