Membuat Website Laundry Management System SaaS dengan Laravel 12 – Bagian 1

Membuat-Website-Laundry-System-SaaS-dengan-Laravel-12-Bagian-1

Halo sobat HostNesia, Kali ini kita akan membangun sesuatu yang sangat menarik dan punya potensi bisnis yang luar biasa – sistem SaaS (Software as a Service) untuk manajemen laundry menggunakan teknologi modern seperti Laravel 12, FilamentSpatie packages, dan integrasi pembayaran Midtrans. Proyek ini bukan cuma sekedar aplikasi biasa, tapi sistem yang benar-benar bisa digunakan untuk mengelola bisnis laundry secara profesional dengan pendekatan multi-tenant SaaS.

Sebelum kita mulai, proyek ini akan kita bagi dalam 4 bagian artikel, dengan bagian pertama membahas instalasi Laravel dan pengertiannya, bagian ke-dua membahas Filament, pembahasan ke-tiga yaitu Spatie packages, dan yang terakhir yaitu bagian ke-empat membahas Integrasi pembayaran di Midtrans.

Mengapa SaaS Laundry Management System?

Bisnis laundry di Indonesia sedang berkembang pesat, terutama di area urban dan semi-urban. Banyak pengusaha yang mulai membuka cabang laundry kedua, ketiga, bahkan puluhan cabang. Nah, di sinilah masalahnya – mengelola multiple cabang dengan sistem manual atau aplikasi desktop tradisional itu ribet banget dan tidak efisien. Bayangkan kalau kamu punya 10 cabang laundry, terus harus bolak-balik ke setiap cabang cuma buat cek laporan harian atau monitoring performa karyawan. Pasti capek dan memakan waktu yang sangat banyak.

Di sinilah konsep SaaS menjadi solusi yang brilliant. Dengan model SaaS, pemilik bisnis laundry bisa mengakses dashboard management dari mana aja, kapan aja, cukup dengan koneksi internet. Mereka bisa monitoring semua cabang dalam satu platform, melihat real-time analytics, mengelola inventory, mengatur shift karyawan, sampai generate laporan keuangan komprehensif. Yang lebih keren lagi, dengan model subscription-based, kita sebagai developer bisa mendapatkan recurring revenue yang sustainable.

Keunggulan Model SaaS untuk Bisnis Laundry Modern

Model SaaS itu perfect banget untuk bisnis laundry karena beberapa alasan strategis. Pertama, bisnis laundry itu nature-nya sudah subscription-based juga. Pelanggan laundry biasanya punya pattern yang rutin – misalnya seminggu sekali atau dua minggu sekali. Dengan sistem SaaS, kita bisa integrate fitur membership dan loyaalty program yang otomatis, sehingga customer retention meningkat drastis.

Kedua, scalability. Bisnis laundry yang successful pasti akan expand ke multiple locations. Dengan arsitektur SaaS yang kita bangun nanti, adding new branch itu semudah beberapa klik aja. Database structure kita design dengan multi-tenant approach, jadi setiap cabang punya data yang isolated tapi masih bisa di-aggregate untuk reporting level corporate.

Ketiga, operational efficiency. Dengan dashboard admin yang sophisticated, owner bisa melakukan micro-management yang efektif. Misalnya, mereka bisa set automatic pricing berdasarkan jenis pakaian, berat, dan service level. Mereka juga bisa track performa individual staff, monitoring machine utilization, bahgkan predict peak hours berdasarkan historical data.

Teknologi Stack yang Akan Kita Gunakan

Untuk backend, kita menggunakan Laravel 12 yang merupakan versi terbaru dengan performance improvements yang signifikan dan fitur-fitur modern yang sangat membantu development process. Laravel 12 dilengkapi dengan enhanced queue system, better database optimization, dan security improvements yang crucial untuk aplikasi SaaS.

