D
Setup

Setup Environment

Dua blocker onboarding yang tidak terlihat dari git clone — global.js yang gitignored dan .env.example yang tertinggal 87 variabel.

Ada dua blocker yang membuat project tidak bisa dijalankan langsung setelah git clone. Keduanya tidak terdokumentasi di mana pun sebelumnya.

Prasyarat

KebutuhanVersi
PHP^8.1 dengan ekstensi mongodb dan zip
MongoDBberjalan di port 27017
MySQLopsional — hanya untuk modul Aspire
Node.js18+
Composer2
Service eksternalWhatsApp 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:

js
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:

plaintext
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:

GrupVariabel
Database CRM & covendorDB_CRM_*, DB_COVENDOR_*
Database MySQLDB_HOST_SQL, DB_PORT_SQL, DB_DATABASE_SQL, DB_USERNAME_SQL, DB_PASSWORD_SQL
JWTJWT_SECRET, JWT_TTL, JWT_REFRESH_TTL, JWT_ALGO
Service eksternalENGINE_BOT_URL, ENGINE_BOT_TOKEN, TURNSTILE_SECRET, MAXMIND_LICENSE_KEY
DuitkuMERCHANT_CODE, API_KEY_DUITKU, URL_INQUIRY_DUITKU, URL_DUITKU_PAYMENT, URL_TRANSACTION_STATUS
AWSAWS_URL, AWS_ENDPOINT, AWS_CDN_URL

DOKU sudah ada di .env.example — cukup isi nilainya.

Langkah setup

bash
# 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 2

Catatan

  • 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.
  • .env memuat FILESYSTEM_DISK dua 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.