# DOKUMEN PERANCANGAN SISTEM & PRODUCT REQUIREMENTS DOCUMENT (PRD)
## WasteBank - Platform Bank Sampah Digital & Penjemputan Sampah Daur Ulang Berbasis Web

**Mata Pelajaran:** Pemrograman Web  
**Jenjang:** SMK TJKT / PPLG Kelas XII Semester 5  
**Kelompok:** Kelompok 2 PW  
**Anggota Kelompok:**
1. 21. Kamarul Arifin Muzaffar
2. 27. Muhammad Fauzan Habibul Adha
3. 30. Mutiara Endah Gusti Ayu
4. 32. Niken Ayu Larasati
5. 39. Zahra Syaila Hidayat

**Tanggal Pelaksanaan:** 18 Agustus 2026  
**Status Dokumen:** Approved Planning Draft  
**Acuan Data:** Hasil Survei WasteBank (74 Responden - 81,6% Pelajar & 11,8% Mahasiswa)

---

# TAHAP 1: Product Requirement Document (PRD) Sederhana

### 1.1 Nama Produk / Aplikasi
**WasteBank ** — Platform Web Bank Sampah Digital Interaktif untuk Edukasi, Pemetaan Lokasi, Penjemputan Sampah, dan Transaksi Tabungan Sampah Transparan.

### 1.2 Product Overview (Ringkasan Produk)
Berdasarkan hasil survei 74 responden di kalangan pelajar dan generasi muda, ditemukan bahwa **92,1% responden bersedia memilah sampah** jika proses penyetoran dipermudah. Namun, terdapat hambatan besar:
- 44,7% tidak tahu lokasi Bank Sampah terdekat.
- 43,4% tidak memiliki akses layanan penjemputan (*pick-up*).
- 36,8% bingung mengenai jenis-jenis sampah daur ulang yang bernilai ekonomi.
- Proses konvensional dianggap rumit, menyita waktu, dan minim transparansi harga serta pencatatan saldo.

**WasteBank** hadir sebagai solusi berbasis web yang menghubungkan masyarakat dengan unit Bank Sampah terdekat secara *real-time*. Platform ini beroperasi dengan dua fungsi utama:
1. **Layanan Bank Sampah (Daur Ulang)**: Tempat masyarakat menjual sampah bernilai ekonomi untuk mendapatkan saldo digital/poin.
2. **Layanan Pengangkutan Berlangganan**: Solusi pengangkutan sampah rutin (residu dan daur ulang) ke rumah warga dengan sistem langganan bulanan. Nasabah bebas repot, petugas mengangkut secara rutin, dan sampah daur ulang otomatis dikonversi menjadi saldo.

### 1.3 Objectives (Tujuan Utama)
1. **Memudahkan Aksesibilitas**: Menyediakan peta interaktif sebaran lokasi Bank Sampah dan sistem layanan angkut sampah rutin langsung dari rumah pengguna.
2. **Transparansi Nilai Ekonomi & Transaksi**: Menyajikan katalog harga sampah terkini secara terbuka dan pencatatan riwayat transaksi serta saldo tabungan sampah yang aman dan akuntabel.
3. **Meningkatkan Partisipasi Daur Ulang**: Mengonversi 92,1% minat pemilahan sampah generasi muda menjadi aksi nyata melalui insentif poin digital, kemudahan layanan berlangganan, dan modul panduan pemilahan sampah.

### 1.4 User Persona (Target Pengguna)

| Persona | Profil & Karakteristik | Kebutuhan Utama | Pain Points (Kendala) |
| :--- | :--- | :--- | :--- |
| **Nasabah (Pelajar & Warga Umum)**<br>*(Mayoritas 81,6% survei)* | Usia 14–22 tahun (gen-z) hingga ibu rumah tangga pengelola limbah domestik harian. | Ingin layanan angkut sampah rutin yang praktis, sekaligus bisa dapat saldo otomatis dari sampah daur ulangnya. | Malas mengisi form *request* berulang kali, tidak mau repot mengantar sendiri ke bank sampah, pengepul keliling tidak tentu jadwalnya. |
| **Mitra Driver / Petugas Angkut** | Petugas armada angkut rute harian berlangganan & penjemputan daur ulang. | Daftar rute pelanggan yang terarah (siapa saja yang berlangganan), jadwal pasti tiap area, alat timbang portabel. | Alamat pelanggan baru sering tidak akurat, estimasi muatan tidak sesuai kapasitas motor/gerobak. |
| **Pengelola Unit Bank Sampah (Admin)** | Pengurus bank sampah tingkat RW/Kelurahan/Komunitas. | Manajemen pendaftaran langganan rute, pencatatan saldo otomatis, validasi harga harian. | Kesulitan merekap siapa yang sudah bayar iuran bulanan dan siapa yang menunggak, pelaporan saldo lambat. |

