Sistem kasir modern dengan alur transaksi cepat, dukungan laporan, dan mode cetak invoice yang rapi. Kalau kamu suka proyek ini, bantu dengan menekan ⭐ di atas – itu sangat membantu visibilitas repositori ini.
Cuplikan antarmuka kasir. Screenshot tambahan ada di bagian di bawah.
- Kasir cepat & intuitif – pencarian barcode, keranjang, ringkasan pembayaran, dan kalkulasi diskon otomatis.
- Invoice siap cetak & payment link – setelah transaksi, kasir bisa melihat preview invoice elegan, membagikan link pembayaran Midtrans/Xendit, dan memilih kapan mau mencetaknya.
- Direct Thermal Printing – cetak struk langsung ke printer thermal via WebSocket server (tanpa dialog print browser).
- Laporan lengkap – dari penjualan, profit, sampai riwayat transaksi dengan filter multi parameter.
- Akses berbasis role – integrasi Spatie Permissions bawaan untuk role, user, dan hak akses yang granular.
- Laravel 12 + Inertia.js
- React + Tailwind CSS
- Spatie Laravel Permission
- Workerman untuk Print Server WebSocket
- Integrasi payment gateway Midtrans Snap & Xendit Invoice (opsional)
Instalasi untuk server utama yang menyimpan database dan aplikasi web.
-
Clone Repository
git clone https://github.com/<username>/point-of-sales.git cd point-of-sales
-
Setup Environment
cp .env.example .env
- Edit
.envdan sesuaikan database credentials (DB_DATABASE,DB_USERNAME,DB_PASSWORD). - Pastikan
APP_URLsesuai domain Anda.
- Edit
-
Install Dependencies
composer install --optimize-autoloader --no-dev npm install
-
Database & Key
php artisan key:generate php artisan migrate --seed --force php artisan storage:link
Note: Seed akan membuat user default
admin@gmail.com/password. -
Build Assets
npm run build
-
Optimasi (Opsional)
php artisan config:cache php artisan route:cache php artisan view:cache
Aplikasi ini menggunakan WebSocket Print Server yang berjalan di komputer kasir untuk mencetak struk secara langsung (Direct Thermal Printing) tanpa menampilkan dialog print browser.
Sebelum setup, pastikan komputer kasir memiliki:
-
Hardware
- PC / Laptop (Windows disarankan).
- Thermal Printer (USB/LAN) yang sudah terhubung dan terinstall driver-nya.
- Kertas thermal (ukuran 58mm atau 80mm).
-
Software
- PHP (v7.4 atau lebih baru): Wajib terinstall.
- Solusi Mudah: Install Laragon (Portable) atau XAMPP. Ini otomatis menginstall PHP.
- Solusi Ringan: Download PHP binary dari windows.php.net.
- PENTING: Pastikan PHP bisa dipanggil dari CMD (ketik
php -v). Jika pakai XAMPP/Laragon tapi tidak muncul, tambahkan path php ke "Environment Variables".
- Composer: Untuk install library printer.
- Cek: Buka CMD, ketik
composer -v. - Download: getcomposer.org
- Cek: Buka CMD, ketik
- Printer Driver: Pastikan printer muncul di Devices and Printers dan bisa "Test Print".
- PHP (v7.4 atau lebih baru): Wajib terinstall.
-
Siapkan Folder Server Copy folder
printer-serverdari source code ini ke Desktop atau Documents di komputer kasir. -
Install Library Buka terminal/CMD, masuk ke folder
printer-servertersebut, lalu jalankan:composer install
Tunggu sampai proses selesai. Folder
vendorakan muncul. -
Jalankan Server
- Windows: Double click file
start.bat. - Linux/Mac: Jalankan
./start.shdi terminal.
Jendela terminal baru akan terbuka dengan status:
Workerman[POS-Julia-Print-Server] start in DEBUG mode WebSocket Server: ws://0.0.0.0:9100Biarkan jendela ini tetap terbuka selama kasir beroperasi.
- Windows: Double click file
-
Setting Nama Printer
- Lihat nama printer persis di Control Panel > Devices and Printers.
- Contoh nama:
POS-58,EPSON TM-U220 Receipt,Generic / Text Only. - Masukkan nama printer ini di menu Settings > Printer pada aplikasi web POS Julia.
- Error
php is not recognized: Artinya PHP belum masuk ke Environment Variables Windows. Cari tutorial "Add PHP to Path Windows" di Google. - Server tidak bisa connect:
- Pastikan file
start.batsudah berjalan. - Cek firewall Windows, pastikan port
9100diizinkan (allow). - Pastikan tidak ada aplikasi lain yang menggunakan port 9100.
- Pastikan file
- Printer tidak merespon tapi status sukses:
- Cek apakah nama printer di setting aplikasi SAMA PERSIS dengan di Control Panel (termasuk spasi/huruf besar).
- Pastikan kabel USB printer tidak kendor.
Agar server printer langsung menyala saat komputer kasir dihidupkan, lakukan langkah ini:
Cara Mudah (Startup Folder):
- Tekan tombol keyboard Windows + R untuk membuka menu Run.
- Ketik
shell:startuplalu tekan Enter. Akan muncul folder Startup. - Klik kanan pada file
start.batdi folderprinter-server, pilih Create Shortcut. - Pindahkan shortcut yang baru dibuat itu ke dalam folder Startup tadi.
- Selesai! Sekarang server akan otomatis menyala setiap kali komputer masuk Windows.
Important
Pengguna XAMPP / Laragon Wajib Baca:
Agar start.bat bisa jalan otomatis, Windows harus "mengenal" perintah php.
- Cari folder PHP anda.
- XAMPP: Biasanya di
C:\xampp\php - Laragon: Biasanya di
C:\laragon\bin\php\php-8.x.x(pilih versi yg aktif)
- XAMPP: Biasanya di
- Copy alamat folder tersebut.
- Di Windows Search, ketik "Edit the system environment variables", enter.
- Klik tombol Environment Variables.
- Di bagian System variables (bawah), cari dan pilih Path, lalu klik Edit.
- Klik New, lalu Paste alamat folder PHP tadi. Klik OK di semua jendela.
Tanpa langkah ini, start.bat akan langsung tertutup sendiri (error) saat komputer nyala.
Cara Profesional (Hidden Service): Jika ingin server berjalan di background (tanpa jendela hitam), gunakan NSSM. Panduan lengkapnya ada di file printer-server/README.md.
- Dashboard: ringkasan kategori, produk, transaksi, pendapatan, dan trend chart.
- Kelola Produk & Stok: CRUD lengkap dengan kategori, barcode unik, dan support varian unit.
- Modul Kasir: pencarian barcode, keranjang multi item, diskon, hitung kembalian otomatis, dan pilihan gateway.
- Invoice / Payment Link: tampilan siap cetak + tombol manual print dan tautan pembayaran.
- Riwayat Transaksi: filter per tanggal/invoice/kasir + export laporan.
- Laporan Profit & Penjualan: pantau performa bisnis dalam sekali klik.
- Manajemen Shift: tracking uang masuk/keluar kasir per shift.
| Modul | Preview |
|---|---|
| Dashboard | ![]() |
| Kasir / POS | ![]() |
| Invoice Ready-to-Print | ![]() |
php artisan test --filter=TransactionFlowTestPengujian ini mensimulasikan checkout lengkap: keranjang ➜ transaksi ➜ invoice, termasuk validasi stok, detail transaksi, profit, dan hitung stok.
- Fork repo ini
- Buat branch fitur:
git checkout -b feature/namamu - Commit perubahanmu:
git commit -m "Tambah fitur X" - Push branch:
git push origin feature/namamu - Buka Pull Request

