303 lines
7.0 KiB
Markdown
303 lines
7.0 KiB
Markdown
# 💎 Aplikasi Kasir Toko Perhiasan
|
||
|
||
Aplikasi kasir modern berbasis web untuk toko perhiasan dengan sistem manajemen yang lengkap dan antarmuka yang user-friendly. Dibuat khusus sesuai kebutuhan Toko Emas Jakarta Citayam.
|
||
|
||
## 👥 Tim Development
|
||
|
||
**PT Teknologi Mulia Sejahtera Cemerlang (Abbauf Tech) - Internship Program**
|
||
|
||
- **Baghaztra Van Ril** - Backend Developer
|
||
- **Aditya Ahmad Afarison** - Frontend Developer
|
||
- **Timotius Julius Iwan** - Backend Developer
|
||
- **Dhilan Radya Irawan** - Frontend Developer
|
||
|
||
---
|
||
|
||
## 🚀 Tentang Aplikasi
|
||
|
||
Semuah sistem Point of Sale (POS) yang dirancang khusus untuk kebutuhan toko perhiasan dengan fitur manajemen yang komprehensif dan sistem role-based access control.
|
||
|
||
### ✨ Fitur Utama
|
||
|
||
#### 👑 Role Owner
|
||
|
||
- **Manajemen Produk** - CRUD produk perhiasan lengkap dengan detail
|
||
- **Manajemen Nampan** - Organisasi produk berdasarkan nampan display
|
||
- **Manajemen Brankas** - Sistem penyimpanan produk berharga
|
||
- **Manajemen Sales** - Kelola data karyawan dan sales performance
|
||
- **Kasir** - Akses penuh ke sistem transaksi
|
||
- **Laporan** - Dashboard analytics dan laporan keuangan
|
||
- **Manajemen Akun** - User management dan pengaturan sistem
|
||
|
||
#### 💼 Role Kasir
|
||
|
||
- **Lihat Produk** - View-only access ke database produk
|
||
- **Kasir** - Interface transaksi untuk penjualan
|
||
|
||
### 🛠️ Tech Stack
|
||
|
||
- **Backend**: Laravel 11.x
|
||
- **Frontend**: Vue.js 3 + Vue Router
|
||
- **Database**: MySQL
|
||
- **Styling**: Tailwind CSS
|
||
- **Build Tool**: Vite
|
||
- **Authentication**: Laravel Sanctum
|
||
- **HTTP Client**: Axios
|
||
|
||
---
|
||
|
||
## 📋 Prerequisites
|
||
|
||
### Opsi 1: Docker (Recommended) 🐳
|
||
|
||
- **Docker Desktop** (Windows/Mac) atau **Docker Engine** (Linux)
|
||
- **Docker Compose** v2.0+
|
||
- **Git**
|
||
|
||
### Opsi 2: Manual Installation
|
||
|
||
- **PHP** 8.2+
|
||
- **Composer**
|
||
- **Node.js** 18+
|
||
- **NPM**
|
||
- **MySQL** 8.0+
|
||
- **Redis** (optional)
|
||
- **Git**
|
||
|
||
---
|
||
|
||
## <20> Docker Installation (Recommended)
|
||
|
||
### Quick Start dengan Docker
|
||
|
||
```bash
|
||
# 1. Clone repository
|
||
git clone https://git.abbauf.com/Magang-2025/Kasir.git
|
||
cd Kasir
|
||
|
||
# 2. Setup environment
|
||
copy .env.docker .env # Windows
|
||
# atau
|
||
cp .env.docker .env # Linux/Mac
|
||
|
||
# 3. Edit .env (PENTING: ganti password!)
|
||
notepad .env # Windows
|
||
nano .env # Linux/Mac
|
||
|
||
# 4. Deploy dengan satu command
|
||
docker-deploy.bat # Windows
|
||
# atau
|
||
./docker-deploy.sh # Linux/Mac
|
||
|
||
# 5. Akses aplikasi
|
||
# http://localhost
|
||
```
|
||
|
||
**Dokumentasi Docker Lengkap:**
|
||
- 📖 Quick Start: [README-DOCKER.md](README-DOCKER.md)
|
||
- 📚 Full Guide: [DOCKER-DEPLOYMENT.md](DOCKER-DEPLOYMENT.md)
|
||
- 📋 Checklist: [DEPLOYMENT-CHECKLIST.md](DEPLOYMENT-CHECKLIST.md)
|
||
- 🎯 Quick Reference: [QUICK-REFERENCE.txt](QUICK-REFERENCE.txt)
|
||
|
||
**Management Commands:**
|
||
```bash
|
||
docker-helper.bat status # Cek status containers
|
||
docker-helper.bat logs # Lihat logs
|
||
docker-helper.bat backup # Backup database
|
||
docker-helper.bat restart # Restart containers
|
||
```
|
||
|
||
---
|
||
|
||
## <20>🔧 Manual Installation
|
||
|
||
### 1. Clone Repository
|
||
|
||
```bash
|
||
git clone https://git.abbauf.com/Magang-2025/Kasir.git
|
||
cd Kasir
|
||
```
|
||
|
||
### 2. Install Dependencies Backend
|
||
|
||
```bash
|
||
# Install PHP dependencies
|
||
composer install
|
||
|
||
# Copy environment file
|
||
cp .env.example .env
|
||
|
||
# Generate application key
|
||
php artisan key:generate
|
||
```
|
||
|
||
### 3. Install Dependencies Frontend
|
||
|
||
```bash
|
||
# Install Node.js dependencies
|
||
npm install
|
||
```
|
||
|
||
### 4. Konfigurasi Database
|
||
|
||
Edit file `.env` sesuai dengan konfigurasi database:
|
||
|
||
```env
|
||
DB_CONNECTION=mysql
|
||
DB_HOST=127.0.0.1
|
||
DB_PORT=3306
|
||
DB_DATABASE=toko_emas
|
||
DB_USERNAME=root
|
||
DB_PASSWORD=
|
||
```
|
||
|
||
---
|
||
|
||
### 5. Setup Database
|
||
|
||
```bash
|
||
php artisan migrate
|
||
```
|
||
|
||
```bash
|
||
php artisan db:seed
|
||
```
|
||
|
||
### 6. Storage Link
|
||
|
||
```bash
|
||
php artisan storage:link
|
||
```
|
||
|
||
### 7. Jalankan Aplikasi
|
||
|
||
#### Development Mode
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
#### Production Mode
|
||
|
||
```bash
|
||
# Build untuk production
|
||
npm run build
|
||
|
||
# Jalankan dengan web server (Apache/Nginx)
|
||
# atau gunakan PHP built-in server
|
||
php artisan serve --host=0.0.0.0 --port=8000
|
||
```
|
||
|
||
### 8. Print Label
|
||
|
||
- Install driver, ada pada folder `./driver/` untuk windows 64bit.
|
||
- Pilih `NIIMBOT B3S_P` pada saat install driver.
|
||
- Sambungkan printer ke komputer via USB.
|
||
- Nyalakan printer.
|
||
- Temukan kode qr yang akan diprint (misalnya pada halaman brankas)
|
||
- Klik tombol print pada halaman tersebut
|
||
- Pilih printer `NIIMBOT B3S_P` dan atur kertas ke ukuran kertas `40mm x 30mm`, margin `Default`, scale `Default`
|
||
- Klik print
|
||
|
||
---
|
||
|
||
## 🌐 Akses Aplikasi
|
||
|
||
Setelah instalasi berhasil, akses aplikasi melalui:
|
||
|
||
- **URL**: http://localhost:8000
|
||
- **Admin Panel**: http://localhost:8000/admin (jika tersedia)
|
||
|
||
### 👤 Default Login
|
||
|
||
**Owner Account:**
|
||
|
||
- Email: `owner@tokoperhiasan.com`
|
||
- Password: `password123`
|
||
|
||
**Kasir Account:**
|
||
|
||
- Email: `kasir@tokoperhiasan.com`
|
||
- Password: `password123`
|
||
|
||
---
|
||
|
||
## 📁 Struktur Folder
|
||
|
||
```
|
||
kasir-toko-perhiasan/
|
||
├── app/
|
||
│ ├── Http/Controllers/ # API Controllers
|
||
│ └── Models/ # Database Models
|
||
├── database/
|
||
│ ├── migrations/ # Database Migrations
|
||
│ ├── seeders/ # Data Seeders
|
||
│ └── factories/ # Model Factories
|
||
├── public/ # Public Files
|
||
├── resources/
|
||
│ ├── css/
|
||
│ │ └── app.css # Main CSS File
|
||
│ ├── js/
|
||
│ │ ├── components/ # Reusable Vue Components
|
||
│ │ ├── pages/ # Vue Pages
|
||
│ │ ├── router/ # Vue Routes
|
||
│ │ ├── services/ # API Services
|
||
│ │ └── App.vue
|
||
│ └── views/
|
||
│ └── app.blade.php # Main SPA Template
|
||
└── routes/
|
||
└── web.php # Laravel Routes
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Fitur Database (Revisi)
|
||
|
||
### Tabel Utama
|
||
|
||
- **akun** → Data pengguna (owner, kasir)
|
||
- **produk** → Master data produk perhiasan
|
||
- **foto** → Kumpulan foto untuk tiap produk
|
||
- **nampan** → Organisasi tempat penyimpanan produk (display)
|
||
- **item** → Stok unit fisik dari produk (bisa ada banyak untuk 1 produk)
|
||
- **transaksi** → Data transaksi penjualan
|
||
- **item_transaksi** → Detail item yang dijual per transaksi
|
||
- **sales** → Data marketing/sales yang membawa pelanggan
|
||
|
||
_(catatan: “brankas” nggak perlu tabel khusus, karena sudah diwakili `item.id_nampan = null`)_
|
||
|
||
### Relationships
|
||
|
||
```php
|
||
// Produk bisa punya banyak foto
|
||
Produk -> hasMany -> Foto
|
||
|
||
// Produk bisa punya banyak item fisik
|
||
Produk -> hasMany -> Item
|
||
|
||
// Item bisa ada di satu nampan, atau null (brankas)
|
||
Item -> belongsTo -> Nampan
|
||
|
||
// Transaksi dicatat oleh satu kasir
|
||
Transaksi -> belongsTo -> Akun (kasir)
|
||
|
||
// Transaksi bisa melibatkan 0/1 sales
|
||
Transaksi -> belongsTo -> Sales
|
||
|
||
// Transaksi punya banyak item_transaksi
|
||
Transaksi -> hasMany -> ItemTransaksi
|
||
|
||
// Item_transaksi menghubungkan 1 transaksi dengan 1 item
|
||
ItemTransaksi -> belongsTo -> Item
|
||
```
|
||
|
||
---
|
||
|
||
## 📄 License
|
||
|
||
Lisensi dan kepemilikan atascource code adalah milik PT Teknologi Mulia Sejahtera Cemerlang.
|
||
|
||
---
|
||
|
||
_Tim Internship TMSC 2025_
|