---

# TAHAP 2: Kebutuhan Sistem (Requirements)

### 2.1 Functional Requirements (Kebutuhan Fungsional - Minimal 5 Fitur)

| ID | Modul / Fitur | Deskripsi Kebutuhan Fungsional | Aktor Terkait | Prioritas |
| :--- | :--- | :--- | :--- | :---: |
| **FR-01** | **Peta Interaktif Bank Sampah** | Sistem menampilkan peta digital (Leaflet.js/Mapbox) yang memuat titik-titik Bank Sampah terverifikasi lengkap dengan jam operasional, jenis sampah yang diterima, dan kontak pengelola. | Nasabah, Tamu | **Must Have** |
| **FR-02** | **Katalog Harga Sampah Real-Time** | Sistem menyajikan daftar kategori sampah berdasarkan tiga golongan utama: **Organik** (kompos, sisa makanan), **Anorganik** (plastik, kertas, logam), dan **B3 & Khusus** (jelantah, e-waste), beserta harga per kilogram yang diperbarui secara berkala oleh admin. | Nasabah, Publik | **Must Have** |
| **FR-03** | **Jadwal & Order Penjemputan (*Pick-up Request*)** | Sistem menampilkan jadwal ketersediaan penjemputan. Nasabah tidak perlu mengisi form tanggal manual, cukup memilih jadwal yang tersedia, memasukkan alamat (titik peta), dan estimasi sampah. | Nasabah, Petugas | **Must Have** |
| **FR-04** | **Pencatatan Transaksi & Saldo Digital** | Sistem mencatat otomatis setiap setoran sampah yang berhasil ditimbang, menghitung nilai rupiah sesuai berat dan harga kategori, lalu menambahkan saldo ke buku tabungan digital nasabah. | Nasabah, Admin | **Must Have** |
| **FR-05** | **Penarikan / Konversi Saldo & Poin** | Nasabah dapat mengajukan pencairan saldo tabungan sampah ke rekening bank/e-wallet atau menukar poin loyalitas dengan voucher/kupon daur ulang. | Nasabah, Admin | **Must Have** |
| **FR-06** | **Modul Edukasi Pemilahan Sampah** | Sistem menyediakan artikel dan infografis interaktif mengenai cara memilah sampah organik, anorganik, dan B3 yang baik sesuai jenisnya. | Semua Pengguna | **Should Have** |
| **FR-07** | **Panel Verifikasi & Manajemen Admin** | Pengelola bank sampah dapat memvalidasi permintaan penjemputan, mengubah status penjemputan (*Pending → Assigned → On The Way → Completed / Cancelled*), dan input berat timbangan aktual. | Admin, Petugas | **Must Have** |
| **FR-08** | **Registrasi & Autentikasi Akun** | Calon nasabah dapat mendaftar akun baru dengan mengisi nama lengkap, email, nomor WhatsApp, alamat domisili, dan kata sandi. Sistem memvalidasi data dan mengirim konfirmasi pendaftaran. | Tamu | **Must Have** |
| **FR-09** | **Layanan Pengangkutan Berlangganan** | Sistem memungkinkan nasabah berlangganan paket angkut sampah rutin bulanan. Sistem mengikat nasabah ke rute dan jadwal wilayah otomatis tanpa perlu request on-demand. | Nasabah, Admin | **Must Have** |

### 2.2 Non-Functional Requirements (Kebutuhan Non-Fungsional - Minimal 3 Kriteria)

