
Qasirku Smart POS
Smart POS & FIFO Inventory Management System
1 / 25InvenGrid adalah aplikasi manajemen aset dan inventaris modern yang dirancang secara universal untuk membantu berbagai jenis perusahaan dan perkantoran dalam mengelola perangkat IT (IT Asset Management), fasilitas/infrastruktur kantor, pergudangan (multi-gudang), pelacakan nomor seri (Serial Number), serta mencatat konsumsi barang operasional secara presisi dan real-time.
Aplikasi ini menggunakan teknologi terbaru berbasis Laravel 13, Inertia.js, dan Vue 3 (TypeScript). Desain antarmukanya premium bergaya dashboard Stripe/Linear yang bersih, profesional, serta mendukung Dark Mode dengan skema aksen warna merah.
Banyak perusahaan mengalami kerugian operasional dan administratif akibat tata kelola inventaris yang buruk. InvenGrid dirancang khusus untuk memecahkan 5 masalah kritis berikut:
pending_approval, approved, rejected). Stok tidak akan terpotong dan nomor seri tidak berubah status sebelum mendapat persetujuan admin.GDG-JKT-01) dan SKU secara otomatis berurutan (sequential).receipt, assignment, loan, transfer, repair, disposal, dan lost.Spatie Permission.Untuk menjalankan aplikasi ini, komputer Anda harus terinstal perangkat lunak pendukung berikut. Berikut penjelasan fungsinya untuk pemula:
| Nama Teknologi | Fungsi Sederhana | Versi Minimal |
|---|---|---|
| PHP | Bahasa pemrograman utama server (backend) | ^8.2 (Rekomendasi 8.3 / 8.4) |
| Composer | Alat untuk mengunduh library/paket kode PHP | ^2.2 |
| Node.js & NPM | Runtime & pengelola paket Javascript untuk mengompilasi tampilan frontend | ^18.0 atau ^20.0 |
| Database Engine | Tempat penyimpanan data aplikasi (MySQL/MariaDB/PostgreSQL) | MySQL ^8.0 / MariaDB ^10.4 |
| Docker (Opsional) | Alat untuk membungkus aplikasi agar mudah dijalankan di server tanpa instal PHP secara lokal | v20.10+ |
Pastikan ekstensi berikut telah dicentang/aktif pada konfigurasi PHP Anda (di php.ini atau panel kontrol web server lokal seperti Laragon/XAMPP):
openssl (keamanan enkripsi)pdo_mysql (koneksi database MySQL)mbstring (pemrosesan teks)xml & ctype (pemrosesan dokumen/data)bcmath (perhitungan angka decimal presisi)gd (manipulasi gambar/logo)zip (kompresi berkas)Berikut adalah diagram alur kerja utama di dalam InvenGrid untuk memudahkan pemahaman Anda.
Diagram ini menjelaskan bagaimana stok produk bertambah atau berkurang di gudang beserta pencatatan nomor serinya.
Diagram ini menjelaskan perjalanan logistik barang saat dikirim dari Gudang Asal menuju Gudang Tujuan.
Diagram ini menjelaskan bagaimana pengajuan serah terima aset baru diverifikasi sebelum mempengaruhi persediaan gudang.
Diagram ini menjelaskan siklus hidup peminjaman jangka pendek, notifikasi jatuh tempo dinamis, hingga penanganan kondisi pengembalian.
InvenGrid dibangun menggunakan framework Laravel dengan integrasi Inertia.js & Vue 3. Berikut adalah struktur folder utama yang perlu Anda ketahui:
invengrid/
βββ app/ # π§ LOGIK UTAMA APLIKASI (BACKEND)
β βββ Http/
β β βββ Controllers/ # Menangani logika request data & mengarahkan ke halaman Vue
β β β βββ Auth/ # Logika Login, Register, & Reset Password
β β β βββ ProductController.php # Manajemen Produk & Validasi SKU
β β β βββ TransferOrderController.php # Alur Logistik Transfer Barang
β β β βββ ...
β β βββ Middleware/ # Filter request (keamanan, pengecekan lisensi, RBAC)
β βββ Models/ # Representasi tabel database sebagai objek PHP (Eloquent)
β β βββ Product.php
β β βββ Warehouse.php
β β βββ ...
β βββ Services/ # Logika bisnis modular terpisah (contoh: verifikasi lisensi)
βββ bootstrap/ # Inisialisasi awal framework Laravel
βββ config/ # Kumpulan berkas konfigurasi sistem aplikasi
βββ database/ # ποΈ SKEMA & DATA BASE
β βββ migrations/ # Berkas cetak biru (blueprint) tabel database
β βββ seeders/ # Berkas pengisi data awal (default user & dummy data)
βββ docker/ # Berkas konfigurasi Docker (Nginx, Opcache)
βββ public/ # Direktori publik (tempat berkas CSS/JS hasil compile, gambar, logo)
βββ resources/ # π¨ TAMPILAN USER INTERFACE (FRONTEND)
β βββ css/ # Berkas styling dasar
β βββ js/ # Kode Vue 3 & TypeScript
β βββ Components/ # Komponen UI kecil (button, modal, dropdown) yang reusable
β βββ Layouts/ # Layout utama dashboard (Navbar, Sidebar, Footer)
β βββ Pages/ # Halaman utama aplikasi (Dashboard, Produk, Gudang, dll.)
β βββ types/ # Definisi tipe data TypeScript
βββ routes/ # π£οΈ DAFTAR URL / ALAMAT HALAMAN
β βββ web.php # Mengatur semua alamat URL aplikasi admin
βββ tests/ # File pengujian unit & fitur aplikasi
βββ Dockerfile # Blueprint pembuatan image Docker aplikasi PHP-FPM
βββ docker-compose.prod.yml # Orkestrasi Docker untuk menggabungkan Nginx, PHP, MySQL, Redis
βββ package.json # Daftar dependensi modul Javascript (NPM)
βββ composer.json # Daftar dependensi modul PHP (Composer)
βββ vite.config.js # Konfigurasi compiler Vite untuk mempercepat build frontend
Aplikasi ini menggunakan database relasional. Untuk memvisualisasikan bagaimana tabel-tabel saling berhubungan, berikut adalah diagram Entity-Relationship Diagram (ERD):
users: Menyimpan informasi pengguna terdaftar yang dapat login ke sistem.warehouses: Menyimpan daftar lokasi gudang fisik maupun virtual.products: Menyimpan master data produk (SKU, nama, harga beli, harga jual, tipe tracking).warehouse_product: Tabel pivot/penghubung antara gudang dan produk yang menyimpan stok riil saat ini, stok pengaman (safety stock), dan batas pesan kembali (reorder point).product_serials: Menyimpan data unik nomor seri (Serial Number) untuk produk yang dilacak secara fisik beserta statusnya.stock_mutations: Buku besar log mutasi stok masuk, keluar, penyesuaian (adjustment), maupun transfer order untuk keperluan audit kartu stok.transfer_orders: Dokumen induk transaksi mutasi antar-gudang (menyimpan data tanggal kirim, tanggal terima, status, dan gudang asal/tujuan).transfer_order_items: Detail produk dan kuantitas yang diminta serta yang berhasil diterima dalam dokumen Transfer Order.to_item_serial: Menghubungkan item transfer order dengan nomor seri produk fisik yang sedang dikirim/diterima.settings: Pengaturan profil instansi (logo, nama instansi, kop surat dinamis).licenses: Menyimpan lisensi enkripsi lokal untuk validasi environment produksi.departments: Menyimpan data unit kerja / departemen perusahaan.employees: Menyimpan data karyawan lengkap dengan NIK, nama, kontak, dan departemennya.customers: Menyimpan data klien / pelanggan yang menerima alokasi aset.asset_assignments: Dokumen serah terima aset penugasan kerja (BAST), menyimpan status (pending_approval, assigned, returned, rejected).assignment_items: Detail nomor seri, produk, gudang, dan lokasi penempatan aset yang diserahterimakan dalam penugasan.asset_loans: Dokumen peminjaman jangka pendek, menyimpan status (loaned, returned, overdue), tanggal pinjam, dan batas jatuh tempo.asset_loan_items: Detail barang dan nomor seri unit yang dipinjam, beserta pencatatan kondisi keluar/masuk (Good, Damaged, Lost).asset_histories: Buku besar riwayat nomor seri aset, mencatat kronologi aksi (receipt, assignment, assignment_return, loan, loan_return, transfer, repair, disposal) beserta status awal/akhir dan catatan.Gunakan langkah mudah berikut jika Anda ingin menjalankan aplikasi InvenGrid langsung di sistem operasi Windows Anda.
Jika Anda belum memilikinya, unduh dan instal aplikasi berikut:
Buka terminal/command prompt pilihan Anda (misalnya: Git Bash atau PowerShell) lalu jalankan perintah berikut secara berurutan:
git clone <repository-url> invengrid
cd invengrid
Salin berkas template pengaturan sistem:
# Menggunakan Git Bash / PowerShell:
cp .env.example .env
# Menggunakan Windows Command Prompt (CMD) biasa:
copy .env.example .env
.envBuka file .env yang baru dibuat menggunakan Notepad atau VS Code. Cari bagian konfigurasi database dan sesuaikan dengan database lokal Anda (biasanya bawaan Laragon/XAMPP adalah username root tanpa password):
DB_C
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=invengrid
DB_USERNAME=root
DB_PASSWORD=
[!NOTE]
Buatlah database baru di MySQL dengan namainvengridmenggunakan tool database Anda (misalnya mengakseshttp://localhost/phpmyadmindi browser atau melalui HeidiSQL).
Jalankan perintah berikut untuk mengunduh modul-modul yang dibutuhkan aplikasi:
# Mengunduh library backend PHP
composer install
# Mengunduh library frontend Javascript/Typescript
npm install
php artisan key:generate
Silakan pilih salah satu opsi pengisian database berikut:
php artisan migrate:fresh
php artisan db:seed --class=MasterSeeder
php artisan migrate:fresh --seed
Untuk melihat aplikasi berjalan, Anda perlu menjalankan dua terminal sekaligus:
php artisan serve
npm run dev
Buka browser Anda dan akses alamat: http://127.0.0.1:8000. Anda akan diarahkan ke halaman login dashboard.
Aplikasi ini sudah dilengkapi dengan hak akses pengguna dinamis (RBAC). Anda dapat masuk menggunakan akun demo di bawah ini untuk mencoba perbedaan peran masing-masing akun:
| Peran (Role) | Email Login | Password | Hak Akses Utama |
|---|---|---|---|
| Super Admin | superadmin@example.com | password | Akses penuh tanpa batas (Manajemen User, Pengaturan Instansi, Edit Menu, RBAC). |
| Warehouse Manager | manager@example.com | password | Mengelola data produk, mengelola gudang, menyetujui logistik transfer order, melihat log audit. |
| Warehouse Staff | staff@example.com | password | Memproses transaksi stock out, membuat usulan transfer order, melihat laporan stok gudang. |
Docker mempermudah Anda untuk mempublikasikan (deploy) aplikasi ini ke server cloud (misalnya VPS Ubuntu) tanpa harus menginstal PHP, MySQL, Redis, atau Nginx satu per satu secara manual di server.
Sistem Docker Compose di proyek ini akan otomatis membuat 4 kontainer terisolasi yang saling terhubung:
invengrid-app (PHP 8.4-FPM): Kontainer backend utama yang memproses kode Laravel.invengrid-webserver (Nginx Alpine): Web server terdepan untuk melayani request HTTP dan menyajikan file aset statis (CSS/JS).invengrid-mysql (MySQL 8.4): Basis data internal yang terisolasi dari jaringan luar untuk keamanan maksimal.invengrid-redis (Redis Alpine): Digunakan untuk sistem caching cepat dan antrian (queue) tugas latar belakang Laravel.Pastikan server Anda sudah terpasang Git dan Docker Engine. Jika menggunakan Ubuntu, Anda bisa menginstalnya dengan cepat melalui perintah:
sudo apt update
sudo apt install -y git curl
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker
git clone <repository-url> /var/www/invengrid
cd /var/www/invengrid
Salin template .env:
cp .env.example .env
nano .env
Sesuaikan konfigurasi berikut agar aman di server produksi:
APP_NAME=InvenGrid
APP_ENV=production
APP_DEBUG=false
APP_URL=https://nama-domain-anda.com
# Konfigurasi Database Internal Container (Sesuaikan password Anda)
DB_C
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=invengrid
DB_USERNAME=invengrid_user
DB_PASSWORD=buat_password_aman_disini
# Konfigurasi Cache & Queue
REDIS_HOST=redis
REDIS_PORT=6379
Jalankan perintah ini untuk mendownload base image, mengompilasi aset Vue/Vite, menginstal dependensi Composer, dan mengaktifkan kontainer di latar belakang secara otomatis:
docker compose -f docker-compose.prod.yml up -d --build
Karena Laravel berjalan di dalam kontainer Docker, kita harus menjalankan perintah internal Laravel dengan cara "masuk" atau mengirim perintah ke kontainer app:
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 --class=MasterSeeder --force
docker compose -f docker-compose.prod.yml exec app php artisan storage:link
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
Aplikasi InvenGrid dilengkapi dengan modul pelindung verifikasi lisensi lokal terenkripsi untuk mencegah penyalahgunaan source code di server produksi tanpa seizin developer.
localhost, 127.0.0.1, [::1]..test atau .local..env Anda berisi APP_ENV=local.192.168.*, 10.*, 172.16-31.*)..env Anda berisi APP_ENV=demo, aplikasi akan otomatis membypass pemeriksaan lisensi. Namun, sistem akan mengaktifkan Mode Demo secara penuh:
APP_ENV=production, sistem akan mendeteksi domain tersebut dan langsung mengunci halaman admin. Anda akan diarahkan ke halaman Aktivasi Lisensi untuk mengaktifkannya menggunakan lisensi resmi.RL-XXXX-XXXX-XXXX-XXXX).[!WARNING]
PENTING: JANGAN MENGUBAH APP_KEY SETELAH LISENSI AKTIF!
Kunci enkripsi lisensi diikat menggunakanAPP_KEYyang berada di file.envserver Anda.
Jika Anda tidak sengaja menjalankan perintahphp artisan key:generatesetelah lisensi aktif, tanda tangan digital lisensi Anda akan rusak dan aplikasi akan terkunci kembali.
Berikut adalah ringkasan perintah penting yang berguna bagi pengelola server untuk mengelola kontainer Docker:
docker compose -f docker-compose.prod.yml logs -f --tail=100
docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml down
git pull origin main
docker compose -f docker-compose.prod.yml up -d --build
docker compose -f docker-compose.prod.yml exec app php artisan migrate --force
docker compose -f docker-compose.prod.yml exec app php artisan config:cache
Developed with β€οΈ by Radhcloud Development Team. Copyright Β© 2026. All rights reserved.


Smart Restaurant & Cafe POS with Recipe BOM Stock Management