Dokumentasi

LaundryPro — Panduan & Tutorial

Semua yang perlu kamu tahu untuk evaluasi, onboarding, & deploy LaundryPro: akses demo, role & permission, fitur per-modul, tutorial step-by-step, dan integrasi BYOK.

🔐 1. Akses Demo Siap Pakai

Login langsung pakai akun di bawah. Setiap role mendarat di panel yang sesuai.

Super Admin (Platform)

Login di /login

Email / HP
superadmin@laundrypro.id
Password
password

Kelola semua tenant, plans, subscriptions, payment gateway, broadcast — panel di /admin.

Login →

Owner Tenant Demo

Login di /login

Email / HP
owner@demo.laundrypro.id
Password
password

Dashboard tenant penuh: order, customer, layanan, outlet, loyalty, voucher, wallet, branding, provider.

Login →

Kasir / Staf Outlet

Login di /login

Email / HP
kasir@demo.laundrypro.id
Password
password

POS, update status order, cetak struk, terima pembayaran walk-in. Tidak bisa edit master atau lihat laporan global.

Login →

Kurir Pickup-Delivery

Login di /login

Email / HP
kurir@demo.laundrypro.id
Password
password

List pickup yang di-assign, update status (on the way, picked up, delivered), upload bukti foto.

Login →

Customer (Phone OTP)

Login di /akun/login

Email / HP
0812-3456-7890
Password
OTP via WA / SMS

Portal customer: riwayat order, wallet, loyalty, tracking. Login pakai nomor HP + OTP.

Login →
⚠️ Penting: akun demo ini publik. Jangan simpan data sensitif. Untuk produksi, jalankan php artisan tinker lalu User::where('email','...')->update(['password'=>Hash::make('...')]).

👥 2. Role & User Access

5 role utama. Setiap role melihat menu & tombol yang relevan untuk tugasnya saja.

Super Admin

/admin

Tim platform LaundryPro (kamu).

  • Setujui/suspend tenant baru
  • Atur plan & harga subscription
  • Monitor MRR, churn, health
  • Setup payment gateway platform
  • Broadcast pengumuman ke semua tenant

Owner Tenant

/dashboard

Pemilik bisnis laundry yang berlangganan.

  • CRUD outlet, layanan, harga
  • Lihat laporan & analitik multi-outlet
  • Atur branding, custom domain
  • Set provider WA/payment (BYOK)
  • Kelola voucher & loyalty tier
  • Atasi komplain via order detail

Kasir / Staf

/dashboard

Operator outlet harian.

  • Input order walk-in (POS)
  • Update status (terima → cuci → dst.)
  • Cetak struk thermal Bluetooth
  • Terima pembayaran cash/transfer/QRIS
  • Top-up wallet customer
  • Lihat antrian order outlet sendiri

Driver antar-jemput.

  • Lihat list pickup yang di-assign
  • Update status: on the way / picked up / delivered
  • Upload bukti foto cucian
  • Notif WA otomatis ke customer di setiap event

Customer

/akun

End-user yang nyuci di laundry tenant.

  • Booking pickup di /pickup
  • Lacak order di /track (tanpa login)
  • Login portal pakai HP+OTP (/akun/login)
  • Lihat history, wallet, loyalty point
  • Tulis review outlet setelah selesai