| Kategori | Parameter | Spesifikasi Teknis |
| :--- | :--- | :--- |
| **Performa & Kecepatan** | Page Load Time | Waktu muat halaman awal web dan rendering layer peta maksimal **< 2,5 detik** pada koneksi 4G standar. |
| **Keamanan Data** | Enkripsi & Proteksi Transaksi | Password pengguna di-hash menggunakan algoritma **Bcrypt / Argon2**; otorisasi API berbasis token aman (**JWT / Laravel Sanctum**); validasi input ketat (Sanitize & Rate Limiting) untuk mencegah SQL Injection dan CSRF (Merujuk temuan survei: 82,9% responden menuntut keamanan data tinggi). |
| **Responsivitas & Aksesibilitas** | Mobile-First Responsive | Tampilan web 100% responsif dan adaptif diakses dari berbagai ukuran layar (layar smartphone 360px hingga monitor desktop 1920px) dengan sistem navigasi satu tangan (*touch-friendly*). |
| **Ketersediaan (Availability)** | System Uptime | Sistem dapat beroperasi 24/7 dengan target ketersediaan layanan (*uptime*) minimal **99.5%**. |

---

# TAHAP 3: Merancang User Flow & Sitemap

### 3.1 User Flow: Alur Pemesanan Penjemputan Sampah (*Pickup Request Flow*)

Berikut adalah alur logika langkah demi langkah yang dilalui nasabah saat mengajukan penjemputan sampah daur ulang hingga saldo tabungan bertambah:

```mermaid
flowchart TD
    Start([Mulai: Nasabah Login ke Web]) --> CheckAuth{Apakah Sudah Login?}
    CheckAuth -- Tidak --> PageLogin[Arahkan ke Halaman Login/Register]
    PageLogin --> Start
    CheckAuth -- Ya --> MenuPickup[Pilih Menu 'Jadwal & Request Penjemputan']
    
    MenuPickup --> InputForm[Pilih Jadwal Tersedia, Isi Alamat / Pin Peta, & Pilih Kategori Sampah]
    InputForm --> SubmitOrder[Klik 'Kirim Permintaan Jemput']
    
    SubmitOrder --> ServerValidate{Validasi Lengkap?}
    ServerValidate -- Tidak --> ShowError[Tampilkan Error Input]
    ShowError --> InputForm
    ServerValidate -- Ya --> SaveOrder[Simpan Order: Status PENDING]
    
    SaveOrder --> AdminCheck{Admin Verifikasi & Kuota?}
    AdminCheck -- Ditolak --> RejectOrder[Status: CANCELLED + Notifikasi Maaf]
    RejectOrder --> Finish([Selesai])
    AdminCheck -- Diterima --> AssignDriver[Status: ASSIGNED + Notifikasi Jadwal Fixed]
    
    AssignDriver --> DriverOTW[Petugas Berangkat: Status ON_THE_WAY]
    DriverOTW --> DriverPick[Petugas Tiba di Lokasi & Timbang Sampah]
    
    DriverPick --> UpdateWeight[Petugas Input Berat Aktual]
    UpdateWeight --> AutoCalculate[Sistem Hitung: Berat x Harga]
    AutoCalculate --> AddBalance[Saldo / Poin Masuk ke Akun Nasabah]
    AddBalance --> PushNotif[Kirim Notifikasi 'Transaksi Sukses']
    PushNotif --> CompleteOrder([Selesai: Status COMPLETED])
```

---

### 3.2 Sitemap (Struktur Hirarki Halaman Website)