Filament akan menjadi core dari admin dashboard kita. Jujur aja, Filament itu game-changer banget untuk rapid development admin panel yang professional-grade. Dengan Filament, kita bisa create sophisticated CRUD operations, complex filtering, advanced search functionality, custom widgets untuk analytics, sampai export/import features – semua itu dengan minimal coding effort. UI/UX yang dihasilkan Filament juga sangat modern dan responsive, jadi client bakal impressed dengan hasil akhirnya.

Spatie packages akan kita leverage untuk berbagai functionality yang kompleks. Spatie/permission untuk role-based access control yang granular, spatie/media-library untuk efficient file management (karena kita perlu handle customer photos, receipt images, etc.), spatie/backup untuk automated database backup, dan spatie/activitylog untuk comprehensive audit trails. Spatie ecosystem itu mature bangeet dan battle-tested, jadi kita gak perlu reinvent the wheel.

Midtrans integration akan handle semua payment processing, baik untuk customer payments maupun subscription fees dari laundry owners. Midtrans support various payment methods yang populer di Indonesia – credit cards, bank transfers, e-wallets, sampai convenience store payments. Yang penting, Midtrans punya robust API documentation dan excellent sandbox environment untuk testing.

Fitur Langganan SaaS yang Powerful

Subscription management adalah differentiator utama aplikasi kita dengan competitors. Kita akan implement multi-tier pricing plans – Basic plan untuk single branch dengan limited features, Professional plan untuk multiple branches dengan advanced analytics, dan Enterprise plan dengan white-label options dan custom integrations.

Payment processing untuk subscriptions akan fully automated menggunakan Midtrans recurring payment features. Sistem akan automatically charge monthly/yearly fees, handle failed payments dengan retry mechanisms, send payment remindeers, dan graceful service degradation untuk overdue accounts.

User management akan support multiple admin levels within each laundry business – Super Admin (owner level), Branch Managers, Staff, dan Accountants – masing-masing dengan permission sets yang berbeda. Multi-tenant architecture ensure complete data isolation antar customers sambil maintaining efficiency dalam resource utilization.

Preparation untuk Development Journey

Sebelum kita mulai coding di artikel-artikel berikutnaya, penting untuk understand bahwa kita akan build aplikasi ini step-by-step dengan approach yang structured dan maintainable. Kita akan start dengan solid foundation – database design, authentication system, dan basic CRUD operations. Kemudian gradually add complex features seperti reporting, payment integration, dan advanced SaaS functionalities.

Code quality akan jadi priority utama. Kita aaakan implement proper testing strategies, follow Laravel best practices, maintain clean architecture dengan separation of concerns, dan ensure scalability dari awal development process. Documentation juga akan comprehensive supaya aplikasi ini bisa di-maintain dan di-extend dengan mudah.

Security considerations akan integrate dari beginning, karena aplikasi SaaS handle sensitive business data dan payment inforamation. Kita akan implement proper data encryption, secure API endpoints, protection against common vulnerabilities, dan compliance dengan data protection regulations.

Persiapan Environment Development

Sebelum kita mulai, pastikan environment development kamu sudah ready dengan requirements yang diperlukan. Kamu perlu PHP versi 8.2 atau lebih tinggi karena Laravel 12 membutuhkan PHP modern untuk optimal performance. Composer juga harus sudah terinstall sebagai dependency manager utama untuk PHP ecosystem.

MySQL atau MariaDB harus sudah running di local machine atau server development kamu. Kalau kamu menggunakan XAMPP, WAMP, atau MAMP, pastikan MySQL service sudah active. Untuk yang prefer menggunakan Laravel Sail atau Docker, itu juga fine – tapi di tutorial ini kita akan fokus ke traditional setup yang lebih straightforward.

Node.js dan NPM/Yarn juga akan diperlukan nanti untuk asset compilation, tapi untuk sekarang kita fokus ke backend setup dulu. Git juga highly recommended untuk version control, terutama karena kita akan build aplikasi yang complex dengan multiple features.

Membuat Project Laravel Baru

Mari kita mulai dengan membuat project Laravel baru menggunakan Composer. Command yang kita gunakan adalah composer create-project yang akan download Laravel skeleton dan setup initial structure untuk kita.

