Ini adalah pembagian **3 Repositori Terpisah** untuk sistem **NexusGuard**. Dengan pembagian ini, divisi Backend, Frontend/Mobile, dan Embedded/System dapat bekerja secara paralel tanpa saling tunggu (decoupled).

---

### **Repo 1: `nexus-server-core` (Divisi Backend & Network)**
Repositori ini adalah otak sistem yang mengelola database, API, dan perintah firewall (nftables).

*   **Tech Stack:** Go (Gin), PostgreSQL, Redis, `google/nftables`.
*   **Tugas Utama:**
    *   Menyediakan API untuk Dashboard dan Agent.
    *   Mengelola **IPAM** (pembagian IP 10.x.x.x).
    *   **Network Enforcer:** Manipulasi `nftables` (sets & vmaps) untuk isolasi Zero Trust.
    *   **STUN Signaling:** Koordinasi IP publik untuk UDP Hole Punching.
*   **Struktur Folder:**
    ```text
    ├── api/                # REST API Handlers
    ├── internal/
    │   ├── firewall/       # nftables Controller logic
    │   ├── coordinator/    # STUN & P2P Logic
    │   └── models/         # GORM Models (User, Device, Rule)
    ├── docs/
    │   └── API_SPEC.md     # KONTRAK API (Penting untuk migrasi ke PHP)
    └── main.go
    ```

---

### **Repo 2: `nexus-dashboard-ui` (Divisi Frontend & Mobile)**
Repositori ini adalah antarmuka untuk pengguna akhir dan administrator.

*   **Tech Stack:** Vue.js 3, Vite, Pinia, Capacitor.js.
*   **Tugas Utama:**
    *   Manajemen akun user dan registrasi perangkat.
    *   Visualisasi status perangkat (Online/Offline) secara real-time.
    *   Konfigurasi Firewall (Allow Internet, Port Forwarding, Peer Access).
    *   Build ke **Web** dan **Android APK** (via Capacitor).
*   **Struktur Folder:**
    ```text
    ├── src/
    │   ├── api/            # Service untuk konsumsi API Repo 1
    │   ├── views/          # Halaman Management & Monitoring
    │   └── store/          # State management (auth, device list)
    ├── capacitor.config.ts # Config untuk Android/iOS
    ├── android/            # Project Native Android
    └── package.json
    ```

---

### **Repo 3: `nexus-device-agent` (Divisi System/Embedded)**
Repositori ini adalah aplikasi yang akan diinstal di perangkat (CCTV, Server, IoT).

*   **Tech Stack:** Go (Static Binary), `wireguard-go` (library), `crypto/aes`.
*   **Tugas Utama:**
    *   **Stealth Tunneling:** Menjalankan WireGuard di dalam memori tanpa file config.
    *   **Hardware Fingerprinting:** Mengunci perangkat berdasarkan HWID unik.
    *   **Key Rotation:** Melakukan rotasi kunci otomatis sesuai instruksi Repo 1.
    *   **Auto-Healing:** Mencoba reconnect otomatis jika jalur UDP terblokir.
*   **Struktur Folder:**
    ```text
    ├── internal/
    │   ├── tunnel/         # In-memory WireGuard engine
    │   ├── identity/       # HWID & Registration logic
    │   └── crypto/         # AES Decryption untuk config API
    ├── agent.md            # Dokumentasi panduan untuk AI Agent dev
    └── main.go             # Nama binary disamarkan saat build
    ```

---

### **Skema Komunikasi Antar Repo**

1.  **Dashboard (Repo 2) ↔ Server Core (Repo 1):**
    *   Menggunakan REST API dengan **JWT Authentication**.
    *   Dashboard mengirim request "Buka Port", Server Core mengupdate `nftables`.

2.  **Device Agent (Repo 3) ↔ Server Core (Repo 1):**
    *   Menggunakan REST API dengan **AES-Encrypted Payload**.
    *   Agent mengirim HWID, Server Core mengirim balik konfigurasi WireGuard yang sudah di-encrypt.

3.  **Deployment (Gitea):**
    *   Ketiga repo di-host di Gitea.
    *   Repo 3 memiliki CI/CD yang mem-publish binary ke Gitea Releases.
    *   Installer script di perangkat mendownload binary dari Gitea menggunakan `X-Token-Auth`.

---

### **Master Prompt untuk Inisialisasi 3 Repo**

Jika Anda memberikan instruksi ke AI untuk mulai membuat kode, gunakan prompt ini:

```markdown
# Context: NexusGuard SD-WAN System
Please generate the initial boilerplate for 3 separate repositories:

1. REPO_SERVER: Go-Gin project. Focus on PostgreSQL schema for multi-tenant devices and firewall rules. Implement a service that manages 'nftables' sets for user isolation. Include a migration-ready documentation (docs/API_SPEC.md).

2. REPO_UI: Vue.js 3 + Capacitor project. Focus on the API service layer to communicate with REPO_SERVER. Create a dashboard for device monitoring and a firewall rule editor.

3. REPO_AGENT: Go project. Focus on 'wireguard-go' library integration (no config files). Implement HWID collection and an encrypted provisioning client that fetches keys from REPO_SERVER.

# Constraints:
- Use Zero Trust Isolation (Default DROP).
- Support UDP Hole Punching.
- Implement 30-day Key Rotation logic.
- Agent must be stealth (no standard WireGuard file traces).
```

### **Review Akhir Divisi:**
*   **Divisi Backend** bisa fokus pada performa kernel dan database.
*   **Divisi Frontend** bisa fokus pada UX yang memudahkan user mengatur jaringan yang kompleks.
*   **Divisi System** bisa fokus pada kompatibilitas agent di berbagai OS (Linux ARM/x86).

**Apakah pembagian 3 repositori ini sudah sesuai dengan struktur tim Anda?**