```text
wastebank (Homepage)
│
├── 1.0 Beranda (Hero Banner, Statistik Daur Ulang, Nilai Sampah Hari Ini, CTA)
│
├── 2.0 Peta Lokasi Bank Sampah (/peta)
│   ├── 2.1 Filter Unit Bank Sampah (Terdekat, Rating, Buka Hari Ini)
│   └── 2.2 Detail Modal Unit Bank Sampah (Alamat, Jam Buka, Kontak, Sampah yang Diterima)
│
├── 3.0 Katalog Harga Sampah (/harga)
│   ├── 3.1 Kategori Organik (Kompos, Sisa Makanan, Daun Kering)
│   ├── 3.2 Kategori Anorganik (Plastik PET, Kertas, Kardus, Logam)
│   └── 3.3 Kategori B3 & Khusus (Minyak Jelantah, Elektronik / E-Waste)
│
├── 4.0 Layanan Penjemputan & Angkut (/jemput-sampah) [Protected / Butuh Login]
│   ├── 4.1 Jadwal Ketersediaan & Form Request (Bank Sampah On-Demand)
│   ├── 4.2 Layanan Angkut Berlangganan Rutin (Daftar & Status Paket)
│   ├── 4.3 Pelacak Status Penjemputan (/jemput-sampah/tracking/:order_id)
│   └── 4.4 Riwayat Penjemputan (/jemput-sampah/history)
│
├── 5.0 Edukasi & Blog (/edukasi)
│   ├── 5.1 Panduan Pemilahan Sampah 3R
│   └── 5.2 Artikel Dampak Lingkungan & Daur Ulang Kreatif
│
├── 6.0 Akun Nasabah (/dashboard) [Protected]
│   ├── 6.1 Ringkasan Saldo & Total Poin Rewards
│   ├── 6.2 Mutasi Buku Tabungan Digital (/dashboard/transaksi)
│   ├── 6.3 Tarik Saldo / Tukar Poin (/dashboard/withdraw)
│   └── 6.4 Pengaturan Profil Nasabah (/dashboard/profile)
│
├── 7.0 Autentikasi
│   ├── 7.1 Masuk / Login (/login)
│   └── 7.2 Daftar Akun Baru (/register)
│
└── 8.0 Portal Admin & Pengelola (/admin) [Admin Only]
    ├── 8.1 Dashboard Monitoring Setoran & Penjemputan
    ├── 8.2 Manajemen Order Penjemputan (Disposisi Petugas & Input Timbangan)
    ├── 8.3 Manajemen Master Harga Sampah
    └── 8.4 Verifikasi Penarikan Saldo Nasabah
```

---

# TAHAP 4: Arsitektur Sistem & Perancangan Database

### 4.1 Alasan Pemilihan Arsitektur *Client-Server / Decoupled* (Modern)
Untuk aplikasi **WasteBank**, tim sepakat menggunakan pendekatan **Arsitektur Client-Server Decoupled** (Frontend terpisah dari Backend API) karena beberapa alasan strategis:

1. **Fleksibilitas Antarmuka (Multi-Platform Readiness)**: Backend berbasis REST API tunggal dapat melayani antarmuka web saat ini (Vue.js/React/Vanilla JS) dan di masa mendatang dapat langsung dikonsumsi oleh aplikasi mobile (Android/iOS) tanpa perlu merombak logika backend.
2. **Kinerja & Skalabilitas Lebih Optimal**: Frontend dapat di-deploy pada CDN / static host berkecepatan tinggi (seperti Vercel/Netlify), sementara backend fokus menangani logika bisnis berat, query geospasial lokasi, dan transaksi database.
3. **Pengembangan Tim Paralel**: Tim frontend dapat fokus merancang antarmuka UI/UX dan interaksi peta, sementara tim backend dapat mengembangkan skema database, validasi autentikasi JWT, dan endpoint API secara mandiri tanpa saling mengunci (*blocking*).
4. **Keamanan Data Lebih Terisolasi**: Akses ke database PostgreSQL/MySQL tidak diekspos langsung ke antarmuka publik, melainkan terlindungi di balik lapisan otorisasi token (*Bearer Token/Sanctum*), rate limiting, dan validasi middleware.

---

### 4.2 Rancangan Skema Tabel Database

Berikut adalah rancangan 4 skema tabel relasional utama yang digunakan pada sistem WasteBank:

#### Tabel 1: `users` (Menyimpan Data Nasabah, Petugas, dan Admin)
| Nama Kolom | Tipe Data | Keterangan |
| :--- | :--- | :--- |
| `id` | BIGINT | Primary Key, Auto Increment |
| `nama_lengkap` | VARCHAR(100) | Nama lengkap pengguna (Not Null) |
| `email` | VARCHAR(100) | Alamat email aktif, Unique (Not Null) |
| `nomor_hp` | VARCHAR(20) | Nomor WhatsApp untuk koordinasi penjemputan |
| `password` | VARCHAR(255) | Hash password menggunakan Bcrypt |
| `alamat_domisili`| TEXT | Alamat tempat tinggal nasabah |
| `role` | ENUM('nasabah', 'petugas', 'admin') | Peran hak akses akun (Default: 'nasabah') |
| `saldo_tabungan` | DECIMAL(12, 2) | Total saldo tabungan sampah (Default: 0.00) |
| `total_poin` | INT | Poin reward loyalitas (Default: 0) |
| `created_at` | TIMESTAMP | Waktu pendaftaran akun |
| `updated_at` | TIMESTAMP | Waktu pembaruan data terakhir |

---