composer create-project laravel/laravel saas-laundry-management

Command ini akan membuat folder baru bernama “saas-laundry-management” dan download semua dependencies yang diperlukan. Process ini biasanya butuh beberapa menit tergantung speed internet connection kamu. Composer akan automatically resolve all package dependencies dan setup autoloading configuration.

Setelah process selesai, masuk ke directory project yang baru dibuat:

cd saas-laundry-management

Sekarang kita bisa explore structure project Laravel yang fresh. Kamu akan melihat folder-folder familiar seperti app/, config/, database/, routes/, dan resources/. Structure ini adalah standard Laravel convention yang akan memudahkan development dan maintenance ke depannya.

Konfigurasi Environment Variables

Langkah selanjutnya adalah setup environment configuration melalui file .env. File ini adalah heart dari Laravel configuration dimana kita define berbagai settings seperti database connection, mail configuration, cache drivers, dan environment-specific variables lainnya.

Pertama, copy file .env.example menjadi .env:

cp .env.example .env

Atau kalau kamu di Windows dan tidak menggunakan Git Bash:

copy .env.example .env

Sekarang buka file .env dengan text editor favorit kamu. File ini berisi berbagai configuration variables yang perlu kita adjust sesuai environment development kita.

Setup Database Configuration

Bagian paling crucial dari .env configuration adalah database setup. Mari kita configure MySQL connection dengan detail yang sesuai setup local kamu:

APP_NAME="SaaS Laundry Management"
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:8000

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=saas_laundry_management
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

Mari kita breakdown setiap configuration variable yang important:

DB_CONNECTION=mysql menentukan bahwa kita menggunakan MySQL sebagai database driver. Laravel support berbagai database engines seperti PostgreSQL, SQLite, dan SQL Server, tapi untuk project ini MySQL adalah pilihan yang optimal.

DB_HOST=127.0.0.1 adalah IP address localhost dimana MySQL server running. Kalau kamu menggunakan XAMPP atau similar local development environment, value ini biasanya sudah benar. Untuk production nanti, ini akan diganti dengan actual server IP atau domain.

DB_PORT=3306 adalah default port untuk MySQL. Kebanyakan installation menggunakan port ini, tapi kalau kamu custom installation dengan port berbeda, adjust sesuai configuration kamu.

DB_DATABASE=saas_laundry_management adalah nama database yang akan kita gunakan. Pastikan database dengan nama ini sudah exists di MySQL server kamu, atau kita akan create manually sebentar lagi.

DB_USERNAME=root adalah username untuk database connection. Untuk local development, biasanya “root” sudah cukup. Di production environment, strongly recommended untuk create dedicated database user dengan limited privileges sesuai principle of least privilege.

DB_PASSWORD= di set kosong karena default XAMPP installation biasanya tidak ada password untuk root user. Kalau MySQL installation kamu ada password, isi sesuai credential yang benar.

Generate Application Key

Laravel membutuhkan unique application key untuk encryption dan security purposes. Generate key ini dengan command:

php artisan key:generate

Command ini akan automatically update APP_KEY variable di file .env dengan randomly generated secure key. Key ini digunakan untuk encrypting cookies, session data, dan data sensitive lainnya.

Membuat Database

Sebelum kita test connection, kita perlu create database yang sudah kita specify di .env file. Ada beberapa cara untuk melakukan ini:

Melalui MySQL command line:

CREATE DATABASE saas_laundry_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Character set utf8mb4 dengan collation utf8mb4_unicode_ci adalah recommended setting untuk support full Unicode characters termasuk emoji dan special characters yang mungkin diperlukan di aplikasi kita.

