> ## Documentation Index
> Fetch the complete documentation index at: https://belajarkoding.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Setup lokal

> Ikuti langkah setup lokal KilatKoding untuk Windows, macOS, atau Linux.

## Prasyarat

Repo ini pernah diverifikasi dengan Node.js `24.4.1` dan npm `11.4.2`. Pada praktiknya, versi Node modern yang kompatibel dengan Next.js 16 biasanya cukup, tetapi angka itu adalah snapshot yang dipakai repo ini per 19 Maret 2026.

Kamu juga perlu:

* Git
* editor kode seperti VS Code
* akses ke repo atau file ZIP project

## Siapkan tools per sistem operasi

<AccordionGroup>
  <Accordion title="Windows">
    Gunakan PowerShell atau Terminal bawaan VS Code.

    Cara cepat lewat `winget`:

    ```powershell theme={null}
    winget install Git.Git
    winget install OpenJS.NodeJS.LTS
    ```

    Setelah selesai, tutup lalu buka ulang terminal kamu. Pastikan kedua command ini berhasil:

    ```powershell theme={null}
    git --version
    node --version
    npm --version
    ```
  </Accordion>

  <Accordion title="macOS">
    Kalau kamu pakai Homebrew:

    ```bash theme={null}
    brew install git node
    ```

    Lalu verifikasi:

    ```bash theme={null}
    git --version
    node --version
    npm --version
    ```
  </Accordion>

  <Accordion title="Linux">
    Contoh berikut memakai Ubuntu atau Debian. Kalau distro kamu berbeda, gunakan package manager setara.

    ```bash theme={null}
    sudo apt update
    sudo apt install -y git nodejs npm
    ```

    Lalu verifikasi:

    ```bash theme={null}
    git --version
    node --version
    npm --version
    ```
  </Accordion>
</AccordionGroup>

## Jalankan project pertama kali

<Steps>
  <Step title="Ambil source code">
    Kalau kamu menerima akses repo, clone repo tersebut. Kalau kamu menerima ZIP, ekstrak ke folder kerja kamu.

    ```bash theme={null}
    git clone <url-repo>
    cd kilatkoding-src
    ```
  </Step>

  <Step title="Install dependencies">
    Jalankan:

    ```bash theme={null}
    npm install
    ```
  </Step>

  <Step title="Buat file environment lokal">
    macOS atau Linux:

    ```bash theme={null}
    cp .env.example .env.local
    ```

    Windows PowerShell:

    ```powershell theme={null}
    Copy-Item .env.example .env.local
    ```

    Untuk setup lokal, simpan secret dan override lokal di `.env.local`. Next.js membaca `.env` dan `.env.local`, tetapi `.env.local` adalah tempat yang paling aman untuk perubahan lokal kamu.
  </Step>

  <Step title="Isi `.env.local`">
    Lihat [Environment variables](/kilatkoding/environment-variables) untuk arti setiap variabel. Jangan menebak nama env. Repo ini sudah punya pola yang jelas.
  </Step>

  <Step title="Cek readiness">
    Jalankan:

    ```bash theme={null}
    npm run env:check
    ```

    Command ini membaca `.env` dan `.env.local`, lalu memberi tahu fitur mana yang sudah siap, mana yang fallback, dan mana yang sengaja dimatikan.
  </Step>

  <Step title="Hidupkan aplikasi">
    Jalankan:

    ```bash theme={null}
    npm run dev
    ```

    Lalu buka `http://localhost:3000`.

    Kalau kamu mengubah file env setelah dev server hidup, restart `npm run dev` supaya nilai terbaru ikut terbaca.
  </Step>
</Steps>

## Kalau kamu juga ingin menjalankan E2E test

Install browser Playwright sekali saja:

```bash theme={null}
npx playwright install chromium
```

Lalu jalankan:

```bash theme={null}
npm run e2e
```

## Tanda setup lokal kamu berhasil

| Yang dicek              | Hasil yang diharapkan                                |
| ----------------------- | ---------------------------------------------------- |
| `npm run env:check`     | Tidak ada error fatal untuk fitur yang kamu aktifkan |
| `npm run dev`           | Dev server hidup tanpa crash                         |
| `http://localhost:3000` | Landing page tampil                                  |
| Login atau dashboard    | Berjalan jika auth aktif dan Supabase sudah benar    |

## Error paling umum saat setup lokal

* Node terlalu lama atau terlalu baru untuk dependency tertentu.
* `.env.local` belum dibuat.
* Supabase env belum diisi tetapi auth tetap dibiarkan aktif.
* Payment atau AI diaktifkan tanpa env yang dibutuhkan.
* Nilai env sudah diubah, tetapi dev server belum direstart.

Kalau salah satu hal di atas terjadi, buka [Troubleshooting](/kilatkoding/troubleshooting).
