# ROLE

Bertindak sebagai Senior Software Architect, Senior Laravel 12 Developer, Senior System Analyst, Senior Database Architect, Senior UI/UX Engineer, dan Senior Code Reviewer.

Sebelum membuat kode, lakukan analisis terhadap struktur project.

Jangan langsung membuat kode.

Jangan membuat asumsi di luar instruksi.

Ikuti Product Requirements Document (PRD) Modul Profil Desa secara ketat.

==========================================================
KONTEKS PROJECT
==========================================================

Project ini merupakan Sistem Informasi Administrasi Desa (SIAD) Desa Siofa Banua berbasis Laravel 12.

Modul yang telah tersedia:

- Authentication
- Dashboard
- Data Penduduk
- Pengajuan Surat
- Arsip Surat
- Master Surat
- User Management
- Profil Saya

Workflow Pengajuan Surat telah selesai.

Workflow Arsip Surat telah selesai.

Generator Surat telah berjalan.

Master Surat telah selesai.

Modul yang akan dibuat sekarang adalah Profil Desa.

==========================================================
TUJUAN
==========================================================

Membangun Modul Profil Desa sebagai pusat identitas resmi desa.

Profil Desa merupakan Single Source of Truth yang akan digunakan oleh:

- Generator Surat
- Dashboard
- Laporan
- Modul lain yang membutuhkan identitas desa

Modul ini bukan merupakan CRUD penuh.

==========================================================
ATURAN
==========================================================

Jangan mengubah workflow:

- Pengajuan Surat
- Arsip Surat
- Master Surat
- Dashboard
- Authentication
- User Management

Jangan mengubah Generator Surat.

Jangan membuat fitur baru di luar PRD.

==========================================================
LANGKAH 1
ANALISIS PROJECT
==========================================================

Sebelum coding lakukan analisis.

Tampilkan:

1. Struktur folder yang berkaitan dengan modul Profil Desa.

2. File yang akan dibuat.

3. File yang akan diubah.

4. Dampak perubahan terhadap modul lain.

5. Dependency yang digunakan.

6. Potensi konflik implementasi.

Jangan membuat kode sebelum analisis selesai.

==========================================================
LANGKAH 2
DATABASE
==========================================================

Implementasikan tabel:

village_profiles

Karakteristik:

- Singleton (hanya satu record)
- Tidak menggunakan Soft Delete
- Menggunakan timestamps Laravel

Field:

- logo
- village_name
- village_code
- address
- postal_code
- district_name
- regency_name
- province_name
- email
- phone
- website
- signer_name
- signer_position
- signer_nip

Buat Migration.

Buat Seeder yang otomatis membuat satu data awal.

==========================================================
LANGKAH 3
MODEL
==========================================================

Buat Model:

VillageProfile

Pastikan Model hanya digunakan untuk satu record Profil Desa.

==========================================================
LANGKAH 4
FORM REQUEST
==========================================================

Buat:

UpdateVillageProfileRequest

Seluruh validasi harus dipindahkan ke Form Request.

Validasi:

- Nama Desa wajib
- Alamat wajib
- Kecamatan wajib
- Kabupaten wajib
- Provinsi wajib
- Nama Penandatangan wajib
- Jabatan wajib
- Email valid
- Website opsional tetapi harus valid
- Nomor Telepon maksimal 20 karakter
- Logo hanya menerima PNG, JPG, JPEG maksimal 2 MB

==========================================================
LANGKAH 5
CONTROLLER
==========================================================

Gunakan:

VillageProfileController

Method yang digunakan:

- show()
- edit()
- update()

Jangan membuat:

- index()
- create()
- store()
- destroy()

Business logic harus tetap sederhana.

==========================================================
LANGKAH 6
ROUTE
==========================================================

Tambahkan route sesuai standar Laravel.

Lokasi menu:

Pengaturan

↓

Profil Desa

Gunakan middleware yang sama dengan modul Pengaturan lainnya.

==========================================================
LANGKAH 7
VIEW
==========================================================

Buat:

show.blade.php

edit.blade.php

Gunakan layout yang sama dengan modul lain.

==========================================================
HALAMAN DETAIL
==========================================================

Tampilkan:

Logo Desa

Identitas Desa

Wilayah Administrasi

Kontak

Penandatangan Surat

Metadata

Tampilkan tombol:

Edit Profil

==========================================================
HALAMAN EDIT
==========================================================

Gunakan Card.

Gunakan Bootstrap 5.

Gunakan Breadcrumb.

Gunakan form yang terstruktur.

Kelompokkan field menjadi:

A. Logo Desa

B. Identitas Desa

C. Wilayah Administrasi

D. Kontak

E. Penandatangan Surat

==========================================================
UPLOAD LOGO
==========================================================

Gunakan Storage Laravel.

Gunakan symbolic link storage.

Saat logo baru diunggah:

- Logo lama dihapus.
- Logo baru disimpan.
- Nama file dibuat unik.

==========================================================
UI
==========================================================

Gunakan:

Bootstrap 5

Card

SweetAlert2

Toast Notification

Loading Button

Responsive Layout

==========================================================
SECURITY
==========================================================

Administrator:

View

Edit

Operator:

View

Seluruh akses menggunakan middleware Authentication dan Authorization.

==========================================================
INTEGRASI
==========================================================

Jangan mengubah Generator Surat.

Namun siapkan agar data berikut dapat digunakan oleh Generator Surat:

nama_desa

alamat

kecamatan

kabupaten

provinsi

logo

nama_penandatangan

jabatan_penandatangan

==========================================================
OUTPUT
==========================================================

Sebelum coding tampilkan:

1. Analisis project.

2. File yang dibuat.

3. File yang diubah.

4. Struktur folder.

Setelah implementasi selesai tampilkan:

1. Ringkasan implementasi.

2. Checklist implementasi.

3. Cara menjalankan migration.

4. Cara menjalankan seeder.

5. Cara melakukan testing.

Pastikan implementasi sesuai dengan Product Requirements Document (PRD) Modul Profil Desa.

Jangan mengubah modul lain di luar ruang lingkup implementasi.