Atau kalau kamu prefer menggunakan phpMyAdmin (biasanya available di http://localhost/phpmyadmin kalau pakai XAMPP), kamu bisa create database melalui web interface dengan settings yang sama.

Untuk yang menggunakan MySQL Workbench atau database management tools lainnya, process-nya similar – create new schema dengan nama “saas_laundry_management” dan character set utf8mb4.

Testing Database Connection

Sekarang mari kita test apakah database connection sudah properly configured. Laravel menyediakan built-in command untuk testing database connectivity:

php artisan migrate:status

Kalau connection berhasil, kamu akan melihat output yang menunjukkan migration status (walaupun belum ada migrations yang di-run). Kalau ada error, biasanya terkait dengan:

Database credential yang salah di file .env – double-check username, password, dan database name. Database server yang belum running – pastikan MySQL service active. Database yang belum exists – create database sesuai nama yang di-specify di DB_DATABASE. Firewall atau permission issues – pastikan PHP bisa connect ke MySQL port.

Menjalankan Default Migrations

Laravel ships dengan beberapa default migrations untuk user authentication, password resets, dan failed jobs handling. Mari kita run migrations ini untuk setup basic table structure:

php artisan migrate

Command ini akan create several tables di database kita:

users table untuk menyimpan user data dengan columns seperti name, email, password, dan timestamps. Table ini akan kita extend nanti dengan additional fields yang specific untuk laundry management system.

password_reset_tokens table untuk handling password reset functionality yang secure dan time-limited.

failed_jobs table untuk logging failed queue jobs yang akan berguna untuk debugging dan monitoring system performance.

personal_access_tokens table kalau kamu menggunakan Laravel Sanctum untuk API authentication (yang kemungkinan besar akan kita implement untuk mobile app integration).

Kalau migration berhasil, kamu akan melihat output yang confirmative menunjukkan semua migrations telah di-execute successfully.

Verifikasi Installation

Untuk memastikan everything works properly, mari kita start development server dan access aplikasi di browser:

php artisan serve

Command ini akan start built-in PHP development server di http://localhost:8000. Buka URL ini di browser, dan kamu should melihat Laravel welcome page yang menunjukkan bahwa installation berhasil.

Welcome page juga akan show beberapa useful information seperti Laravel version, PHP version, dan links ke documentation. Ini adalah good sign bahwa basic setup sudah proper dan kita ready untuk next steps.

Troubleshooting Common Issues

Kalau kamu encounter issues during setup process, berikut beberapa common problems dan solutions:

“PDO Connection failed” error biasanya indicates database connection issues. Double-check .env configuration, pastikan MySQL running, dan verify database exists dengan nama yang correct.

“Permission denied” errors biasanya terkait file permissions. Pastikan web server punya write access ke storage/ dan bootstrap/cache/ directories. Run chmod commands kalau diperlukan di Unix-based systems.

“Class not found” errors bisa indicate autoloading issues. Run composer dump-autoload untuk refresh autoload files, atau composer install kalau ada missing dependencies.

Port already in use ketika run php artisan serve bisa di-solve dengan specify different port: php artisan serve –port=8080.

Optimizing untuk Development

Untuk development experience yang optimal, kamu bisa enable beberapa Laravel debugging tools. Install Laravel Debugbar untuk detailed request information:

composer require barryvdh/laravel-debugbar --dev

Tool ini akan show detailed information tentang queries, performance metrics, dan request data yang sangat helpful during development process.

Setting Up Version Control

Sebelum kita lanjut ke coding features, good practice untuk setup Git repository:

git init
git add .
git commit -m "Initial Laravel 12 setup for SaaS Laundry Management"

Laravel automatically includes comprehensive .gitignore file yang exclude vendor/, node_modules/, dan files lain yang tidak should di-commit ke repository.

Dengan basic setup yang solid ini, kita sudah punya foundation yang strong untuk mulai develop fitur-fitur SaaS Laundry Management system. Database connection sudah established, basic table structure sudah ready, dan development environment fully functional.

Di artikel selanjutnya, kita akan mulai install dan configure Filament untuk admin dashboard yang powerful, serta setup basic authentication system yang akan menjadi backbone dari multi-tenant SaaS application kita.

Klik link bagian 2

HostNesia

Leave a Reply

Your email address will not be published. Required fields are marked *