Sistem Manajemen Laundry Modern dengan WhatsApp Gateway — solusi lengkap untuk bisnis laundry Anda.
GoLaundry adalah aplikasi manajemen laundry berbasis web yang dibangun dengan PHP Native (tanpa framework), MySQL, dan Node.js WhatsApp Gateway menggunakan library Baileys. Dirancang untuk usaha laundry skala kecil hingga menengah.
| Role | Password | Akses | |
|---|---|---|---|
| Admin | admin@golaundry.com |
admin123 |
Full akses operasional |
| Owner | owner@golaundry.com |
owner123 |
Dashboard & laporan |
| Fitur | Deskripsi |
|---|---|
| Dashboard | Statistik real-time: total pelanggan, order aktif, pendapatan hari ini & total |
| Manajemen Pelanggan | CRUD pelanggan dengan pencarian by nama / nomor HP (Tom Select) |
| Manajemen Layanan | CRUD layanan dengan harga dan satuan (kg, pcs, pasang, dll) |
| Order Laundry | Buat order multi-layanan, kalkulasi otomatis, catatan order |
| Update Status | Menunggu → Diproses → Selesai → Dikirim |
| Pembayaran | Update status: Belum Bayar → Lunas |
| Filter & Pencarian | Filter order by status, tanggal, nama pelanggan |
| WhatsApp Gateway | Kelola koneksi WA, scan QR Code, lihat status & nomor terhubung |
| Fitur | Deskripsi |
|---|---|
| Dashboard | Ringkasan bisnis: pelanggan, order aktif, pendapatan |
| Laporan Harian | Detail order per hari dengan total pendapatan |
| Laporan Bulanan | Grafik pendapatan bulanan + tabel detail per hari |
| Trigger | Pesan Terkirim |
|---|---|
| Order dibuat | Konfirmasi order + nomor order + total harga |
| Status → Diproses | Notifikasi laundry sedang diproses |
| Status → Selesai | Notifikasi laundry selesai, siap diambil |
| Status → Dikirim | Notifikasi laundry sudah dikirim |
| Pembayaran Lunas | Konfirmasi pembayaran berhasil |
| Komponen | Teknologi | Versi |
|---|---|---|
| Backend | PHP Native (MVC) | 8.0+ |
| Database | MySQL | 5.7+ |
| Frontend | Bootstrap | 5.3 |
| Icons | Bootstrap Icons | 1.11 |
| Chart | Chart.js | 4.4 |
| Select Search | Tom Select | 2.3 |
| WA Gateway | Node.js + Express | 18+ |
| WA Library | Baileys (@whiskeysockets) | 6.7+ |
| Web Server | Apache (XAMPP) | — |
mysqlicurljsonsessionmbstring
golaundry/ ├── assets/ │ ├── css/style.css # Stylesheet utama │ └── js/app.js # JavaScript utama ├── config/ │ ├── database.php # Konfigurasi DB & konstanta │ └── session.php # Manajemen session ├── controllers/ │ ├── AuthController.php # Login & logout │ ├── DashboardController.php │ ├── CustomerController.php │ ├── ServiceController.php │ ├── OrderController.php │ ├── WhatsAppController.php │ └── ReportController.php ├── models/ │ ├── UserModel.php │ ├── CustomerModel.php │ ├── ServiceModel.php │ ├── OrderModel.php │ └── WaSettingModel.php ├── views/ │ ├── layouts/ # header, footer, sidebar, topbar │ ├── auth/login.php │ ├── admin/ # dashboard, customers, services, orders, whatsapp │ └── owner/ # dashboard, report_daily, report_monthly ├── helpers/functions.php ├── routes/web.php ├── index.php # Entry point ├── database.sql └── .htaccess
whatsapp-gateway/ ├── sessions/ │ ├── auth/ # Sesi WA (auto-generated) │ └── message_log.json # Log pengiriman pesan ├── server.js # Server Express + Baileys ├── package.json └── .env
Download dan install XAMPP, lalu jalankan Apache dan MySQL dari Control Panel.
Salin folder golaundry/ ke: C:\xampp\htdocs\golaundry\
Buka http://localhost/phpmyadmin → buat database golaundry → Import file database.sql.
Atau via CLI:
mysql -u root -p < golaundry/database.sql
Akses http://localhost/golaundry/seed_password.php sekali saja.
seed_password.php setelah dijalankan!cd whatsapp-gateway npm install
node server.js
Output yang diharapkan:
╔══════════════════════════════════════════╗ ║ GoLaundry WhatsApp Gateway v1.0.0 ║ ║ Port: 3000 ║ ╚══════════════════════════════════════════╝ [WA] QR Code ready to scan
http://localhost/golaundry
define('DB_HOST', 'localhost'); // Host database
define('DB_USER', 'root'); // Username MySQL
define('DB_PASS', ''); // Password MySQL
define('DB_NAME', 'golaundry'); // Nama database
define('WA_GATEWAY_URL', 'http://localhost:3000');
define('APP_URL', 'http://localhost/golaundry');
PORT=3000
.env, ubah juga WA_GATEWAY_URL di config/database.php.cd whatsapp-gateway && node server.js
Login sebagai Admin → menu WhatsApp Gateway → QR Code muncul otomatis.
Buka WhatsApp di HP → Perangkat Tertaut → Tautkan Perangkat → Scan QR.
| Tips | Penjelasan |
|---|---|
| Nomor dedicated | Jangan pakai nomor pribadi. Siapkan nomor khusus untuk gateway |
| Nomor "matang" | Gunakan nomor yang sudah aktif minimal 1-2 minggu sebelum dipakai bot |
| Jangan kirim massal | Aplikasi sudah dilengkapi message queue dengan delay natural (1.5–5 detik) |
| Pesan relevan | Kirim hanya ke pelanggan yang menggunakan jasa laundry |
| Batasi volume | Idealnya tidak lebih dari 50–100 pesan per hari |
| Jangan restart berulang | Restart server terlalu sering bisa memicu deteksi bot |
whatsapp-gateway/sessions/auth/node server.jshttp://localhost:3000{ "connected": true, "phone": "628123456789", "queue_size": 0, "timestamp": "..." }
{ "connected": false, "qr": "data:image/png;base64,iVBORw0KGgo..." }
Request Body:
{ "number": "08123456789", "message": "Halo, order Anda sudah selesai!" }
Response:
{ "success": true, "to": "08123456789" }
{ "success": true }{ "connected": true, "phone": "628123456789", "user": { "id": "...", "name": "Nama WA" } }{ "logs": [{ "to": "...", "message": "...", "status": "sent", "timestamp": "..." }] }users| Kolom | Tipe | Keterangan |
|---|---|---|
id | INT AI | Primary key |
name | VARCHAR(100) | Nama lengkap |
email | VARCHAR(100) | Email login (unique) |
password | VARCHAR(255) | Bcrypt hash |
role | ENUM | admin / owner |
customers| Kolom | Tipe | Keterangan |
|---|---|---|
id | INT AI | Primary key |
name | VARCHAR(100) | Nama pelanggan |
phone | VARCHAR(20) | Nomor HP/WA |
address | TEXT | Alamat |
orders| Kolom | Tipe | Keterangan |
|---|---|---|
id | INT AI | Primary key |
order_number | VARCHAR(20) | GL+tanggal+random |
customer_id | INT FK | Relasi customers |
total_price | DECIMAL(10,2) | Total harga |
status | ENUM | pending/processing/done/delivered |
payment_status | ENUM | unpaid / paid |
order_details| Kolom | Tipe | Keterangan |
|---|---|---|
id | INT AI | Primary key |
order_id | INT FK | Relasi orders |
service_id | INT FK | Relasi services |
qty | DECIMAL(8,2) | Jumlah |
price | DECIMAL(10,2) | Harga saat order |
subtotal | DECIMAL(10,2) | qty × price |
| Fitur | Detail |
|---|---|
| Password Hashing | Bcrypt dengan cost factor 10 |
| Session Protection | HttpOnly cookie, SameSite=Lax |
| Output Escaping | htmlspecialchars() di semua output |
| SQL Injection Prevention | Prepared statements di semua query |
| Role-based Access | Admin dan Owner memiliki akses berbeda |
| File Protection | .htaccess melindungi file .sql, .env, .json |
// config/database.php define('APP_URL', 'https://yourdomain.com/golaundry'); // .htaccess — aktifkan HTTPS RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
seed_password.php setelah instalasi dan ganti password default sebelum go-live.APP_URL dan WA_GATEWAY_URL di config/database.php.APP_NAME di config/database.php dan ganti teks "GoLaundry" di file view yang relevan.