🚀 3. Quick Start (5 menit, sebagai Owner)

  1. 1

    Login sebagai owner demo

    Buka /login, pakai owner@demo.laundrypro.id / password. Akan diarahkan ke /dashboard.

  2. 2

    Lihat dashboard & buat order pertama

    Sidebar → "POS / Buat Order". Pilih outlet, masukkan nomor HP customer (auto-create kalau baru), tambah item layanan, simpan.

  3. 3

    Update status order

    Detail order → klik tombol status berikutnya (Diterima → Dicuci → Dikeringkan → ... → Selesai). Setiap perubahan otomatis kirim WA ke customer kalau provider WA sudah di-set.

  4. 4

    Cetak struk thermal

    Di detail order, klik "🖨️ Cetak struk". Tab struk 58mm + tombol "📡 Print Bluetooth (ESC/POS)" untuk printer thermal.

  5. 5

    Tambah voucher / loyalty tier

    Menu "Voucher" untuk kode promo. Menu "Loyalty" untuk set tier (Silver/Gold/Platinum + auto-discount).

  6. 6

    Lihat laporan & analitik multi-outlet

    Menu "Laporan" untuk omzet/AOV/top customer. Menu "Analitik" untuk perbandingan antar outlet.

  7. 7

    Setup BYOK provider

    Menu "Integrasi" → tambah provider WA (mis. Fonnte) + provider payment (mis. Midtrans Snap). Masukkan API key kamu sendiri.

📖 4. Tutorial Step-by-Step per Role

Klik untuk expand. Setiap role punya alur sendiri.

  1. Login di /login sebagai owner.
  2. Outlets → "Tambah outlet". Isi nama, alamat, koordinat (auto-detect), centang Terima pickup-delivery kalau iya.
  3. Layanan → preset sudah terisi (Cuci Kiloan, Setrika, Express, Sepatu, dll.). Edit harga sesuai bisnis.
  4. Loyalty → review tier default. Set threshold spending dan diskon per tier.
  5. Voucher → opsional. Bikin kode "WELCOME10" untuk customer baru.
  6. Branding → upload logo, set warna brand, isi custom domain kalau sudah punya CNAME.
  7. Integrasi → tambah provider WA + payment (lihat seksi 6 di bawah).
  8. Notif Template → review template default, edit copy WA per event.
  9. Selesai. Outlet siap terima order via POS atau pickup booking publik.
  1. Buka POS di /dashboard/orders/create.
  2. Masukkan nomor HP customer — kalau belum ada, akan auto-create. Kalau ada, data customer + loyalty tier muncul.
  3. Tambah item: pilih layanan, isi qty (kg untuk kiloan, pcs untuk satuan). Sistem hitung subtotal otomatis.
  4. Apply voucher (opsional) — kode promo yang aktif.
  5. Kalau customer punya wallet balance, bisa "Bayar dari wallet" — saldo otomatis kepotong.
  6. Klik Simpan. Order ter-create dengan status received. WA "Pesanan diterima" otomatis terkirim.
  7. Klik "🖨️ Cetak struk" → buka tab struk 58mm. Klik "📡 Print Bluetooth" → pairing printer thermal.
  8. Update status seiring proses: Dicuci → Dikeringkan → Disetrika → Dikemas → Siap → Selesai. WA otomatis di setiap step.
  9. Customer datang ambil → klik "Bayar" → pilih metode (cash, transfer, QRIS, atau gateway). Kalau cash, masukkan jumlah bayar, sistem hitung kembalian.
  1. Customer book pickup di /pickup (publik, tanpa login).
  2. Order ter-create di status received tanpa item (kurir nanti yang isi item & qty saat ambil).
  3. Kurir login di /login → masuk ke /dashboard/pickups.
  4. Owner assign pickup ke kurir → kurir lihat list di dashboard-nya.
  5. Status on_the_way → kurir berangkat. WA "kurir dalam perjalanan" terkirim ke customer.
  6. Status picked_up → sampai di lokasi, ambil cucian, foto, isi qty di sistem.
  7. Cucian masuk outlet → kasir update status order sampai ready.
  8. Status out_for_delivery → kurir antar balik. Customer dapat WA.
  9. Status delivered → selesai. Loyalty point auto-award.
  1. Tanpa login — buka /track, masukkan nomor invoice, lihat status real-time.
  2. Booking pickup/pickup, pilih outlet, alamat, slot waktu, submit.
  3. Login portal/akun/login, masukkan nomor HP, terima OTP via WA/SMS, verify.
  4. Di portal: riwayat order, top-up wallet, lihat poin loyalty, tukar reward, update profil.
  5. Setelah order selesai, customer dapat link review — bisa kasih bintang & komentar untuk outlet.
  1. Login super admin → masuk /admin.
  2. Tenants → lihat semua tenant, suspend yang nunggak, ubah plan manual, impersonate untuk troubleshoot.
  3. Plans → CRUD paket (Starter, Pro, Enterprise), set fitur cap (jumlah outlet, jumlah order/bulan).
  4. Subscriptions → list semua langganan, mark paid manual, refund, cancel.
  5. Payment Gateway → setup gateway platform untuk terima pembayaran subscription dari tenant.
  6. pSEO Analytics → top pages, traffic per template.
  7. Broadcast → kirim pengumuman email ke semua owner tenant.