#### Tabel 2: `waste_categories` (Master Data Kategori & Harga Sampah)
| Nama Kolom | Tipe Data | Keterangan |
| :--- | :--- | :--- |
| `id` | INT | Primary Key, Auto Increment |
| `nama_kategori`| VARCHAR(100) | Contoh: Botol Plastik PET, Kardus Bekas, Baterai, Sisa Makanan |
| `golongan` | ENUM('organik', 'anorganik', 'b3') | Kelompok besar jenis sampah |
| `harga_per_kg` | DECIMAL(10, 2) | Harga beli per kilogram (Not Null) |
| `poin_per_kg` | INT | Nilai reward poin per kilogram (Default: 10) |
| `deskripsi` | TEXT | Keterangan kriteria sampah (kering, bersih, dll.) |
| `gambar_url` | VARCHAR(255) | URL ilustrasi/foto jenis sampah |
| `is_active` | BOOLEAN | Status apakah menerima jenis sampah ini (Default: true) |
| `updated_at` | TIMESTAMP | Waktu update harga terakhir |

---

#### Tabel 3: `pickup_orders` (Pemesanan Penjemputan Sampah Daur Ulang)
| Nama Kolom | Tipe Data | Keterangan |
| :--- | :--- | :--- |
| `id` | BIGINT | Primary Key, Auto Increment |
| `order_code` | VARCHAR(30) | Kode unik transaksi (Contoh: `WB-20260818-001`), Unique |
| `user_id` | BIGINT | Foreign Key -> `users.id` (Nasabah pemesan) |
| `petugas_id` | BIGINT | Foreign Key -> `users.id` (Nullable, Petugas yang ditugaskan) |
| `alamat_jemput`| TEXT | Alamat lengkap lokasi penjemputan |
| `latitude` | DECIMAL(10, 8) | Koordinat peta penjemputan |
| `longitude` | DECIMAL(11, 8) | Koordinat peta penjemputan |
| `jadwal_jemput`| DATETIME | Tanggal dan jam yang dipilih nasabah dari jadwal tersedia |
| `status` | ENUM('pending', 'assigned', 'on_the_way', 'completed', 'cancelled') | Status progres penjemputan (Default: 'pending') |
| `catatan_user` | TEXT | Catatan khusus nasabah (misal: "di depan gerbang hitam") |
| `created_at` | TIMESTAMP | Waktu order dibuat |
| `updated_at` | TIMESTAMP | Waktu status order diperbarui |

---

#### Tabel 4: `transaction_details` (Rincian Sampah & Nilai Saldo per Transaksi)
| Nama Kolom | Tipe Data | Keterangan |
| :--- | :--- | :--- |
| `id` | BIGINT | Primary Key, Auto Increment |
| `order_id` | BIGINT | Foreign Key -> `pickup_orders.id` |
| `category_id` | INT | Foreign Key -> `waste_categories.id` |
| `berat_kg` | DECIMAL(8, 2) | Berat timbangan aktual terverifikasi (Not Null) |
| `harga_satuan` | DECIMAL(10, 2) | Snapshot harga per kg saat transaksi ditimbang |
| `subtotal` | DECIMAL(12, 2) | Total nilai (berat_kg * harga_satuan) |
| `poin_didapat` | INT | Total poin dari item ini |
| `created_at` | TIMESTAMP | Waktu pencatatan timbangan |

---

#### Tabel 5: `subscriptions` (Layanan Angkut Rutin Nasabah)
| Nama Kolom | Tipe Data | Keterangan |
| :--- | :--- | :--- |
| `id` | BIGINT | Primary Key, Auto Increment |
| `user_id` | BIGINT | Foreign Key -> `users.id` (Nasabah) |
| `route_name` | VARCHAR(100) | Rute wilayah (Contoh: Rute Utara - Senin & Kamis) |
| `start_date` | DATE | Tanggal mulai langganan |
| `end_date` | DATE | Tanggal berakhir langganan |
| `status` | ENUM('active', 'expired', 'cancelled') | Status langganan (Default: 'active') |
| `created_at` | TIMESTAMP | Waktu daftar |

---

# TAHAP 5: Perancangan RESTful API Endpoints

Dokumentasi antarmuka komunikasi data antara Frontend Web dan Backend Server WasteBank:

