Point of Sales
Sistem kasir berbasis Laravel + Inertia + React untuk transaksi penjualan, customer management, inventory audit, sales return, cashier shift, receivables, payables, dan observability operasional.

Daftar Isi
- Tentang Aplikasi
- What's New
- Kenapa Menarik
- Fitur Utama
- Teknologi Inti
- Quick Start
- Konfigurasi Awal
- Default Login
- Dokumentasi Detail
- Cuplikan Layar
- Peta Modul Utama
- Testing
- Troubleshooting Umum
- Kontribusi
Tentang Aplikasi
Repo ini ditujukan untuk developer yang ingin menjalankan, memelihara, atau mengembangkan aplikasi POS dengan modul operasional yang cukup lengkap:
- POS & checkout multi-metode pembayaran
- customer + wilayah Indonesia
- receivables / piutang pelanggan
- payables / hutang supplier
- stock opname + stock mutation
- sales return
- cashier shift
- audit log
- laporan dan dokumen cetak
- RBAC berbasis role & permission
README.md ini sengaja dibuat ringkas sebagai portal onboarding. Penjelasan detail modul tersedia di folder docs/.
What's New
- Hutang & piutang untuk pelanggan dan supplier
- Sales return terhubung ke stok, profit, dan receivable
- Stock opname dan stock mutation untuk audit inventory
- Cashier shift dengan kontrol shift aktif pada operasi transaksi
- Audit log untuk jejak perubahan operasional
- Payment workflow: cash, transfer bank, Midtrans, Xendit, dan pay later
Kenapa Menarik
- POS cepat dan modern untuk operasional kasir harian
- Modul operasional toko tidak berhenti di checkout, tetapi lanjut ke receivables, payables, returns, dan inventory audit
- Role & permission cukup granular untuk kebutuhan admin dan kasir
- Dokumen bisnis siap cetak: invoice, receipt, shipping label, PDF piutang, PDF hutang
- Sudah ada struktur service dan module yang cukup enak dikembangkan oleh developer lain
Fitur Utama
POS & Transaksi
- pencarian produk via barcode / keyword
- cart multi-item
- hold / resume transaksi
- checkout multi-metode pembayaran
- share invoice publik dan dokumen print
Customer & Wilayah
- CRUD customer
- alamat wilayah Indonesia
- customer history
Inventory & Operasional
- product management
- stock opname
- stock mutation
- sales return
- cashier shift
- low stock notification
Keuangan
- receivables / piutang pelanggan
- payables / hutang supplier
- supplier management
- payment gateway settings
- bank account management
Admin & Observability
- users, roles, permissions
- audit logs
- sales report
- profit report
- dokumen PDF operasional
Teknologi Inti
- Laravel 12
- Inertia.js + React
- Tailwind CSS
- Spatie Laravel Permission
- Laravolt Indonesia
- barryvdh/laravel-dompdf
- picqer/php-barcode-generator
- Integrasi payment Midtrans & Xendit
Quick Start
git clone https://github.com/aryadwiputra/point-of-sales.git
cd point-of-sales
cp .env.example .env
composer install
npm install
php artisan key:generate
php artisan migrate --seed
php artisan storage:link
npm run dev
php artisan serve
Dokumentasi setup lengkap: docs/getting-started.md
Konfigurasi Awal
Setelah login pertama kali, lakukan minimal konfigurasi berikut:
- lengkapi profil toko
- atur payment gateway yang dipakai
- tambah rekening bank aktif jika memakai transfer manual
- isi target penjualan bila dashboard target dipakai
- pastikan
APP_URLvalid jika memakai webhook Midtrans/Xendit
Dokumentasi detail konfigurasi: docs/configuration.md
Default Login
- Admin:
[email protected]/password - Kasir:
[email protected]/password
Catatan:
- seeder akan membuat role, permission, user default, dan sample data
- jika menjalankan ulang seeder, permission cache perlu konsisten; lihat troubleshooting di bawah
Dokumentasi Detail
Handbook Utama
- Indeks dokumentasi:
docs/README.md - Getting started:
docs/getting-started.md - Gambaran arsitektur:
docs/architecture-overview.md - Konfigurasi aplikasi:
docs/configuration.md - Indeks fitur:
docs/feature-index.md
Dokumen Fitur
- POS & transaksi:
docs/features/pos-transactions.md - Customer & wilayah:
docs/features/customers-regions.md - Receivables:
docs/features/receivables.md - Payables & suppliers:
docs/features/payables-suppliers.md - Inventory & stock:
docs/features/inventory-stock.md - Sales returns:
docs/features/sales-returns.md - Cashier shifts:
docs/features/cashier-shifts.md - Audit logs:
docs/features/audit-logs.md - Settings & payments:
docs/features/settings-payments.md - RBAC, users, roles:
docs/features/rbac-users-roles.md - Reports & documents:
docs/features/reports-documents.md
Cuplikan Layar
Modul Revamp
| Modul | Preview |
|---|---|
| Dashboard | ![]() |
| Kasir / POS | ![]() |
Modul Legacy / Dokumen
| Modul | Preview |
|---|---|
| Dashboard Lama | ![]() |
| POS Lama | ![]() |
| Invoice | ![]() |
Catatan:
- preview ini dipertahankan di README untuk membantu developer cepat menangkap kualitas UI dan cakupan modul
- dokumentasi detail perilaku fitur tetap dipisah ke folder
docs/
Peta Modul Utama
dashboard/transactions— POS, cart, hold/resume, checkout, printdashboard/transactions/history— histori transaksi dan entry point sales returndashboard/customers— customer management dan data wilayahdashboard/receivables— piutang pelanggandashboard/suppliers— supplier managementdashboard/payables— hutang supplierdashboard/stock-opnames— stock opnamedashboard/stock-mutations— histori mutasi stokdashboard/sales-returns— retur penjualandashboard/cashier-shifts— buka/tutup shift kasirdashboard/audit-logs— observability aktivitas userdashboard/settings/*— payment settings, bank accounts, profil toko, target
Testing
Contoh menjalankan test:
php artisan test
php artisan test --filter=StockOpnameTest
php artisan test --filter=SalesReturnTest
php artisan test --filter=AuditLogTest
Dokumen fitur menjelaskan test coverage yang relevan per modul.
Troubleshooting Umum
Permission baru tidak terbaca setelah seeding
- jalankan ulang seeder utama:
php artisan db:seed - logout lalu login lagi
- pastikan seeder permission/role/user sudah ikut mereset cache permission
Detail RBAC: docs/features/rbac-users-roles.md
Route fitur baru error karena migrasi belum dijalankan
Jika route seperti sales return, stock opname, cashier shift, atau audit log gagal karena tabel belum ada:
php artisan migrate
Webhook payment tetap pending
- cek
APP_URLjanganlocalhost - pastikan webhook URL yang dipakai public
- cek token callback Xendit dan key Midtrans
Detail payment setup: docs/configuration.md
Gambar produk tidak tampil
Pastikan symbolic link storage sudah dibuat:
php artisan storage:link
Kontribusi
- Fork repo ini
- Buat branch fitur:
git checkout -b feature/nama-fitur - Lakukan perubahan
- Commit dengan message jelas
- Push branch dan buka Pull Request
Authors
- Arya Dwi Putra
- Menggunakan resource awal dari https://github.com/Raf-Taufiqurrahman/RILT-Starter dengan penyesuaian untuk aplikasi POS



