aanugerah / wedding-pro
A comprehensive Wedding Organizer management suite for Filament PHP with Native Mobile integration.
Requires
- php: ^8.2
- dotswan/filament-map-picker: ^1.8
- filament/filament: ^3.3 || ^4.0 || ^5.0
- filament/spatie-laravel-media-library-plugin: ^3.3 || ^4.0 || ^5.0
- illuminate/contracts: ^11.0 || ^12.0 || ^13.0
- illuminate/support: ^11.0 || ^12.0 || ^13.0
- midtrans/midtrans-php: ^2.6
- nativephp/laravel: ^1.3
- nativephp/mobile: ^3.1
- spatie/laravel-csp: ^3.0
- spatie/laravel-package-tools: ^1.16
- stichoza/google-translate-php: ^5.0
- tomatophp/filament-language-switcher: ^1.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0 || ^10.0 || ^11.0
- phpunit/phpunit: ^10.5 || ^11.0
Suggests
- emmanpbarrameda/filament-take-picture-field: Required for camera capture in PackageResource and ProductResource visual search (Filament 4+ only). Install with: composer require emmanpbarrameda/filament-take-picture-field:^1.3
README
Wedding Pro adalah solusi all-in-one tingkat enterprise untuk membangun platform Wedding Organizer profesional menggunakan Filament PHP dan Laravel. Plugin ini dirancang untuk menjadi backend (Admin Panel) yang sangat kuat, sekaligus menyediakan API lengkap untuk diintegrasikan dengan aplikasi mobile (Android/iOS) via NativePHP.
📑 Daftar Isi
- ✨ Fitur Utama
- 📋 Persyaratan Sistem
- 🚀 Instalasi
- ⚙️ Konfigurasi Lingkungan (.env)
- 📱 Dokumentasi API Mobile
- 🗄️ Skema Database
- 🤝 Kontribusi
- 📄 Lisensi & Legal (Licensing)
✨ Fitur Utama
Plugin ini membawa fitur-fitur mutakhir yang jarang ditemukan pada plugin Wedding Organizer standar:
1. 📸 AI Visual Search (CBIR)
Sistem pencarian cerdas berbasis Content-Based Image Retrieval.
- Cara Kerja: Pengguna (klien) mengunggah foto referensi dekorasi impian mereka. AI server akan menganalisis fitur visual gambar dan mencari paket dekorasi di database yang paling mirip secara visual.
- Akurasi & Performa: Menemukan kecocokan hingga 100% dalam waktu kurang dari 2 detik.
- Integrasi Kamera: Langsung ambil gambar melalui kamera perangkat untuk pencarian seketika.
Demo: Upload foto bunga → sistem menemukan paket dengan akurasi tinggi.
2. 🤖 AI Consultant Bot
Asisten chatbot pintar untuk merespon pertanyaan pelanggan.
- Automasi: Merespon ketersediaan paket, harga, dan detail layanan secara otomatis.
- Monitoring: Seluruh percakapan terekam dan dapat diambil alih oleh admin (organizer) kapan saja melalui panel pesan Filament.
3. 💳 Midtrans Payment Gateway Terintegrasi
Penyelesaian transaksi langsung dari aplikasi.
- Snap Token: Menampilkan modal pembayaran yang responsif dan aman.
- Webhook: Update status pesanan (Pending, Paid, Failed) secara real-time dan otomatis tanpa campur tangan admin.
4. 📱 NativePHP Mobile Ready
Arsitektur API dan service provider yang dioptimalkan secara khusus untuk berjalan di atas ekosistem NativePHP.
- Normalisasi URL otomatis (mengubah
localhostke10.0.2.2untuk emulator Android). - Bypass Content Security Policy otomatis di perangkat mobile.
5. 🌐 Multi-language & Auto Translation
Sistem lokalisasi pintar yang mendobrak batasan bahasa.
- MyMemory API: Terjemahan teks antarmuka dan konten artikel secara otomatis.
- Smart Caching: Hasil terjemahan disimpan untuk meminimalisir beban request API dan mempercepat waktu muat.
📋 Persyaratan Sistem
Pastikan environment Anda memenuhi spesifikasi berikut sebelum menginstal plugin:
- PHP:
^8.2atau lebih baru - Laravel:
^11.0,^12.0, atau^13.0 - Filament:
^3.3,^4.0, atau^5.0 - Ekstensi PHP:
pdo,mbstring,intl,sqlite3(untuk NativePHP),exif(untuk manipulasi gambar) - Composer: Versi 2.x
🚀 Instalasi
Ikuti langkah-langkah di bawah ini untuk menginstal Wedding Pro ke dalam proyek Laravel Anda.
Langkah 1: Install via Composer
Jalankan perintah berikut di terminal Anda:
composer require aanugerah/wedding-pro
Langkah 2: Daftarkan Plugin di Filament Panel
Buka file app/Providers/Filament/AdminPanelProvider.php (atau panel lain yang Anda gunakan) dan tambahkan plugin ke dalam rantai metode panel():
use Aanugerah\WeddingPro\WeddingProPlugin; public function panel(Panel $panel): Panel { return $panel ->default() ->id('admin') ->path('admin') // ... plugin lain ... ->plugin(WeddingProPlugin::make()); }
Langkah 3: Modifikasi Model User (Opsional namun Disarankan)
Agar fitur peralihan bahasa dan asosiasi pesanan berfungsi maksimal, tambahkan trait berikut ke model User bawaan aplikasi Anda:
namespace App\Models; use Aanugerah\WeddingPro\Traits\HasWeddingPro; use Aanugerah\WeddingPro\Traits\InteractsWithLanguages; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasWeddingPro; use InteractsWithLanguages; // ... }
Langkah 4: Jalankan Migrasi & Publish Aset
Plugin ini memiliki struktur database yang ekstensif. Jalankan perintah migrasi:
php artisan migrate php artisan filament:assets
Langkah 5: Data Seeding (Contoh Data)
Untuk melihat bagaimana plugin bekerja dengan data yang terisi penuh (seperti dummy package, organizer, dan artikel):
php artisan db:seed --class="Aanugerah\WeddingPro\Database\Seeders\WeddingProSeeder"
⚙️ Konfigurasi Lingkungan (.env)
Tambahkan variabel berikut ke dalam file .env proyek Laravel Anda:
# ========================================== # MIDTRANS PAYMENT GATEWAY # Dapatkan kredensial di: https://dashboard.midtrans.com/ # ========================================== MIDTRANS_MERCHANT_ID=Gxxxxxxx MIDTRANS_CLIENT_KEY=SB-Mid-client-xxxxxxx MIDTRANS_SERVER_KEY=SB-Mid-server-xxxxxxx MIDTRANS_IS_PRODUCTION=false # ========================================== # AI SERVER & VISUAL SEARCH (CBIR) # URL menuju server Python (Flask/FastAPI) Anda # ========================================== AI_CORE_URL=http://127.0.0.1:5000 CBIR_API_URL=http://127.0.0.1:5000 # ========================================== # NATIVEPHP & MOBILE SETTINGS (OPSIONAL) # ========================================== NATIVEPHP_RUNNING=false NATIVE_HOST_IP=10.0.2.2 NATIVE_SERVER_PORT=8000 NATIVE_DB_PROXY_SECRET=your-secret-key
📱 Dokumentasi API Mobile
Plugin ini menyediakan RESTful API out-of-the-box untuk dikonsumsi oleh frontend terpisah atau aplikasi mobile.
Endpoint Publik (Tanpa Autentikasi)
| Method | Endpoint | Deskripsi |
|---|---|---|
GET |
/api/ping |
Pengecekan health status server. |
GET |
/api/packages/public |
Mendapatkan daftar katalog paket dekorasi. |
GET |
/api/organizers/public |
Mendapatkan daftar profil Wedding Organizer. |
GET |
/api/settings |
Mengambil konfigurasi dinamis aplikasi. |
Endpoint Terproteksi (Wajib Bearer Token)
| Method | Endpoint | Deskripsi |
|---|---|---|
POST |
/api/register |
Pendaftaran pengguna baru. |
POST |
/api/login |
Autentikasi dan pengambilan token sesi. |
GET |
/api/profile |
Mendapatkan detail informasi user yang login. |
POST |
/api/bookings |
Membuat reservasi/pesanan paket baru. |
GET |
/api/orders |
Mengambil riwayat pesanan klien. |
POST |
/api/cbir/search |
Mengirim data image (form-data) untuk pencarian visual. |
POST |
/api/messages/send |
Mengirim pesan (chat) ke organizer. |
GET |
/api/wishlist |
Mengelola daftar favorit pengguna. |
POST |
/api/vouchers/apply |
Menerapkan kode promo/voucher ke keranjang. |
Konfigurasi Webhook Midtrans
Agar status pembayaran diupdate secara otomatis oleh server Midtrans, pastikan Anda menyetel Payment Notification URL di dashboard Midtrans ke:
https://domain-anda.com/api/webhooks/midtrans
🗄️ Skema Database
Ketika Anda menjalankan migrasi, plugin akan membuat ekosistem tabel berikut:
- Pengguna & Lokalisasi:
users,user_languages,translations - Katalog & Organizer:
wedding_organizers,categories,packages,products - Transaksi & Keuangan:
orders,transactions,vouchers,carts - Interaksi Pengguna:
reviews,wishlists,histories - Komunikasi & Konten:
fm_inboxes,fm_messages,articles,banners
🤝 Kontribusi
Kami sangat menyambut kontribusi dari komunitas open-source! Jika Anda menemukan kutu (bug), memiliki ide fitur baru, atau ingin memperbaiki dokumentasi:
- Lakukan Fork pada repositori ini.
- Buat branch fitur Anda (
git checkout -b fitur/FiturLuarBiasa). - Tulis kode Anda beserta unit test jika memungkinkan.
- Lakukan Commit perubahan Anda (
git commit -m 'Menambahkan FiturLuarBiasa'). - Dorong ke branch Anda (
git push origin fitur/FiturLuarBiasa). - Buka Pull Request di GitHub.
Seluruh Pull Request harus melewati proses CI (Continuous Integration) menggunakan PHPUnit untuk memastikan tidak ada fitur yang rusak.
📄 Lisensi & Legal (Licensing)
Perangkat lunak ini adalah sumber terbuka (Open-Source) dan dilisensikan di bawah pengawasan Apache License 2.0.
Hak Pengguna (What You Can Do)
Berdasarkan Apache License 2.0, Anda diberikan kebebasan untuk:
- Komersial: Menggunakan plugin ini untuk proyek komersial dan tujuan bisnis.
- Modifikasi: Mengubah kode sumber untuk menyesuaikan dengan kebutuhan Anda.
- Distribusi: Membagikan kode sumber asli atau yang telah dimodifikasi.
- Paten: Menggunakan lisensi paten eksplisit yang diberikan oleh kontributor proyek ini (jika ada).
Kewajiban Pengguna (Conditions)
- Pemberitahuan Lisensi: Anda harus menyertakan salinan lisensi Apache 2.0 dan pemberitahuan hak cipta dalam setiap salinan perangkat lunak yang Anda distribusikan.
- Pemberitahuan Perubahan: Jika Anda memodifikasi file source code, Anda wajib menyertakan pemberitahuan (notice) yang menyatakan bahwa Anda telah mengubah file tersebut.
- File NOTICE: Anda dilarang menghapus atau mengubah file
NOTICE(jika ada) dan harus menyertakannya saat didistribusikan ulang.
Sanggahan Hukum (Disclaimer of Warranty & Limitation of Liability)
PERANGKAT LUNAK INI DISEDIAKAN "APA ADANYA" (AS IS), TANPA JAMINAN APA PUN. PENGARANG (AUTHOR) TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN, ATAU KEWAJIBAN LAINNYA.
Lisensi Pihak Ketiga (Third-Party Licenses)
Harap dicatat bahwa plugin ini mengimpor dan bergantung pada beberapa perpustakaan pihak ketiga (dependencies). Sebagian besar library pihak ketiga yang digunakan berlisensi MIT License (seperti Laravel, Filament, Spatie, dan Midtrans). Dengan menggunakan plugin ini, Anda juga setuju untuk mematuhi lisensi dari pustaka pihak ketiga tersebut.
Dibuat dan dipelihara dengan ❤️ oleh Anugerah Ahmad Fachrurochim.Solusi Sistem Informasi Pernikahan Cerdas Masa Depan.