| HTTP Method | URL Endpoint | Deskripsi Fungsi | Akses Otorisasi | Request Body (JSON) / Keterangan | Respon Sukses (200/201 JSON) |
| :---: | :--- | :--- | :---: | :--- | :--- |
| **GET** | `/api/v1/waste-categories` | Mengambil seluruh katalog kategori dan harga sampah harian | **Publik** | *None* (Mendukung query parameter: `?golongan=organik` atau `?golongan=anorganik` atau `?golongan=b3`) | `[ { "id": 1, "nama_kategori": "Botol PET", "golongan": "anorganik", "harga_per_kg": 4500, "poin_per_kg": 10 } ]` |
| **GET** | `/api/v1/bank-units` | Mengambil daftar titik lokasi Bank Sampah terverifikasi untuk peta | **Publik** | *None* (Query: `?lat=-6.755&lng=111.038&radius_km=5`) | `[ { "id": 1, "nama": "Bank Sampah Induk Kab. Pati", "lat": -6.756, "lng": 111.047, "status": "Buka" } ]` |
| **POST** | `/api/v1/auth/register` | Mendaftarkan akun nasabah baru ke sistem | **Publik** | `{ "nama_lengkap": "Budi Santoso", "email": "budi@mail.com", "nomor_hp": "081234567890", "alamat_domisili": "Jl. Melati No.5", "password": "rahasia123" }` | `{ "status": "success", "message": "Akun berhasil dibuat, silakan login" }` |
| **POST** | `/api/v1/subscriptions` | Mendaftar layanan angkut sampah rutin berlangganan bulanan | **Nasabah (Bearer Token)** | `{ "route_name": "Rute Utara", "payment_method": "potong_saldo" }` | `{ "status": "success", "message": "Langganan berhasil diaktifkan", "data": { "end_date": "2026-09-24" } }` |
| **POST** | `/api/v1/pickup-orders` | Membuat pesanan penjemputan sampah baru oleh nasabah | **Nasabah (Bearer Token)** | `{ "alamat_jemput": "Jl. Mawar No. 24 RT 02/05", "latitude": -6.2146, "longitude": 106.8451, "schedule_id": 3, "catatan_user": "Sampah kardus 3 ikat", "kategori_estimasi": [1, 3] }` | `{ "status": "success", "message": "Order penjemputan berhasil dibuat", "data": { "order_code": "WB-20260820-004", "status": "pending" } }` |
| **GET** | `/api/v1/user/wallet` | Melihat saldo tabungan, total poin reward, dan mutasi buku tabungan nasabah | **Nasabah (Bearer Token)** | *None* | `{ "saldo_tabungan": 128500.00, "total_poin": 350, "riwayat_transaksi": [ ... ] }` |
| **PATCH**| `/api/v1/admin/orders/:id/complete` | Admin/Petugas mencatat timbangan aktual sampah dan memvalidasi order selesai (saldo otomatis cair) | **Admin / Petugas** | `{ "items": [ { "category_id": 1, "berat_kg": 4.5 }, { "category_id": 2, "berat_kg": 12.0 } ] }` | `{ "status": "success", "message": "Transaksi berhasil diverifikasi, saldo nasabah telah ditambahkan", "total_nilai": 62500 }` |
| **DELETE**| `/api/v1/pickup-orders/:id` | Nasabah membatalkan permintaan penjemputan (hanya jika status masih `pending`) | **Nasabah (Bearer Token)** | *None* | `{ "status": "success", "message": "Order penjemputan berhasil dibatalkan" }` |

---

### Lembar Pengesahan Dokumen Perancangan

Dokumen perancangan teknis ini disusun berdasarkan data riset empiris dan kesepakatan seluruh anggota **Kelompok 2 PW** sebagai acuan resmi dalam pembangunan sistem **WasteBank**.

| Nama Anggota | No. Absen | Peran / Tanggung Jawab | Tanda Tangan |
| :--- | :---: | :--- | :---: |
| **Kamarul Arifin Muzaffar** | 21 | Lead System Architect & Database Designer | (.......................) |
| **Muhammad Fauzan Habibul Adha** | 27 | Fullstack Developer & API Documentation | (.......................) |
| **Mutiara Endah Gusti Ayu** | 30 | Product Requirement Analyst & User Persona | (.......................) |
| **Niken Ayu Larasati** | 32 | UX Researcher & User Flow Specialist | (.......................) |
| **Zahra Syaila Hidayat** | 39 | Sitemap & Functional Requirement Analyst | (.......................) |