📚 5. Daftar Fitur Lengkap

Semua modul publik dan internal dengan URL-nya. Klik untuk navigasi langsung.

ModulURLKeterangan
POS / Order Management /dashboard/orders Buat order walk-in / pickup, kalkulasi otomatis berdasarkan layanan + kg + voucher + loyalty.
Status Pipeline 7-Stage /dashboard/orders/{id} received → washing → drying → ironing → packing → ready → completed. Notif WA otomatis di setiap perubahan.
Struk Thermal Bluetooth /dashboard/orders/{id}/receipt Print 58/80mm via Web Bluetooth ESC/POS. Fallback ke window.print().
Customer Database /dashboard/customers CRM lokal: kontak, total spend, last visit, loyalty tier, wallet balance.
Master Layanan & Harga /dashboard/services Kiloan, satuan, express, sepatu, karpet, bed cover, dll. Per-tenant.
Multi-Outlet /dashboard/outlets CRUD outlet, koordinat untuk "laundry-terdekat", set accepts_pickup.
Pickup & Delivery /dashboard/pickups Booking publik di /pickup, assign kurir, tracking event.
Loyalty Tier Auto-Award /dashboard/loyalty Silver/Gold/Platinum, auto-promote, auto-discount, auto-award saat order completed.
Voucher / Promo Code /dashboard/vouchers Nominal Rp atau %, batas pakai, periode aktif, min purchase.
Wallet Customer /dashboard/wallet/{customer} Top-up deposit, deduct otomatis di POS, riwayat transaksi.
Inventory per Outlet /dashboard/inventory Stok detergen, plastik, hanger. Move antar outlet, audit trail.
Laporan Omzet & AOV /dashboard/reports Omzet harian/bulanan, AOV, top customer, breakdown metode pembayaran.
Analitik Multi-Outlet /dashboard/analytics/multi-outlet Bandingkan performance antar cabang dalam 1 tabel.
Branding & White-Label /dashboard/settings/branding Logo, warna primary, nama, custom domain (CNAME).
Provider Integration (BYOK) /dashboard/providers User input API key WA/payment sendiri — Fonnte, Wablas, Cloud API, Midtrans, Xendit, dll.
Notification Template Editor /dashboard/notif-templates Per-event WA template (order created, status changed, ready, dll.) dengan variable {customer_name}, {order_no}.
Bulk Operations /dashboard/bulk/* Bulk status update, export CSV order/customer, import customer.
Booking Pickup Publik /pickup Customer book pickup tanpa login. Pilih outlet, alamat, slot waktu.
Tracking Publik /track Customer lacak progres order pakai nomor invoice — tanpa login.
Portal Customer (OTP) /akun Login HP+OTP, lihat history, wallet, loyalty, update profil.
Programmatic SEO /sitemap.xml 8+ template pSEO: best-laundry-{city}, harga-laundry-kiloan-{city}, alternatives-to-{outlet}, compare/{a}-vs-{b}.
Public Outlet Profile /laundry-di-{city}/{outlet} Halaman publik outlet dengan review, JSON-LD LocalBusiness, schema.org Review.
Multi-Tenancy (infra) Single DB, scope tenant_id via trait BelongsToTenant. Subdomain + custom domain resolution.
Subscription Billing /dashboard/billing Tenant pilih plan, checkout via gateway platform, auto-suspend kalau telat bayar.
Super Admin Panel /admin Tenants, plans, subscriptions, providers, pSEO analytics, logs, broadcast.

🔌 6. Integrasi BYOK (Bring Your Own Key)

Tidak ada vendor lock-in. Semua API key dimasukkan owner sendiri di /dashboard/providers. Adapter generic berdasarkan format API, bukan per-vendor.

WhatsApp (rest-generic)

  • ✓ Fonnte, Wablas, WaBOT.id, dripsender, dll.
  • ✓ WhatsApp Cloud API (Meta resmi)
  • ✓ Endpoint REST apa saja yang terima JSON {phone, message}

Setup: nama provider, base_url, header auth (X-Auth-Token / Bearer), template payload. Preset JSON opsional untuk autofill di storage/app/provider-presets/whatsapp/*.json.

Payment Gateway

  • ✓ Format redirect (Midtrans Snap, Xendit Invoice, DOKU)
  • ✓ Format embed (Stripe Elements via REST)
  • ✓ Format QR statis (QRIS dinamis pakai gateway, statis upload manual)

User input server-key, client-key, callback URL secara manual.

SMS (rest / SMPP)

  • ✓ Twilio-compatible
  • ✓ Nexmo/Vonage
  • ✓ Lokal: Zenziva, Wavecell, dll.

Dipakai untuk OTP customer kalau provider WA belum di-set.

Email (SMTP)

  • ✓ Gmail SMTP, Mailgun, Postmark, Resend SMTP
  • ✓ Self-hosted Postfix

Untuk subscription invoice & broadcast platform.

💡 No hardcoded provider: kita tidak menyimpan daftar harga atau model ID per-vendor di code. Kalau Fonnte ganti format, Wablas naik harga, atau muncul provider baru — owner tinggal update di UI sendiri. Tidak perlu nunggu release LaundryPro.

⚙️ 7. Setup Lokal (Developer)

# Clone & install dependencies
composer install
npm install
# Configure .env (MySQL 8.4 wajib)
cp .env.example .env
php artisan key:generate
# Migrate + seed
php artisan migrate:fresh --seed
# Storage link (untuk logo branding)
php artisan storage:link
# Run dev server + queue worker (notif WA)
php artisan serve
php artisan queue:work

Setelah seed, login dengan kredensial di seksi 1. Database punya 1 tenant demo (Lavindo) + 1 outlet (Menteng) + 6 service preset + 3 loyalty tier.

❓ 8. FAQ

Tidak. Pembayaran customer di MVP bisa cash/transfer/QRIS manual. Provider payment opsional, dimasukkan via /dashboard/providers kalau mau accept payment online.
Single-DB design teruji sampai ~10.000 tenant kalau MySQL 8.4 di-tune normal. Setelah itu pertimbangkan read replica untuk reports.
Customer buka /pickup di publik, pilih outlet (yang accepts_pickup=true), input alamat + slot waktu. Order otomatis ter-create dengan status "received" tanpa item. Kurir nanti update item & qty saat sudah ambil.
Set QUEUE_CONNECTION=sync di .env. Buat provider whatsapp di /dashboard/providers dengan base_url ke webhook.site (atau mockoon lokal). Logs notif tersimpan di tabel provider_usage_logs.
Bisa. Di /dashboard/settings/branding masukkan domain (mis. laundry.bisnisanda.com). Tenant pointing CNAME ke server LaundryPro. SSL pakai Let's Encrypt auto-provisioning (deploy setup).
MVP web-only & PWA-ready. Mobile native (Flutter customer + kurir app) di-roadmap Phase 2.
1) Backup database & folder storage/. 2) Restore di server baru, set APP_URL ke domain baru di .env. 3) Jalankan: php artisan app:migrate-domain --from=... --to=... untuk rewrite URL hardcoded di DB. 4) Cek /admin/health untuk verifikasi.

Siap dipakai bisnis sendiri?

Daftar tenant baru gratis 14 hari, tanpa kartu kredit.

Daftar Tenant Gratis →