
Cafe POS
Smart Restaurant & Cafe POS with Recipe BOM Stock Management
1 / 25Qasirku adalah platform kasir pintar (Point of Sale) dan manajemen inventori modern yang dirancang khusus untuk mempermudah operasional ritel, grosir, minimarket, dan UMKM. Sistem ini mengintegrasikan transaksi kasir harian dengan kontrol stok berbasis metode FIFO (First In First Out) untuk perhitungan HPP (Harga Pokok Penjualan) dan margin keuntungan kotor yang presisi secara real-time.
Aplikasi ini dibangun menggunakan arsitektur modern berbasis Laravel 13, Inertia.js, dan Vue 3 (TypeScript). Desain antarmukanya premium bergaya dashboard minimalis profesional dengan dukungan Dark Mode penuh dan skema warna aksen Biru (Blue Theme).
Qasirku bukan sekadar aplikasi kasir biasa, melainkan alat kontrol finansial dan stok terintegrasi dengan nilai tinggi bagi pemilik usaha:
Mencegah kasir melakukan checkout sebelum membuka shift kerja di laci kasir cabang.
Proses pemotongan batch FIFO terlama dan pencatatan laba kotor presisi.
Mengembalikan produk ke batch asal demi menjaga keakuratan umur dan HPP barang.
users: Profil kasir, manager, dan admin.outlets: Daftar outlet/cabang usaha toko fisik.user_outlet: Tabel jembatan pembatas hak akses outlet pengguna (RBAC).categories: Menyimpan kategori produk (kategori makanan, minuman, dll).suppliers: Data supplier pengadaan barang.customers: Data pelanggan & membership poin loyalitas.products: Data barang (SKU, nama, barcode, harga jual default, kategori).product_units: Satuan kemasan multi-unit konversi (misal: Dus = 40 Pcs) beserta barcode unitnya.inventory_batches: Buku pencatatan batch FIFO (menyimpan sisa kuantitas, lokasi rak, harga modal beli, tanggal kedaluwarsa).cashier_shifts: Rekap shift kasir (mulai, selesai, modal awal, kas diharapkan, kas aktual, selisih kas).transactions: Invoice penjualan POS (total belanja, diskon global, pajak PPN, metode pembayaran, cash/ewallet/card amount, kembalian, member, status).transaction_items: Rincian item terjual yang mengikat ke batch asal untuk penarikan HPP modal beli asli dan menyimpan diskon per baris item.sale_returns: Dokumen retur penjualan barang dari pelanggan.sale_return_items: Rincian produk dan batch asal yang diretur pada retur penjualan.purchases: Transaksi pembelian barang masuk (supplier, outlet penerima, tanggal, total nominal).purchase_items: Rincian produk yang dibeli beserta informasi batch stok FIFO yang digenerate.purchase_returns: Dokumen retur pembelian barang kembali ke supplier.purchase_return_items: Rincian produk dan batch yang dikurangi akibat retur pembelian.stock_mutations: Master dokumen perpindahan stok fisik antar-outlet.stock_mutation_items: Detail item produk/batch yang didelegasikan untuk dimutasi.settings: Konfigurasi global sistem (site logo, favicon, QRIS image, opsi min stock).licenses: Penyimpan kunci verifikasi lisensi lokal terenkripsi.qasirku/
├── app/ # 🧠 LOGIK BACKEND UTAMA (PHP)
│ ├── Http/
│ │ ├── Controllers/ # Controller logika data & render Inertia
│ │ │ ├── POSController.php # Logika kasir offline/online & FIFO
│ │ │ ├── ShiftController.php # Buka/tutup shift & riwayat shift
│ │ │ ├── ReturnController.php # Retur penjualan & pembelian (FIFO)
│ │ │ └── ...
│ │ └── Middleware/ # Filter Keamanan (CheckLicense, DemoModeMiddleware)
│ ├── Models/ # Model Eloquent Database (Relationship)
│ │ ├── License.php
│ │ ├── InventoryBatch.php
│ │ ├── CashierShift.php
│ │ ├── Customer.php
│ │ └── ...
├── database/ # 🗄️ SKEMA & SEEDER
│ ├── migrations/ # Berkas migrasi pembuatan tabel POS & FIFO
│ └── seeders/ # Seeder master (Roles, Settings, Menus) & DummyDataSeeder
├── resources/ # 🎨 FRONTEND VUE 3 & TYPESCRIPT
│ ├── css/ # CSS & custom styling
│ └── js/ # Kode Vue 3
│ ├── Components/ # Komponen UI (AlertDialog, Modal, DemoModeBanner)
│ ├── Layouts/ # Layout Dashboard (AdminLayout dengan global flash alerts)
│ └── Pages/ # Halaman UI (POS, Products, Inventory, Shifts, Customers)
git clone <repository-url> qasirku
cd qasirku
cp .env.example .env
.env:qasirku di MySQL Anda, kemudian sesuaikan parameter koneksi di file .env:
DB_C
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=qasirku
DB_USERNAME=root
DB_PASSWORD=your_mysql_password
composer install
npm install
php artisan key:generate
php artisan migrate:fresh --seed
php artisan db:seed --class=DummyDataSeeder
php artisan servenpm run devhttp://127.0.0.1:8000Gunakan akun demo di bawah ini untuk menguji hak akses RBAC (Role-Based Access Control) Qasirku:
| Role Peran | Email Login | Password | Penugasan Outlet Default |
|---|---|---|---|
| Super Admin | superadmin@example.com | password | Bebas Akses Semua Outlet |
| Admin User | admin@example.com | password | Outlet Jakarta & Surabaya |
| Manager User | manager@example.com | password | Outlet Jakarta & Bandung |
| Kasir User | cashier@example.com | password | Dibatasi ke Outlet Jakarta Saja |
Sistem orkestrasi Docker Compose Qasirku telah dikonfigurasi lengkap untuk siap di-deploy pada server Linux VPS Ubuntu produksi menggunakan container Nginx + PHP-FPM + MySQL + Redis.
git clone <repository-url> /var/www/qasirku
cd /var/www/qasirku
cp .env.example .env
nano .env
Atur APP_ENV=production, APP_DEBUG=false, DB_C DB_HOST=mysql`, dan atur password database MySQL yang aman.docker compose -f docker-compose.prod.yml up -d --build
docker compose -f docker-compose.prod.yml exec app php artisan key:generate
docker compose -f docker-compose.prod.yml exec app php artisan migrate --force
docker compose -f docker-compose.prod.yml exec app php artisan db:seed --force
docker compose -f docker-compose.prod.yml exec app php artisan storage:link
# Caching optimasi rute & config
docker compose -f docker-compose.prod.yml exec app php artisan config:cache
docker compose -f docker-compose.prod.yml exec app php artisan route:cache
docker compose -f docker-compose.prod.yml exec app php artisan view:cache
.env diatur APP_ENV=local atau APP_ENV=testing.localhost, 127.0.0.1, IP private LAN (192.168.*, 10.*), domain .test atau .local.license.verify akan mengunci sistem dan memaksa redirect ke /admin/license/activate sampai dimasukkan lisensi valid. Lisensi terikat pada APP_KEY. Jangan men-generate ulang APP_KEY setelah melakukan aktivasi lisensi.Developed with ❤️ for Retailers. Copyright © 2026. All rights reserved.

