# 📊 Project Analysis: Jasa Printer

Laporan ini dirancang untuk memberikan pemahaman mendalam tentang struktur, fitur, dan alur kerja proyek **Jasa Printer** agar pengembangan di masa depan menjadi lebih efisien.

---

## 🏗️ Arsitektur Proyek
Proyek ini dibangun di atas fondasi **Laravel 12** dengan pendekatan *monolithic* yang modern.

```mermaid
graph TD
    A[Public User] -->|Browsing| B(Landing Page /index)
    A -->|Login/Regis| C(Auth System)
    B -->|Checkout| D(Order Management)
    B -->|Request Service| E(WhatsApp Service Routing)
    D -->|Snap Token| F(Midtrans Payment)
    C -->|Manage| G(User Dashboard)
    H[Admin] -->|Settings| I(Global Shop Config)
    H -->|Products| J(Inventory Management)
    H -->|Orders| K(Order Fulfillment)
```

---

## 🚀 Fitur Utama & Keunggulan

### 1. Sistem Pengaturan Global (`$shop_settings`)
Semua branding dan kontak dikelola melalui database.
- **Implementasi**: Diambil di `AppServiceProvider.php` dan dibagikan ke semua *View* secara global.
- **Cara Pakai**: Cukup panggil `{{ $shop_settings['key_name'] }}` di file Blade mana pun.
- **Key Penting**: `shop_name`, `shop_wa`, `shop_email`, `shop_address`.

### 2. WhatsApp Ticketing Profesional
Alur permintaan jasa service yang langsung terhubung ke teknisi via WhatsApp.
- **Lokasi**: `JasaController::kirimWa`.
- **Keunggulan**: Format pesan otomatis yang menyertakan detail unit, kerusakan, dan link preview media yang diunggah.

### 3. Integrated Checkout & Payment
Mendukung pembelian produk sparepart dengan gerbang pembayaran Midtrans.
- **Alur**: `Cart` ➔ `Checkout` ➔ `Midtrans Snap Token` ➔ `Payment Confirmation`.
- **Model Terkait**: `Order`, `OrderItem`, `Payment`, `StockHistory`.

### 4. Smart Address Management
Pencatatan alamat yang presisi menggunakan database geografis Indonesia (Provinsi ➔ Kota ➔ Kecamatan ➔ Desa).
- **Package**: `azishapidin/indoregion`.
- **Integrasi**: API Endpoint di `AddressController` untuk pengambilan data *dropdown* secara dinamis.

---

## 📂 Struktur Penting (Cheat Sheet)

| Bagian | Path Utama | Deskripsi |
| :--- | :--- | :--- |
| **Logic Utama** | `app/Http/Controllers/` | Controller untuk Order, Jasa, Produk, dll. |
| **Model DB** | `app/Models/` | Definisi tabel dan relasi antar data. |
| **Global Settings** | `app/Providers/AppServiceProvider.php` | Tempat injeksi data `$shop_settings`. |
| **Tampilan Depan** | `resources/views/index.blade.php` | Landing page premium (Service & Shop). |
| **Master Layout** | `resources/views/layout/` | Template `app` (public), `dashboard`, dan `auth`. |
| **Routes** | `routes/web.php` | Semua endpoint aplikasi didefinisikan di sini. |

---

## 🛠️ Panduan Pemeliharaan (Maintenance)

### 1. Menambah Pengaturan Baru
Jika ingin menambah field baru di pengaturan (misal: "Link Instagram"):
1. Tambahkan baris di tabel `settings` (via Seeder atau Admin).
2. Panggil di Blade: `{{ $shop_settings['instagram_link'] }}`.

### 2. Update Stok Produk
Setiap kali perubahan stok terjadi (pembelian atau manual), data akan tercatat otomatis di tabel `stock_histories` via `OrderController`.

### 3. Debugging Pembayaran
Jika Snap Token tidak muncul, pastikan `server_key` di `.env` sudah sesuai dengan akun Midtrans Sandbox/Production.

---

## 🏁 Roadmap Pengembangan (Next Steps)
1. **Peningkatan SEO**: Tambahkan Meta Tags dinamis berdasarkan produk/layanan.
2. **Push Notifications**: Integrasi Firebase untuk status pesanan.
3. **Multi-Technician**: Sistem penugasan service ke teknisi tertentu.

---
> **Catatan Developer**: Proyek ini sudah dalam status "Production Ready". Pastikan untuk selalu menjalankan `npm run build` setelah mengubah file CSS/JS di folder `resources`.
